This commit is contained in:
parent
9202e336e4
commit
2bd41c6ae9
|
@ -1423,6 +1423,11 @@ type
|
||||||
eip6493Root: Eth2Digest
|
eip6493Root: Eth2Digest
|
||||||
eip6493Bytes: seq[byte]
|
eip6493Bytes: seq[byte]
|
||||||
|
|
||||||
|
template toSszType*(v: ChainId): auto = uint64(v)
|
||||||
|
|
||||||
|
template fromSszBytes*(T: type ChainId, bytes: openArray[byte]): T =
|
||||||
|
T fromSszBytes(uint64, bytes)
|
||||||
|
|
||||||
proc ETHTransactionsCreateFromJson(
|
proc ETHTransactionsCreateFromJson(
|
||||||
transactionsRoot #[optional]#: ptr Eth2Digest,
|
transactionsRoot #[optional]#: ptr Eth2Digest,
|
||||||
transactionsJson: cstring): ptr seq[ETHTransaction] {.exported.} =
|
transactionsJson: cstring): ptr seq[ETHTransaction] {.exported.} =
|
||||||
|
@ -1625,6 +1630,12 @@ proc ETHTransactionsCreateFromJson(
|
||||||
storage_keys: List[Eth2Digest, Limit MAX_ACCESS_LIST_STORAGE_KEYS]
|
storage_keys: List[Eth2Digest, Limit MAX_ACCESS_LIST_STORAGE_KEYS]
|
||||||
|
|
||||||
Eip6493TransactionPayload {.sszStableContainer: 32.} = object
|
Eip6493TransactionPayload {.sszStableContainer: 32.} = object
|
||||||
|
# EIP-2718
|
||||||
|
`type`: uint8
|
||||||
|
|
||||||
|
# EIP-155
|
||||||
|
chain_id: Opt[ChainId]
|
||||||
|
|
||||||
nonce: uint64
|
nonce: uint64
|
||||||
max_fee_per_gas: UInt256
|
max_fee_per_gas: UInt256
|
||||||
gas: uint64
|
gas: uint64
|
||||||
|
@ -1632,9 +1643,6 @@ proc ETHTransactionsCreateFromJson(
|
||||||
value: UInt256
|
value: UInt256
|
||||||
input: List[byte, Limit MAX_CALLDATA_SIZE]
|
input: List[byte, Limit MAX_CALLDATA_SIZE]
|
||||||
|
|
||||||
# EIP-2718
|
|
||||||
`type`: Opt[uint8]
|
|
||||||
|
|
||||||
# EIP-2930
|
# EIP-2930
|
||||||
access_list: Opt[List[Eip6493AccessTuple, Limit MAX_ACCESS_LIST_SIZE]]
|
access_list: Opt[List[Eip6493AccessTuple, Limit MAX_ACCESS_LIST_SIZE]]
|
||||||
|
|
||||||
|
@ -1656,6 +1664,18 @@ proc ETHTransactionsCreateFromJson(
|
||||||
|
|
||||||
var eip6493Tx: Eip6493Transaction
|
var eip6493Tx: Eip6493Transaction
|
||||||
|
|
||||||
|
case tx.txType
|
||||||
|
of TxLegacy:
|
||||||
|
eip6493Tx.payload.`type` = 0x00
|
||||||
|
of TxEip2930:
|
||||||
|
eip6493Tx.payload.`type` = 0x01
|
||||||
|
of TxEip1559:
|
||||||
|
eip6493Tx.payload.`type` = 0x02
|
||||||
|
of TxEip4844:
|
||||||
|
eip6493Tx.payload.`type` = 0x03
|
||||||
|
if tx.txType != TxLegacy or tx.V notin [27'i64, 28'i64]:
|
||||||
|
# With replay protection
|
||||||
|
eip6493Tx.payload.chain_id.ok tx.chainId
|
||||||
eip6493Tx.payload.nonce = tx.nonce
|
eip6493Tx.payload.nonce = tx.nonce
|
||||||
eip6493Tx.payload.max_fee_per_gas = tx.maxFee.u256
|
eip6493Tx.payload.max_fee_per_gas = tx.maxFee.u256
|
||||||
eip6493Tx.payload.gas = tx.gasLimit.uint64
|
eip6493Tx.payload.gas = tx.gasLimit.uint64
|
||||||
|
@ -1666,16 +1686,6 @@ proc ETHTransactionsCreateFromJson(
|
||||||
return nil
|
return nil
|
||||||
eip6493Tx.payload.input =
|
eip6493Tx.payload.input =
|
||||||
List[byte, Limit MAX_CALLDATA_SIZE].init(tx.payload)
|
List[byte, Limit MAX_CALLDATA_SIZE].init(tx.payload)
|
||||||
case tx.txType
|
|
||||||
of TxLegacy:
|
|
||||||
if tx.V notin [27'i64, 28'i64]: # With replay protection
|
|
||||||
eip6493Tx.payload.`type`.ok(0x00)
|
|
||||||
of TxEip2930:
|
|
||||||
eip6493Tx.payload.`type`.ok(0x01)
|
|
||||||
of TxEip1559:
|
|
||||||
eip6493Tx.payload.`type`.ok(0x02)
|
|
||||||
of TxEip4844:
|
|
||||||
eip6493Tx.payload.`type`.ok(0x03)
|
|
||||||
if tx.txType >= TxEip2930:
|
if tx.txType >= TxEip2930:
|
||||||
if tx.accessList.len > MAX_ACCESS_LIST_SIZE:
|
if tx.accessList.len > MAX_ACCESS_LIST_SIZE:
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Reference in New Issue