Open
Description
Pending activities on Kontrol's VM module. Updated on 15/07/2024.
The implementation of Kontrol's JSON RPC server is done mostly in the src/kontrol/rpc.py
and src/kontrol/kdist/vm.md
modules. Within them, the following should be handled:
- If a transaction fails to be correctly executed in KEVM, we should gracefully handle it and reply with the proper information to the client. Right now, if a rewriting operation fails, the function call crashes, and an empty reply is sent back to the client.
- If a transaction fails to be correctly executed in KEVM, we should clean the K cell and ensure that the model has not been affected by the operations that have been performed by the failed transaction. The following transactions should not be affected.
- Properly extract the values of the
<blockStorage>
map. This was being developed in the_get_all_block_storage_dict
function in therpc.py
module. This is necessary to achieve the following:- In the
eth_getTransactionReceipt
reply, we're only returning the txn status, id, block number, to address, transaction hash, and from address. This is roughly half of what is needed to implement this end point. More information here: https://www.quicknode.com/docs/ethereum/eth_getTransactionReceipt - In the
eth_getTransactionByHash
reply, we're missing theblockHash
andtransactionIndex
fields. - All data in this map cell should be needed to complete the
eth_getBlockByNumber
operation. It's current implementation doesn't work. - When fetching the account balance with
eth_getBalance
, we can only fetch the balance of the account in its latest state. The data within theblockStorage
cell should provide us with what we need for providing the correct values.
- In the
By completing the above, we should be able to run the sample scenarios for Simbolik.
More information about the requests and parameters handled by an Ethereum JSON RPC node: