-
-
Notifications
You must be signed in to change notification settings - Fork 2k
Closed
Labels
discussionQuestions, feedback and general information.Questions, feedback and general information.
Description
Hi,
I'm trying to decode function data but geting an unexpected result. This ABI has two input types so the expected result is an array with two values. The result array is indeed length of 2, however the first item is returned as [Getter]
function instead of returning the address value.
const ethers = require('ethers')
const fragment = { constant: false, inputs: [{ name: '_to', type: 'address' }, { name: '_value', type: 'uint256' }], name: 'transfer', outputs: [{ name: 'success', type: 'bool' }], payable: false, type: 'function' }
const ifc = new ethers.utils.Interface([])
const data = '0xa9059cbb85f1150654584d0192059454e9dc1532d9d9cf914926406a02370cea80cf32f600000000000000000000000000000000000000000000000000000000033dc10b'
const result = ifc.decodeFunctionData(ethers.utils.FunctionFragment.fromObject(fragment), data)
console.log(result)
console.log(result.length)
console.log(result[0])
[
[Getter],
BigNumber { _hex: '0x033dc10b', _isBigNumber: true },
_value: BigNumber { _hex: '0x033dc10b', _isBigNumber: true }
]
2
/home/mota/Sandbox/test/node_modules/ethers/node_modules/@ethersproject/abi/lib/coders/array.js:163
get: function () { throw value; }
^
_to: value out of range (argument="value", value=20, code=INVALID_ARGUMENT, version=bytes/5.0.11)
at Logger.makeError (/home/mota/Sandbox/test/node_modules/@ethersproject/logger/lib/index.js:180:21)
at Logger.throwError (/home/mota/Sandbox/test/node_modules/@ethersproject/logger/lib/index.js:189:20)
at Logger.throwArgumentError (/home/mota/Sandbox/test/node_modules/@ethersproject/logger/lib/index.js:192:21)
at Object.hexZeroPad (/home/mota/Sandbox/test/node_modules/@ethersproject/bytes/lib/index.js:264:16)
at AddressCoder.decode (/home/mota/Sandbox/test/node_modules/ethers/node_modules/@ethersproject/abi/lib/coders/address.js:40:45)
at /home/mota/Sandbox/test/node_modules/ethers/node_modules/@ethersproject/abi/lib/coders/array.js:109:31
at Array.forEach (<anonymous>)
at Object.unpack (/home/mota/Sandbox/test/node_modules/ethers/node_modules/@ethersproject/abi/lib/coders/array.js:88:12)
at TupleCoder.decode (/home/mota/Sandbox/test/node_modules/ethers/node_modules/@ethersproject/abi/lib/coders/tuple.js:74:49)
at AbiCoder.decode (/home/mota/Sandbox/test/node_modules/ethers/node_modules/@ethersproject/abi/lib/abi-coder.js:100:22) {
reason: 'value out of range',
code: 'INVALID_ARGUMENT',
argument: 'value',
value: 20,
baseType: 'address',
type: 'address'
}
Tx for reference: https://etherscan.io/tx/0x0fc8f1cb5112c4679dfcbde54306cabecedfbfd115030252b2e3d77ed7b7da8c
Etherscan is able to decode it correctly
Metadata
Metadata
Assignees
Labels
discussionQuestions, feedback and general information.Questions, feedback and general information.