Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Initial V2 E2E Prototype #260

Open
wants to merge 16 commits into
base: eigenda_v2
Choose a base branch
from

Conversation

ethenotethan
Copy link
Collaborator

@ethenotethan ethenotethan commented Jan 24, 2025

@ethenotethan ethenotethan changed the base branch from main to eigenda_v2 January 30, 2025 01:52
* fix(#251): better error logging for RPC lookup errors against service manager (#254)

* chore: modify verifier to not require eth archive node (#241)

* chore: force verifier's EthConfirmationDepth to be <64

We panic in the flag's action, as well as in the verifier's constructor when this condition is not respected.

This will make sure that an archival node is not required.

* chore: modify verifier to load quorum parameters only once at initialization

This removes the need for running with an eth archive node.

* style: fix minor lint issue

* docs: update README to mention that archival node is no longer needed

* docs: clean-up README archival node requirement explanation

* docs: fix verify/cert.go comment typo

Co-authored-by: Ethen <[email protected]>

* docs: for eg -> e.g.

* style(cert): remove unecessary bound checks from inside loop

* style: create consts package with EthHappyPathFinalizationDepthBlocks = 64

* style: change panic into error return

* docs: change op reference for eth reference

* docs: make flag comment simpler

* Update verify/cert.go

Co-authored-by: EthenNotEthan <[email protected]>

---------

Co-authored-by: Ethen <[email protected]>

* docs: pimp out readme with blob lifecycle diagrams (#233)

* chore: move pull_request_template.md under .github/ dir

* docs: reorder README sections to feel more natural (move flags to bottom)

* docs (wip): add blob lifecycle diagrams to README

* docs: remove Sidecar from README title (proxy is not necessarily a side)

* docs: add blob lifecycle section to README

* docs: add TOC to README

* style(routing): rename raw_commitment -> payload

We changed the name in README so should be consistent in the code

* docs: update README sections to use Payload instead of Blob

Posting Blobs -> Posting Payloads
Retrieving Blobs -> Retrieving Payloads

* docs: remove "obviously" word

* Required quorums glitch (#255)

* Avoid quorum 1 check on range of Holesky blocks

* Improve SVC address check

* Update verify/verifier.go

Co-authored-by: Samuel Laferriere <[email protected]>

* Update verify/verifier.go

Co-authored-by: Samuel Laferriere <[email protected]>

* Avoid unnecessary cast

* Rename constant

* Fix lint

---------

Co-authored-by: Samuel Laferriere <[email protected]>

* docs: update README posting payload image (#256)

* fix: remove last eth_call that required archive node (#259)

Forgot this one in #241

* docs: update SECURITY.md with audit commit + fix small typos (#263)

* docs: update SECURITY.md

* docs: update SECURITY.md with audited release number + release where findings were addressed

* feat: EigenDAV2 commitment processing and generation

* feat: EigenDAV2 commitment processing and generation - add note describing follow up todo

---------

Co-authored-by: Samuel Laferriere <[email protected]>
Co-authored-by: Gaston Ponti <[email protected]>
@ethenotethan ethenotethan changed the title feat: Initial V2 scaffolds feat: Initial V2 E2E Prototype Jan 30, 2025
@ethenotethan ethenotethan changed the base branch from eigenda_v2 to main January 30, 2025 05:28
@ethenotethan ethenotethan marked this pull request as ready for review February 6, 2025 19:05
@ethenotethan ethenotethan changed the base branch from main to eigenda_v2 February 6, 2025 19:07
@ethenotethan ethenotethan requested review from samlaf and litt3 February 6, 2025 19:08
Copy link
Collaborator

@samlaf samlaf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FIrst pass. Still need to review load_store and eigenda_v2 code

Comment on lines +13 to +16
"ENV_PATH": "../../.env",
"EIGENDA_PROXY_EIGENDA_CERT_VERIFICATION_DISABLED": "true",
"EIGENDA_PROXY_EIGENDA_TARGET_KZG_G1_PATH": "../../resources/g1.point",
"EIGENDA_PROXY_EIGENDA_TARGET_KZG_G2_POWER_OF_2_PATH": "../../resources/g2.point.powerOf2"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why ../..? Which folder is this being run from?

Comment on lines +23 to +33
EdaV1ClientConfig clients.EigenDAClientConfig
MemstoreConfig memstore.Config
StorageConfig store.Config
VerifierConfig verify.Config
PutRetries uint

MemstoreEnabled bool

EigenDAV2Enabled bool
V2DispersalConfig clients_v2.PayloadDisperserConfig
V2RetrievalConfig clients_v2.RelayPayloadRetrieverConfig
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you clean up this config a bit?
Like put all the memstore fields together.
Make the eigenda v1 and v2 close to each other.
etc

MemstoreConfig memstore.Config
StorageConfig store.Config
VerifierConfig verify.Config
PutRetries uint
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a comment here? Why is this a standalone config and not part of the other configs?

Comment on lines +64 to +70
// &cli.StringFlag{
// Name: G2PathFlagName,
// Usage: "Directory path to g2.point file.",
// EnvVars: []string{withEnvPrefix(envPrefix, "TARGET_KZG_G2_PATH")},
// Value: "resources/g2.point",
// Category: category,
// },
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why comment this out?

// we use a relative path so that the path works for both the binary and the docker container
// aka we assume the binary is run from root dir, and that the resources/ dir is copied into the working dir of the container
Name: G1PathFlagName,
Usage: "Directory path to g1.point file.",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Usage: "Directory path to g1.point file.",
Usage: "Path to g1.point file.",

// dependencies migrate to using EigenDA V2 network
V2Enabled = withFlagPrefix("v2-enabled")

// disperser specific flags (interoperable && mutex for (v1 && v2))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does "interoperable && mutex" mean?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think v1 and v2 should have completely independent flags. possibly one might want to set a different confirmation timeout for v1 and v2 (which makes sense given that there's no bridging on v2 for eg)

@@ -163,10 +181,96 @@ func CLIFlags(envPrefix, category string) []cli.Flag {
EnvVars: []string{withEnvPrefix(envPrefix, "PUT_RETRIES")},
Category: category,
},
},
v2Flags(envPrefix, category)...,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

think we should use a separate v2 category

},
&cli.DurationFlag{
Name: RelayTimeoutName,
Usage: "Timeout used when querying a relay for blob contents.",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Usage: "Timeout used when querying a relay for blob contents.",
Usage: "Timeout used when querying a relay for blobs.",

&cli.DurationFlag{
Name: ContractCallTimeoutName,
Usage: "Timeout used when performing smart contract eth_calls",
EnvVars: []string{withEnvPrefix(envPrefix, "CONTRACT_CALL_TIMEOUT")},
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the only contract call verifyCertDAV2?

},
&cli.UintFlag{
Name: BlobVersionName,
Usage: "Blob version used when dispersing. Currently only supports (0)",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is a blob version? Is this the encoding version?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants