[英]How to decode the indexed string param in an event using web3.js?
This is the event -这是活动——
event BridgeAdded(
string indexed tokenTicker,
string tokenName,
string imageUrl
);
I use web3.eth.abi.decodeParameter("string", topics[1])
to decode the indexed string param but get this error -我使用web3.eth.abi.decodeParameter("string", topics[1])
来解码索引字符串参数但得到这个错误 -
Error: overflow [ See: https://links.ethers.org/v5-errors-NUMERIC_FAULT-overflow ] (fault="overflow", operation="toNumber", value="105640063387051144792550451261497903460441457163918809975891088748950929433065", code=NUMERIC_FAULT, version=bignumber/5.6.2)
at Logger.makeError (/home/rajat/bridge-server/node_modules/@ethersproject/logger/lib/index.js:233:21)
at Logger.throwError (/home/rajat/bridge-server/node_modules/@ethersproject/logger/lib/index.js:242:20)
at throwFault (/home/rajat/bridge-server/node_modules/@ethersproject/bignumber/lib/bignumber.js:303:19)
at BigNumber.toNumber (/home/rajat/bridge-server/node_modules/@ethersproject/bignumber/lib/bignumber.js:151:13)
at /home/rajat/bridge-server/node_modules/@ethersproject/abi/lib/coders/array.js:92:60
at Array.forEach (<anonymous>)
at unpack (/home/rajat/bridge-server/node_modules/@ethersproject/abi/lib/coders/array.js:88:12)
at TupleCoder.decode (/home/rajat/bridge-server/node_modules/@ethersproject/abi/lib/coders/tuple.js:74:60)
at AbiCoder.decode (/home/rajat/bridge-server/node_modules/@ethersproject/abi/lib/abi-coder.js:98:22)
at ABICoder.decodeParametersWith (/home/rajat/bridge-server/node_modules/web3-eth-abi/lib/index.js:310:30)
at ABICoder.decodeParameters (/home/rajat/bridge-server/node_modules/web3-eth-abi/lib/index.js:291:17)
at ABICoder.decodeParameter (/home/rajat/bridge-server/node_modules/web3-eth-abi/lib/index.js:280:17)
at populateDb (/home/rajat/bridge-server/eventListener/main.js:140:36)
at onEvent (/home/rajat/bridge-server/eventListener/main.js:117:19)
at handleLogs (/home/rajat/bridge-server/eventListener/main.js:90:32)
at startListening (/home/rajat/bridge-server/eventListener/main.js:64:27) {
reason: 'overflow',
code: 'NUMERIC_FAULT',
fault: 'overflow',
operation: 'toNumber',
value: '105640063387051144792550451261497903460441457163918809975891088748950929433065'
}
Please help me resolve this error.请帮我解决这个错误。
You should use decodeLog
instead, and you would also need The ABI byte code in the data
field of logs
(if you can get the topics
array you should get data
from logs
as well):您应该改用decodeLog
,并且您还需要logs
data
字段中的 ABI 字节码(如果您可以获取topics
数组,您也应该从logs
中获取data
):
let result = web3.eth.abi.decodeLog([{
type: 'string',
name: 'tokenTicker',
indexed: true
}],
data,
topics[1]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.