Skip to content

Decoding logs with bytes data fields broken in 1.2.8 for solc 0.4.x / external #3544

Closed
@bingen

Description

Expected behavior

Using decodeLogs should parse logs correctly, see here an example

Actual behavior

Throws with an error like this if there’s a bytes field in the log:

     Error: data out-of-bounds (length=36, offset=64, code=BUFFER_OVERRUN, version=abi/5.0.0-beta.153)
      at Logger.makeError (node_modules/@ethersproject/logger/lib/index.js:178:21)
      at Logger.throwError (node_modules/@ethersproject/logger/lib/index.js:187:20)
      at Reader._peekBytes (node_modules/@ethersproject/abi/lib/coders/abstract-coder.js:135:20)
      at Reader.readBytes (node_modules/@ethersproject/abi/lib/coders/abstract-coder.js:146:26)
      at BytesCoder.DynamicBytesCoder.decode (node_modules/@ethersproject/abi/lib/coders/bytes.js:30:23)
      at BytesCoder.decode (node_modules/@ethersproject/abi/lib/coders/bytes.js:41:81)
      at node_modules/@ethersproject/abi/lib/coders/array.js:77:31
      at Array.forEach (<anonymous>)
      at Object.unpack (node_modules/@ethersproject/abi/lib/coders/array.js:71:12)
      at TupleCoder.decode (node_modules/@ethersproject/abi/lib/coders/tuple.js:39:49)
      at AbiCoder.decode (node_modules/@ethersproject/abi/lib/abi-coder.js:93:22)
      at ABICoder.decodeParameters (node_modules/web3-eth-abi/src/index.js:322:30)
      at ABICoder.decodeLog (node_modules/web3-eth-abi/src/index.js:376:52)
      at eventLogs.map.log (node_modules/@aragon/contract-helpers-test/events.js:18:20)
      at Array.map (<anonymous>)
      at decodeEvents (node_modules/@aragon/contract-helpers-test/events.js:16:20)
      at getDeepEventLogs (test/lock_and_call.js:9:10)
      at getDeepEventArgument (test/lock_and_call.js:12:16)
      at checkCallbackLog (test/lock_and_call.js:50:18)
      at Context.it (test/lock_and_call.js:59:7)
      at process._tickCallback (internal/process/next_tick.js:68:7)

Steps to reproduce the behavior

Call that function mentioned above with a log like this one:

event LogLockCallback(uint256 amount, uint256 allowance, bytes data);

Logs

Copied above.

Environment

npm: 6.13.4
Node: v10.15.0
web3: 1.2.8
OS: PureOS 9.0

Reference

Related issue: aragon/contract-helpers#32

Metadata

Assignees

No one assigned

    Labels

    1.x1.0 related issuesInvestigateStaleHas not received enough activity

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions