11import pkg/ eth/ keys
22import pkg/ eth/ rlp
33import pkg/ eth/ common/ transaction as eth
4+ import pkg/ eth/ common/ transaction_utils
45import pkg/ eth/ common/ eth_hash
56import ../../ basics
67import ../../ transaction as ethers
@@ -25,7 +26,7 @@ func toSignableTransaction(transaction: Transaction): SignableTransaction =
2526 raiseWalletError " missing gas limit"
2627
2728 signable.nonce = nonce.truncate (uint64 )
28- signable.chainId = ChainId ( chainId. truncate ( uint64 ))
29+ signable.chainId = chainId
2930 signable.gasLimit = GasInt (gasLimit.truncate (uint64 ))
3031
3132 signable.to = Opt .some (EthAddress (transaction.to))
@@ -47,21 +48,7 @@ func toSignableTransaction(transaction: Transaction): SignableTransaction =
4748
4849func sign (key: PrivateKey , transaction: SignableTransaction ): seq [byte ] =
4950 var transaction = transaction
50-
51- # Temporary V value, used to signal to the hashing function
52- # that we'd like to use an EIP-155 signature
53- transaction.V = uint64 (transaction.chainId) * 2 + 35
54-
55- let hash = transaction.txHashNoSignature ().data
56- let signature = key.sign (SkMessage (hash)).toRaw ()
57-
58- transaction.R = UInt256 .fromBytesBE (signature[0 ..< 32 ])
59- transaction.S = UInt256 .fromBytesBE (signature[32 ..< 64 ])
60- transaction.V = uint64 (signature[64 ])
61-
62- if transaction.txType == TxLegacy :
63- transaction.V += uint64 (transaction.chainId) * 2 + 35
64-
51+ transaction.signature = transaction.sign (key, true )
6552 rlp.encode (transaction)
6653
6754func sign * (key: PrivateKey , transaction: Transaction ): seq [byte ] =
0 commit comments