本頁面使用機器翻譯自英語,可能包含錯誤或不清楚的語言。如需最準確的信息,請參閱英文原文。由於更新頻繁,部分內容可能與英文原文有出入。請加入我們在 Crowdin 上的努力,幫助我們改進本頁面的翻譯。 (Crowdin translation page, Contributing guide)
caver.abi
通過 caver.abi
軟件包,您可以使用 ABI(應用程序二進制接口)對參數進行解碼和編碼。 這將用於調用已部署智能合約的功能。
編碼函數簽名
caver.abi.encodeFunctionSignature(functionSignature)
將函數簽名編碼為 ABI 簽名,即函數名稱(包括參數類型)的 sha3 哈希值的前 4 個字節。
參數
名稱 | 類型 | 描述 |
---|---|---|
functionSignature | string \ | object |
返回價值
類型 | 描述 |
---|---|
string | 函數的 ABI 簽名。 |
示例
// From a JSON interface object> caver.abi.encodeFunctionSignature({ name: 'myMethod', type: 'function', inputs: [{ type: 'uint256', name: 'myNumber' },{ type: 'string', name: 'mystring' }]})'0x24ee0097'// From a function signature> caver.abi.encodeFunctionSignature('myMethod(uint256,string)')'0x24ee0097'
encodeEventSignature
caver.abi.encodeEventSignature(eventSignature)
將事件簽名編碼為 ABI 簽名,即事件名稱(包括輸入參數類型)的 sha3 哈希值。
參數
名稱 | 類型 | 描述 |
---|---|---|
eventSignature | string \ | object |
返回價值
類型 | 描述 |
---|---|
string | 事件的 ABI 簽名。 |
示例
// From a JSON interface object> caver.abi.encodeEventSignature({ name: 'myEvent', type: 'event', inputs: [{ type: 'uint256', name: 'myNumber' },{ type: 'bytes32', name: 'myBytes' }]})'0xf2eeb729e636a8cb783be044acf6b7b1e2c5863735b60d6daae84c366ee87d97'// From an event signature> caver.abi.encodeEventSignature('myEvent(uint256,bytes32)')'0xf2eeb729e636a8cb783be044acf6b7b1e2c5863735b60d6daae84c366ee87d97'
encodeParameter
caver.abi.encodeParameter(type, parameter)
根據參數類型將參數編碼為 ABI 表示法。
參數
名稱 | 類型 | 描述 |
---|---|---|
type | string \ | object |
parameter | Mixed | 要編碼的實際參數。 |
注意 caver.kct.kip7.create
從 caver-js v1.6.1 開始支持。 有關 tuple
類型的更多詳情,請參閱 Solidity Docs。
返回價值
類型 | 描述 |
---|---|
string | ABI 編碼參數。 |
示例
> caver.abi.encodeParameter('uint256', '2345675643')'0x000000000000000000000000000000000000000000000000000000008bd02b7b'> caver.abi.encodeParameter('bytes32', caver.utils.rightPad('0xdf3234', 64))'0xdf32340000000000000000000000000000000000000000000000000000000000'> caver.abi.encodeParameter('bytes', '0xdf3234')'0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003df32340000000000000000000000000000000000000000000000000000000000'> caver.abi.encodeParameter('bytes32[]', [caver.utils.rightPad('0xdf3234', 64), caver.utils.rightPad('0xfdfd', 64)])'0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002df32340000000000000000000000000000000000000000000000000000000000fdfd000000000000000000000000000000000000000000000000000000000000'> caver.abi.encodeParameter('tuple(bytes32,bool)', ['0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true])'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001'> caver.abi.encodeParameter( { components: [{ name: 'a', type: 'bytes32' }, { name: 'b', type: 'bool' }], name: 'tupleExample', type: 'tuple', }, ['0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true])'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001'
encodeParameters
caver.abi.encodeParameters(typesArray, parameters)
根據 JSON 接口對象對函數參數進行編碼。
參數
名稱 | 類型 | 描述 |
---|---|---|
typesArray | Array \ | object |
parameters | Array | 要編碼的參數。 |
注意 caver.kct.kip7.create
從 caver-js v1.6.1 開始支持。 有關 tuple
類型的更多詳情,請參閱 Solidity Docs。
返回價值
類型 | 描述 |
---|---|
string | ABI 編碼參數。 |
示例
> caver.abi.encodeParameters(['uint256','string'], ['2345675643', 'Hello!%'])'0x000000000000000000000000000000000000000000000000000000008bd02b7b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000748656c6c6f212500000000000000000000000000000000000000000000000000'> caver.abi.encodeParameters(['uint8[]','bytes32'], [['34','255'], caver.utils.rightPad('0x324567fff', 64)])'0x0000000000000000000000000000000000000000000000000000000000000040324567fff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000ff'> caver.abi.encodeParameters( ['tuple(bytes32,bool)', 'tuple(bool,address)'], [ ['0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true], [true, '0x77656c636f6d6520746f20657468657265756d2e'] ])'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000077656c636f6d6520746f20657468657265756d2e'> caver.abi.encodeParameters( [ { components: [{ name: 'a', type: 'bytes32' }, { name: 'b', type: 'bool' }], name: 'tupleExample', type: 'tuple', }, { components: [{ name: 'c', type: 'bool' }, { name: 'd', type: 'address' }], name: 'tupleExample2', type: 'tuple', }, ], [ ['0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true], [true, '0x77656c636f6d6520746f20657468657265756d2e'] ])'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000077656c636f6d6520746f20657468657265756d2e'
encodeFunctionCall
caver.abi.encodeFunctionCall(jsonInterface, parameters)
使用 JSON 接口對象和給定參數對函數調用進行編碼。
參數
名稱 | 類型 | 描述 |
---|---|---|
jsonInterface | object | 函數的 JSON 接口對象。 |
parameters | Array | 要編碼的參數。 |
返回價值
類型 | 描述 |
---|---|
string | ABI 編碼的函數調用,即函數簽名 + 參數。 |
示例
> caver.abi.encodeFunctionCall({ name: 'myMethod', type: 'function', inputs: [{ type: 'uint256', name: 'myNumber' },{ type: 'string', name: 'mystring' }]}, ['2345675643', 'Hello!%'])'0x24ee0097000000000000000000000000000000000000000000000000000000008bd02b7b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000748656c6c6f212500000000000000000000000000000000000000000000000000'
decodeFunctionCall
caver.abi.decodeFunctionCall(abi, functionCall)
從函數或函數 abi 字符串的 abi 對象中解碼函數調用,並返回參數。
注意 caver.abi.decodeFunctionCall
自 caver-js v1.6.3 開始支持。
參數
名稱 | 類型 | 描述 |
---|---|---|
abi | object | 函數的 abi 對象。 |
functionCall | string | 編碼後的函數調用字符串。 |
返回價值
類型 | 描述 |
---|---|
object | 包含純參數的對象。 您可以使用 result[0] ,因為它可以像數組一樣按參數順序訪問。 |
示例
> caver.abi.decodeFunctionCall({ name: 'myMethod', type: 'function', inputs: [{ type: 'uint256', name: 'myNumber' },{ type: 'string', name: 'mystring' }]}, '0x24ee0097000000000000000000000000000000000000000000000000000000008bd02b7b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000748656c6c6f212500000000000000000000000000000000000000000000000000')Result { '0': '2345675643', '1': 'Hello!%', __length__: 2, myNumber: '2345675643', mystring: 'Hello!%'}
decodeParameter
caver.abi.decodeParameter(type, hexstring)
將 ABI 編碼的參數解碼為 JavaScript 類型。
參數
名稱 | 類型 | 描述 |
---|---|---|
type | string \ | object |
hexstring | Array | 要解碼的 ABI 字節代碼。 |
注意 caver.kct.kip7.create
從 caver-js v1.6.1 開始支持。 有關 tuple
類型的更多詳情,請參閱 Solidity Docs。
返回價值
類型 | 描述 |
---|---|
Mixed | 解碼參數。 |
示例
> caver.abi.decodeParameter('uint256', '0x0000000000000000000000000000000000000000000000000000000000000010')'16'> caver.abi.decodeParameter('string', '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000848656c6c6f212521000000000000000000000000000000000000000000000000')'Hello!%!'> caver.abi.decodeParameter('tuple(bytes32,bool)', '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001')[ '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true ]> caver.abi.decodeParameter( { components: [{ name: 'a', type: 'bytes32' }, { name: 'b', type: 'bool' }], name: 'tupleExample', type: 'tuple', }, '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001')[ '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true, a: '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', b: true]