Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.
This repository was archived by the owner on Mar 5, 2025. It is now read-only.

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

@bingen

Description

@bingen

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

Metadata

Assignees

No one assigned

    Labels

    1.x1.0 related issuesInvestigateStaleHas not received enough activity

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions