Go-Ethereum
使用 abi.encodePacked 填充 eth_call 中的數據欄位的工具?
我正在嘗試
deposit
使用 geth’s 呼叫契約的方法eth_call
。此函式以data
字節為單位接收值:{ "from": "0xd9c9cd5f6779558b6e0ed4e6acf6b1947e7fa1f3", "to": "0xebe8efa441b9302a0d7eaecc277c09d20d684540", "gas": "0x1bd7c", "data": "0xd459fc46000000000000000000000000000000000000000000000000000000000046c650dbb5e8cb2bac4d2ed0b1e6475d37361157738801c494ca482f96527eb48f9eec488c2eba92d31baeccfb6968fad5c21a3df93181b43b4cf253b4d572b64172ef000000000000000000000000000000000000000000000000000000000000008c00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000002b85c0c828d7a98633b4e1b65eac0c017502da909420aeade9a280675013df36bdc71cffdf420cef3d24ba4b3f9b980bfbb26bd5e2dcf7795b3519a3fd22ffbb2000000000000000000000000000000000000000000000000000000000000000238fb6606dc2b5e42d00c653372c153da8560de77bd9afaba94b4ab6e4aa11d565d858c761320dbf23a94018d843772349bd9d92301b0ca9ca983a22d86a70628", }
在solidity中,我會傳入,
abi.encodePacked(arc20Address, assetID, assetAmount, abi.encodeWithSignature("deposit()"))
它會為我將這些參數轉換為字節數據。但是由於我使用的是 geth,我想知道是否有一個我可以使用的工具可以為我做到這一點?
如果你有合約的 ABI,你可以使用
encodeABI
.如果您沒有合約的 ABI
web3.eth.abi.encodeFunctionCall
,那麼您可以使用或組合web3.eth.abi.*
.如果您不想使用 web3js,可以使用ethereumjs-abi來實現類似的功能。
但是由於您使用的是 geth,因此您必須查看 web3 v0.20 文件,尤其是getData。這裡還有一些答案: Encoding/Decoding contract ABI data my help with web3 v0.20。