diff --git a/.gitmodules b/.gitmodules index fb645bc65..f7dc7edbc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,7 +44,7 @@ path = vendor/nim-web3 url = https://github.com/status-im/nim-web3.git ignore = untracked - branch = feat/eip-6493 + branch = feat/fusaka-light [submodule "vendor/nim-nat-traversal"] path = vendor/nim-nat-traversal url = https://github.com/status-im/nim-nat-traversal.git diff --git a/beacon_chain/el/engine_api_conversions.nim b/beacon_chain/el/engine_api_conversions.nim index 40ac311ea..2fc74d03d 100644 --- a/beacon_chain/el/engine_api_conversions.nim +++ b/beacon_chain/el/engine_api_conversions.nim @@ -150,9 +150,9 @@ func asConsensusType*(payload: engine_api.GetPayloadV3Response): func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4): electra.ExecutionPayload = template getTransaction( - tt: engine_api_types.Transaction): electra.Eip6493Transaction = - electra.Eip6493Transaction( - payload: Eip6493TransactionPayload( + tt: engine_api_types.Transaction): electra.Eip6404Transaction = + electra.Eip6404Transaction( + payload: Eip6404TransactionPayload( `type`: if tt.payload.`type`.isSome: Opt.some(tt.payload.`type`.get.uint64.uint8) @@ -170,7 +170,7 @@ func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4): Opt.none(uint64), max_fees_per_gas: if tt.payload.maxFeesPerGas.isSome: - Opt.some(Eip6493FeesPerGas( + Opt.some(Eip6404FeesPerGas( regular: if tt.payload.maxFeesPerGas.get.regular.isSome: Opt.some(tt.payload.maxFeesPerGas.get.regular.get) @@ -182,7 +182,7 @@ func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4): else: Opt.none(Uint256))) else: - Opt.none(Eip6493FeesPerGas), + Opt.none(Eip6404FeesPerGas), gas: if tt.payload.gas.isSome: Opt.some(tt.payload.gas.get.uint64) @@ -206,19 +206,19 @@ func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4): Opt.none(List[byte, Limit MAX_CALLDATA_SIZE]), access_list: if tt.payload.accessList.isSome: - Opt.some(List[Eip6493AccessTuple, Limit MAX_ACCESS_LIST_SIZE].init( + Opt.some(List[Eip6404AccessTuple, Limit MAX_ACCESS_LIST_SIZE].init( tt.payload.accessList.get.mapIt( - Eip6493AccessTuple( + Eip6404AccessTuple( address: ExecutionAddress(data: distinctBase(it.address)), storage_keys: List[Eth2Digest, Limit MAX_ACCESS_LIST_STORAGE_KEYS] .init(it.storage_keys.mapIt( Eth2Digest(data: distinctBase(it)))))))) else: - Opt.none(List[Eip6493AccessTuple, Limit MAX_ACCESS_LIST_SIZE]), + Opt.none(List[Eip6404AccessTuple, Limit MAX_ACCESS_LIST_SIZE]), max_priority_fees_per_gas: if tt.payload.maxPriorityFeesPerGas.isSome: - Opt.some(Eip6493FeesPerGas( + Opt.some(Eip6404FeesPerGas( regular: if tt.payload.maxPriorityFeesPerGas.get.regular.isSome: Opt.some(tt.payload.maxPriorityFeesPerGas.get.regular.get) @@ -230,7 +230,7 @@ func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4): else: Opt.none(Uint256))) else: - Opt.none(Eip6493FeesPerGas), + Opt.none(Eip6404FeesPerGas), blob_versioned_hashes: if tt.payload.blobVersionedHashes.isSome: Opt.some( @@ -241,16 +241,16 @@ func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4): Opt.none( List[stable.VersionedHash, Limit MAX_BLOB_COMMITMENTS_PER_BLOCK])), - signature: Eip6493TransactionSignature( - `from`: - if tt.signature.`from`.isSome: + `from`: Eip6404ExecutionSignature( + address: + if tt.`from`.address.isSome: Opt.some(ExecutionAddress( - data: distinctBase(tt.signature.`from`.get))) + data: distinctBase(tt.`from`.address.get))) else: Opt.none(ExecutionAddress), - ecdsa_signature: - if tt.signature.ecdsaSignature.isSome: - Opt.some(array[65, byte](tt.signature.ecdsaSignature.get)) + secp256k1_signature: + if tt.`from`.secp256k1Signature.isSome: + Opt.some(array[65, byte](tt.`from`.secp256k1Signature.get)) else: Opt.none(array[65, byte]))) @@ -293,7 +293,7 @@ func asConsensusType*(rpcExecutionPayload: ExecutionPayloadV4): rpcExecutionPayload.extraData.bytes), base_fee_per_gas: rpcExecutionPayload.baseFeePerGas, block_hash: rpcExecutionPayload.blockHash.asEth2Digest, - transactions: List[Eip6493Transaction, MAX_TRANSACTIONS_PER_PAYLOAD].init( + transactions: List[Eip6404Transaction, MAX_TRANSACTIONS_PER_PAYLOAD].init( mapIt(rpcExecutionPayload.transactions, it.getTransaction)), withdrawals: List[capella.Withdrawal, MAX_WITHDRAWALS_PER_PAYLOAD].init( mapIt(rpcExecutionPayload.withdrawals, it.asConsensusWithdrawal)), @@ -409,7 +409,7 @@ func asEngineExecutionPayload*(executionPayload: deneb.ExecutionPayload): func asEngineExecutionPayload*(executionPayload: electra.ExecutionPayload): ExecutionPayloadV4 = template getTypedTransaction( - tt: electra.Eip6493Transaction): engine_api_types.Transaction = + tt: electra.Eip6404Transaction): engine_api_types.Transaction = engine_api_types.Transaction( payload: engine_api_types.TransactionPayload( `type`: @@ -429,7 +429,7 @@ func asEngineExecutionPayload*(executionPayload: electra.ExecutionPayload): Opt.none(Quantity), maxFeesPerGas: if tt.payload.max_fees_per_gas.isSome: - Opt.some(engine_api_types.TransactionFeesPerGas( + Opt.some(engine_api_types.FeesPerGas( regular: if tt.payload.max_fees_per_gas.get.regular.isSome: Opt.some(tt.payload.max_fees_per_gas.get.regular.get) @@ -441,7 +441,7 @@ func asEngineExecutionPayload*(executionPayload: electra.ExecutionPayload): else: Opt.none(UInt256))) else: - Opt.none(engine_api_types.TransactionFeesPerGas), + Opt.none(engine_api_types.FeesPerGas), gas: if tt.payload.gas.isSome: Opt.some(tt.payload.gas.get.Quantity) @@ -473,7 +473,7 @@ func asEngineExecutionPayload*(executionPayload: electra.ExecutionPayload): Opt.none(seq[AccessTuple]), maxPriorityFeesPerGas: if tt.payload.max_priority_fees_per_gas.isSome: - Opt.some(engine_api_types.TransactionFeesPerGas( + Opt.some(engine_api_types.FeesPerGas( regular: if tt.payload.max_priority_fees_per_gas.get.regular.isSome: Opt.some( @@ -487,22 +487,22 @@ func asEngineExecutionPayload*(executionPayload: electra.ExecutionPayload): else: Opt.none(UInt256))) else: - Opt.none(engine_api_types.TransactionFeesPerGas), + Opt.none(engine_api_types.FeesPerGas), blobVersionedHashes: if tt.payload.blob_versioned_hashes.isSome: Opt.some(distinctBase(tt.payload.blob_versioned_hashes.get) .mapIt(FixedBytes[32](it))) else: Opt.none(seq[FixedBytes[32]])), - signature: engine_api_types.TransactionSignature( - `from`: - if tt.signature.`from`.isSome: - Opt.some(Address(tt.signature.`from`.get.data)) + `from`: engine_api_types.ExecutionSignature( + address: + if tt.`from`.address.isSome: + Opt.some(Address(tt.`from`.address.get.data)) else: Opt.none(Address), - ecdsaSignature: - if tt.signature.ecdsa_signature.isSome: - Opt.some(FixedBytes[65](tt.signature.ecdsa_signature.get)) + secp256k1Signature: + if tt.`from`.secp256k1_signature.isSome: + Opt.some(FixedBytes[65](tt.`from`.secp256k1_signature.get)) else: Opt.none(FixedBytes[65]))) diff --git a/beacon_chain/spec/datatypes/electra.nim b/beacon_chain/spec/datatypes/electra.nim index 0da564f0f..aa2626b96 100644 --- a/beacon_chain/spec/datatypes/electra.nim +++ b/beacon_chain/spec/datatypes/electra.nim @@ -129,7 +129,7 @@ type # Extra payload fields block_hash*: Eth2Digest # Hash of execution block - transactions*: List[Eip6493Transaction, MAX_TRANSACTIONS_PER_PAYLOAD] + transactions*: List[Eip6404Transaction, MAX_TRANSACTIONS_PER_PAYLOAD] withdrawals*: List[Withdrawal, MAX_WITHDRAWALS_PER_PAYLOAD] blob_gas_used*: uint64 excess_blob_gas*: uint64 diff --git a/beacon_chain/spec/datatypes/stable.nim b/beacon_chain/spec/datatypes/stable.nim index 7b896c172..697ac999e 100644 --- a/beacon_chain/spec/datatypes/stable.nim +++ b/beacon_chain/spec/datatypes/stable.nim @@ -21,7 +21,7 @@ const MAX_BEACON_BLOCK_BODY_FIELDS* = 64 MAX_BEACON_STATE_FIELDS* = 128 - # https://eips.ethereum.org/EIPS/eip-6493 + # https://eips.ethereum.org/EIPS/eip-6404 MAX_CALLDATA_SIZE* = 16_777_216 MAX_ACCESS_LIST_STORAGE_KEYS* = 524_288 MAX_ACCESS_LIST_SIZE* = 524_288 @@ -37,17 +37,17 @@ type ChainId* = uint64 - Eip6493FeesPerGas* {.sszStableContainer: 16.} = object + Eip6404FeesPerGas* {.sszStableContainer: 16.} = object regular*: Opt[UInt256] # EIP-4844 blob*: Opt[UInt256] - Eip6493AccessTuple* = object + Eip6404AccessTuple* = object address*: ExecutionAddress storage_keys*: List[Eth2Digest, Limit MAX_ACCESS_LIST_STORAGE_KEYS] - Eip6493TransactionPayload* {.sszStableContainer: 32.} = object + Eip6404TransactionPayload* {.sszStableContainer: 32.} = object # EIP-2718 `type`*: Opt[uint8] @@ -55,29 +55,29 @@ type chain_id*: Opt[ChainId] nonce*: Opt[uint64] - max_fees_per_gas*: Opt[Eip6493FeesPerGas] + max_fees_per_gas*: Opt[Eip6404FeesPerGas] gas*: Opt[uint64] to*: Opt[ExecutionAddress] value*: Opt[UInt256] input*: Opt[List[byte, Limit MAX_CALLDATA_SIZE]] # EIP-2930 - access_list*: Opt[List[Eip6493AccessTuple, Limit MAX_ACCESS_LIST_SIZE]] + access_list*: Opt[List[Eip6404AccessTuple, Limit MAX_ACCESS_LIST_SIZE]] # EIP-1559 - max_priority_fees_per_gas*: Opt[Eip6493FeesPerGas] + max_priority_fees_per_gas*: Opt[Eip6404FeesPerGas] # EIP-4844 blob_versioned_hashes*: Opt[List[VersionedHash, Limit MAX_BLOB_COMMITMENTS_PER_BLOCK]] - Eip6493TransactionSignature* {.sszStableContainer: 16.} = object - `from`*: Opt[ExecutionAddress] - ecdsa_signature*: Opt[array[65, byte]] + Eip6404ExecutionSignature* {.sszStableContainer: 16.} = object + address*: Opt[ExecutionAddress] + secp256k1_signature*: Opt[array[65, byte]] - Eip6493Transaction* = object - payload*: Eip6493TransactionPayload - signature*: Eip6493TransactionSignature + Eip6404Transaction* = object + payload*: Eip6404TransactionPayload + `from`*: Eip6404ExecutionSignature # https://eips.ethereum.org/EIPS/eip-7688 StableAttestation* {. @@ -119,7 +119,7 @@ type # Extra payload fields block_hash*: Opt[Eth2Digest] # Hash of execution block - transactions*: Opt[List[Eip6493Transaction, MAX_TRANSACTIONS_PER_PAYLOAD]] + transactions*: Opt[List[Eip6404Transaction, MAX_TRANSACTIONS_PER_PAYLOAD]] withdrawals*: Opt[List[Withdrawal, MAX_WITHDRAWALS_PER_PAYLOAD]] blob_gas_used*: Opt[uint64] excess_blob_gas*: Opt[uint64] diff --git a/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim b/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim index 1a551f78a..950f38513 100644 --- a/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim +++ b/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim @@ -67,11 +67,11 @@ RestJson.useDefaultSerializationFor( DepositRequest, DepositTreeSnapshot, DistributedKeystoreInfo, - Eip6493AccessTuple, - Eip6493FeesPerGas, - Eip6493Transaction, - Eip6493TransactionPayload, - Eip6493TransactionSignature, + Eip6404AccessTuple, + Eip6404FeesPerGas, + Eip6404Transaction, + Eip6404TransactionPayload, + Eip6404ExecutionSignature, ElectraSignedBlockContents, EmptyBody, Eth1Data, diff --git a/beacon_chain/spec/eth2_apis/rest_types.nim b/beacon_chain/spec/eth2_apis/rest_types.nim index 73be221a5..359341fb5 100644 --- a/beacon_chain/spec/eth2_apis/rest_types.nim +++ b/beacon_chain/spec/eth2_apis/rest_types.nim @@ -303,7 +303,7 @@ type bellatrix.Transaction, MAX_TRANSACTIONS_PER_PAYLOAD] of RestTransactionsKind.Electra: electraData*: List[ - electra.Eip6493Transaction, MAX_TRANSACTIONS_PER_PAYLOAD] + electra.Eip6404Transaction, MAX_TRANSACTIONS_PER_PAYLOAD] # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/capella/beacon-chain.md#executionpayload RestExecutionPayload* = object diff --git a/vendor/nim-web3 b/vendor/nim-web3 index c6ab73f48..3a5afc8ea 160000 --- a/vendor/nim-web3 +++ b/vendor/nim-web3 @@ -1 +1 @@ -Subproject commit c6ab73f485c9db140b47012621ad0b775d70124e +Subproject commit 3a5afc8ea7c42cb3e62646f13e0c21ddf2c08797