new input type for transition tool #6575
Replies: 4 comments 2 replies
-
@AskAlexSharov Hi. What do you think? |
Beta Was this translation helpful? Give feedback.
-
Hi.
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
True. ErigonV2 already did move some historical data (with enrich and indexing) to Bittorrent protocol. ErigonV3 does move more such data (with more enrichment and indexing) to Bittorent protocol. It can be proofed (by state root, and other hashes). ErigonV4 will move history of commitments (proofs) there also. We don't plan to introduce new protocol for history, but may adopt something from "Vitalik" in future. |
Beta Was this translation helpful? Give feedback.
-
Hello, We at CovalentHQ are developing an indexing solution which ultimately provides REST APIs to read blockchain data. We do this by processing blockchain data, indexing and enriching it, which can be consumed by developers. It's an infra project aimed at providing efficient read access of blockchain data. We’re now looking to progressively decentralize our solution.
As a part of this, we came up with a block data read format called a block specimen which can be defined as "all the data needed by the evm to (re)execute any given block" -- this also includes reads off of storage like SLOAD. This allows us to perform “EVM execution of an arbitrary ethereum block” using just the block specimen binary file, without the need for state storing databases.
Once the block specimen has been created, our decentralized network doesn't have to rely on ethereum nodes, as all data needed to execute the block is captured by the block specimen. The process makes sure that the block specimen data isn’t compromised by multi party cryptographic signing process on the hash of the result in a given time frame.
Resulting block specimens can be run through a data (transformation) pipeline which includes a stateless evm tool (for getting receipts and logs), tracing and annotating, proofing the data etc. It separates out the data storage layer from the block execution and distributed consensus functionality. Here is a sample block specimen json. Here is the block specimen whitepaper for more info.
For the Covalent network, we plan to create a marketplace for such block specimens, wherein the operators that create them (the “block specimen producers” run ethereum nodes with block-specimen-producing patch on top) power the supply side, whereas the refiners/indexers etc. compose the demand side. This part will be crucial in creating a decentralized indexing solution, allowing token holders and developers to engage with the network on their own terms, in new ways.
Our team has worked on importing the evm transition tool from geth (go-ethereum) to erigon (previously turbo-geth). We also have a patch in our fork (covalenthq/erigon), which allows the transition tool (t8n) to accept directly block specimens binary files as inputs, and we thereby make a case for merging this patch into upstream erigon.
Simplifying the input of evm t8n tool
Let's start with the evm t8n tool. The tool currently takes prestate with multiple inputs for example account balances, previous blockhashes, set of txs, mining rewards etc. and outputs a "post state" which has state root, receipts, state dump etc.
Using block specimen here consolidates all the input information into a single input. We can also have as input an entire arbitrary block, and see how the block execution engine behaves while executing that block. It’s a great way to test the execution of an ethereum block, as block specimen is essentially a canonical representation of a block in the EVM ecosystem favoring read operations. It opens up a more simple and concise way of using the transition tool.
block specimen is more comprehensive than current input set
block specimens are more comprehensive than what the current tool input (prestate, set of txs, mining rewards etc.) can capture. One such example is solidity contract state reads. This, similar to the above point, expands the transition tools capabilities.
We’re currently using this block-specimen-accepting transition tool in our network. If you wanna have a look at what the changes look like, check here.
Let us know if the proposal sounds good, or if you have any other concerns. We would love to discuss this with you.
Beta Was this translation helpful? Give feedback.
All reactions