Web3js
如何使用帶有嵌套、數組或非字元串參數的 encodeFunctionCall?
Web3.js 有一個名為encodefunctioncall的方法,其簽名如下:
encodeFunctionCall(abiItem: AbiItem, params: string[]): string;
第一個參數是該函式的 ABI 介面,第二個參數是函式參數的字元串數組。我的問題是第二個參數,它只接受字元串數組,而我的方法獲取一個結構和一些地址和整數數組作為輸入。如果我使用
encodeParameters
對輸入參數進行編碼,它會返回一個無法傳遞的字元串,encodefunctioncall
因為它只接受字元串數組作為其第二個輸入:
encodeParameters(types: any[], paramaters: any[]): string;
如何使用 web3.js 使用非字元串(例如嵌套結構或數組)創建函式呼叫?
解決方法是使用 web3 ABI 編碼器函式分別計算函式簽名和參數,然後簡單地連接它們:
const callData = web3.eth.abi.encodeFunctionSignature(abiItem) + web3.eth.abi.encodeParameters(types, params).substr(2)/* remove preceding 0x */;
此連結提供更多資訊。