-
Notifications
You must be signed in to change notification settings - Fork 29
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
chore: modify verifier to not require eth archive node #241
base: main
Are you sure you want to change the base?
chore: modify verifier to not require eth archive node #241
Conversation
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.
…ization This removes the need for running with an eth archive node.
@@ -121,6 +121,9 @@ The following specs are recommended for running on a single production server: | |||
* 4 GB RAM | |||
* 1-2 cores CPU | |||
|
|||
### Ethereum Node Requirements | |||
The cert verification logic inside proxy used to require an archive node to fetch quorum information at reference block numbers in the past. We have removed this requirement by making the quorum parameters immutable in the EigenDAServiceManager contract. This means that a normal Ethereum node can now be used to run the proxy. See https://github.com/Layr-Labs/eigenda-proxy/issues/230 for more details. |
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.
This summary feels like something better encapsulated in release notes and within our README
// returns an error if some problem calling the contract happens, or the hash is not found. | ||
// We make an eth_call to the EigenDAServiceManager at the given blockNumber to retrieve the hash. | ||
// Therefore, make sure that blockNumber is <128 blocks behind the latest block, to avoid requiring an archive node. | ||
// This is currently enforced by having EthConfirmationDepth be <64. |
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.
Should we poll the latest block number and ensure it's greater than the confirmation block number?
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.e, do we care about the case where the RPC node is far behind?
// ethConfirmationDepth is using to verify that a blob's batch has been bridged to the EigenDAServiceManager contract at least | ||
// this many blocks in the past. To do so we make an eth_call to the contract at the current block_number - ethConfirmationDepth. | ||
// Hence in order to not require an archive node, this value should be kept low. We force it to be < 64. | ||
// waitForFinalization should be used instead of ethConfirmationDepth if the user wants to wait for finality (typically 64 blocks in happy case). |
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.
// ethConfirmationDepth is using to verify that a blob's batch has been bridged to the EigenDAServiceManager contract at least | |
// this many blocks in the past. To do so we make an eth_call to the contract at the current block_number - ethConfirmationDepth. | |
// Hence in order to not require an archive node, this value should be kept low. We force it to be < 64. | |
// waitForFinalization should be used instead of ethConfirmationDepth if the user wants to wait for finality (typically 64 blocks in happy case). | |
// ethConfirmationDepth is used to verify that a blob's batch commitment has been bridged to the EigenDAServiceManager contract at least | |
// this many blocks in the past. To do so we make an eth_call to the contract at the current block_number - ethConfirmationDepth. | |
// Hence in order to not require an archive node, this value should be kept low. We force it to be < 64. | |
// waitForFinalization should be used instead of ethConfirmationDepth if the user wants to wait for finality (typically 64 blocks in happy case). |
// returns an error if some problem calling the contract happens, or the hash is not found. | ||
// We make an eth_call to the EigenDAServiceManager at the given blockNumber to retrieve the hash. | ||
// Therefore, make sure that blockNumber is <128 blocks behind the latest block, to avoid requiring an archive node. | ||
// This is currently enforced by having EthConfirmationDepth be <64. |
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.e, do we care about the case where the RPC node is far behind?
Fixes Issue
Fixes #230
Changes proposed
Contains 2 main changes needed to remove archive node requirements:
Also updated the README with this information in cc3538f
Copying the comment on the
getQuorumParametersAtLatestBlock
function here to highlight the solution proposed in this PR:Screenshots (Optional)
Note to reviewers
Leaving as DRAFT until we discuss whether this approach is fine, especially regarding immutability of the quorum parameters in our contracts.