@@ -60,6 +60,67 @@ suite "Signed transactions":
6060 let txHex = " 0x" & txBytes.toHex
6161 check txHex == " 0xf86c098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a028ef61340bd939bc2195fe537567866003e1a15d3c71ff63e1590620aa636276a067cbe9d8997f761aecb703304b3800ccf555c9f3dc64214b297fb1966a3b6d83"
6262
63+ test " encodeTransaction(Transaction, PrivateKey, TxType) EIP-155 test vector" :
64+ let
65+ privateKey = PrivateKey .fromHex (" 0x4646464646464646464646464646464646464646464646464646464646464646" ).tryGet ()
66+ publicKey = privateKey.toPublicKey ()
67+ address = publicKey.toCanonicalAddress ()
68+ var tx: TransactionArgs
69+ tx.nonce = Opt .some (Quantity (9 ))
70+ tx.`from` = Opt .some (Address (address))
71+ tx.value = Opt .some (1000000000000000000 .u256)
72+ tx.to = Opt .some (Address (hexToByteArray [20 ](" 0x3535353535353535353535353535353535353535" )))
73+ tx.gas = Opt .some (Quantity (21000 'u64 ))
74+ tx.gasPrice = Opt .some (Quantity (20000000000 'i64 ))
75+ tx.chainId = Opt .some (Quantity (1 ))
76+
77+ let txBytes = encodeTransaction (tx, privateKey, TxLegacy )
78+ let txHex = " 0x" & txBytes.toHex
79+ check txHex == " 0xf86c098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a028ef61340bd939bc2195fe537567866003e1a15d3c71ff63e1590620aa636276a067cbe9d8997f761aecb703304b3800ccf555c9f3dc64214b297fb1966a3b6d83"
80+
81+ # testcase is taken from ethers.js: https://github.com/ethers-io/ethers.js/tree/f5336c19b1adcb5e992745b8a0561eaf8f1f1138/testcases
82+ test " encodeTransaction(Transaction, PrivateKey, TxType) EIP-2930" :
83+ let
84+ privateKey = PrivateKey .fromHex (" 0x2bf558dce44ca98616ee629199215ae5401c97040664637c48e3b74e66bcb3ae" ).tryGet ()
85+ publicKey = privateKey.toPublicKey ()
86+ address = publicKey.toCanonicalAddress ()
87+ var tx: TransactionArgs
88+ tx.nonce = Opt .some (Quantity (648 ))
89+ tx.`from` = Opt .some (Address (address))
90+ tx.value = Opt .some (51284 .u256)
91+ tx.to = Opt .some (Address (hexToByteArray [20 ](" 0x6Eb893e3466931517a04a17D153a6330c3f2f1dD" )))
92+ tx.gas = Opt .some (Quantity (157 'u64 ))
93+ tx.gasPrice = Opt .some (Quantity (9086 'u64 ))
94+ tx.chainId = Opt .some (Quantity (2214903583 ))
95+ tx.data = Opt .some (hexToSeqByte (" 0x889e365e59664fb881554ba1175519b5195b1d20390beb806d8f2cda7893e6f79848195dba4c905db6d7257ffb5eefea35f18ae33c" ))
96+ tx.accessList = Opt .some (newSeq [AccessPair ]())
97+
98+ let txBytes = encodeTransaction (tx, privateKey, TxEip2930 )
99+ let txHex = " 0x" & txBytes.toHex
100+ check txHex == " 0x01f89f848404bf1f82028882237e819d946eb893e3466931517a04a17d153a6330c3f2f1dd82c854b5889e365e59664fb881554ba1175519b5195b1d20390beb806d8f2cda7893e6f79848195dba4c905db6d7257ffb5eefea35f18ae33cc080a0775f29642af1045b40e5beae8e6bce2dc9e222023b7a50372be6824dbb7434fba05dacfff85752a0b9fd860bc751c17235a670d318a8b9494d664c1b87e33ac8dd"
101+
102+ # testcase is taken from ethers.js: https://github.com/ethers-io/ethers.js/tree/f5336c19b1adcb5e992745b8a0561eaf8f1f1138/testcases
103+ test " encodeTransaction(Transaction, PrivateKey, TxType) EIP-1559" :
104+ let
105+ privateKey = PrivateKey .fromHex (" 0x2bf558dce44ca98616ee629199215ae5401c97040664637c48e3b74e66bcb3ae" ).tryGet ()
106+ publicKey = privateKey.toPublicKey ()
107+ address = publicKey.toCanonicalAddress ()
108+ var tx: TransactionArgs
109+ tx.nonce = Opt .some (Quantity (648 ))
110+ tx.`from` = Opt .some (Address (address))
111+ tx.value = Opt .some (51284 .u256)
112+ tx.to = Opt .some (Address (hexToByteArray [20 ](" 0x6Eb893e3466931517a04a17D153a6330c3f2f1dD" )))
113+ tx.gas = Opt .some (Quantity (157 'u64 ))
114+ tx.maxFeePerGas = Opt .some (Quantity (879596102 'u64 ))
115+ tx.maxPriorityFeePerGas = Opt .some (Quantity (2915939 'u64 ))
116+ tx.chainId = Opt .some (Quantity (2214903583 ))
117+ tx.data = Opt .some (hexToSeqByte (" 0x889e365e59664fb881554ba1175519b5195b1d20390beb806d8f2cda7893e6f79848195dba4c905db6d7257ffb5eefea35f18ae33c" ))
118+ tx.accessList = Opt .some (newSeq [AccessPair ]())
119+
120+ let txBytes = encodeTransaction (tx, privateKey, TxEip1559 )
121+ let txHex = " 0x" & txBytes.toHex
122+ check txHex == " 0x02f8a5848404bf1f820288832c7e6384346d9246819d946eb893e3466931517a04a17d153a6330c3f2f1dd82c854b5889e365e59664fb881554ba1175519b5195b1d20390beb806d8f2cda7893e6f79848195dba4c905db6d7257ffb5eefea35f18ae33cc080a0f1003f96c6c6620dd46db36d2ae9f12d363947eb0db088c678b6ad1cf494aa6fa06085b5abbf448de5d622dc820da590cfdb6bb77b41c6650962b998a941f8d701"
123+
63124 test " contract creation and method invocation" :
64125 proc test () {.async .} =
65126 let theRNG = HmacDrbgContext .new ()
0 commit comments