-
Notifications
You must be signed in to change notification settings - Fork 34
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
base: eigenda_v2
Are you sure you want to change the base?
Conversation
* 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]>
…sk--feat-init-v2-scaffolds
…bs/eigenda-proxy into epociask--feat-init-v2-scaffolds
…g with G2 point ingestion
…sk--feat-init-v2-scaffolds
There was a problem hiding this 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
"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" |
There was a problem hiding this comment.
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?
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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?
// &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, | ||
// }, |
There was a problem hiding this comment.
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.", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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)) |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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)..., |
There was a problem hiding this comment.
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.", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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")}, |
There was a problem hiding this comment.
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)", |
There was a problem hiding this comment.
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?
Fixes Issue
Changes proposed
Introduces a working MVP for integration with EigenDA V2.
Known Issues
blob already exists
error #278Screenshots (Optional)
Note to reviewers