-
Notifications
You must be signed in to change notification settings - Fork 255
[EPIC] Execution API #1802
Copy link
Copy link
Closed
Description
Rollkit currently supports ABCI 2.0 (execution.go) for execution. This work will expand rollkit to support different execution engines by defining a common execution interface (via go-execution) which can be implemented by different execution engines such as ABCI (go-execution-abci), EVM (go-execution-evm), etc.
Details:
- The execution interface (go-execution) can support GRPC (similar to go-sequencing and go-da)
- The interface itself can be inspired by other works such as astria's execution api, omni's octane, berachain's beaconkit, and many more.
- The exact methods in the interface still needs to be determined. But, astria's reference is here.
Tasks
- Create go-execution repo with ABCI 2.0 methods as interface to begin with.
- Add grpc proxy and dummy execution implementation along with tests go-execution repo
- Create go-execution-abci and refactor code from rollkit's execution.go to this repo
- Refactor rollkit to use go-execution interface and go-execution-abci implementation via grpc endpoint
- https://github.com/gupadhyaya/go-execution-evm
Execution API
go-execution
- Define Go interface go-execution#10
- Write comprehensive go-doc go-execution#11
- Create gRPC proxy client and server implementation go-execution#12
- Define sentinel errors go-execution#17
- Remove JSON-RPC proxy go-execution#34
Testing
- Create mock using mockery go-execution#13
- Create dummy implmementation of Execution API go-execution#14
- Create reusable test suite go-execution#15
- Improve dummy implementation go-execution#24
- Use contexts with timeouts in tests go-execution#33
go-execution-evm
- Create/move repository
- Setup repository
- Establish EVM connection using engine API go-execution-evm#1
- Create empty implementation of go-execution API go-execution-evm#2
- Implement
InitChainmethod go-execution-evm#3 - Implement
GetTxsmethod go-execution-evm#4 - Implement
ExecuteTxsmethod go-execution-evm#5 - Implement
SetFinalmethod go-execution-evm#6 - Create binary go-execution-evm#12
- refactor: move eth and engine client
Dialto start method go-execution-evm#17
Testing
- Setup automated testing go-execution-evm#7
- Run reusable test suite from go-execution go-execution-evm#8
- Implementation-specific unit tests go-execution-evm#9
- test: generate JWT token in tests go-execution-evm#15
- ci: resolve docker client/server compatibility issue go-execution-evm#18
go-execution-cosmos-sdk
- Implement
InitChain - Implement
GetTxs- Re-import latest ABCI mempool implementation from cometbft
- Implement
ExecuteTxs - Implement
SetFinal - Implement cometbft APIs
- Identify what has to be exposed from rollkit via RPC
Testing
- Setup automated testing
- Run reusable test suite from
go-execution - Implementation-specific unit tests
rollkit
- Refactor
Nodeinterface #1896 - Clean up
FullNode#1897 - Remove
FullClient#1898 - Clean up
LightNode#1899 - Remove
LightClient#1900 - Cleanup
Store#1901 - Refactor or rewrite
block.Manager#1902 - Implement equivalent of
BaseService#1903 - Remove
mempool#1904 - Remove existing RPCs #1905
- Cleanup
configpackage #1906 - Cleanup
protodirectory #1907 - [EPIC] Remove cometbft dependencies #1125
- Update run node command #1908
- New genesis handling #1909
- docs: Create ADR describing Execution API #1931
Testing
- Figure out: re-use vs re-write integration tests
The list above may get outdated; please check the Exec API project board for reference.
Reactions are currently unavailable