graph-node icon indicating copy to clipboard operation
graph-node copied to clipboard

[Bug] Decode the input data of tx

Open MHarisAshfaq opened this issue 1 year ago • 2 comments

Bug report

I am trying to debug the input data from tx https://arbiscan.io/tx/0x005bc2cc2715a77d8ac20524789a99bc05ca4048a3c9d78c5ad525c7139df9cf

This is my input data which I am using to decode 00000000000000000000000000000000000000000000000000000000000065f40000000000000000000000000000000000000000000000000000000000000276000000000000000000000000000000000000000000000000000000000000010016e3850080805d39bdb096fc08bf0041480292473fadfb4c72009291f11eb15f00000000000000000000000000000000000000000000000000000000000001202beda7a630edebbcad1bc24cd1f90a077ec6cda82c3771a387de0a7d903198da0000000000000000000000000000000000000000000000000000000066e0863d00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000603d4f93a04a08ef38ccafd24c35084ecd0007810c986f677c6631b39c871ff0284c3ce5c5e58d837242f1bac4ad70fc63a378a98b69d24aadf3f44b4fc3dabcfd1b00000000000000000000000000000000000000000000000000000000000000

let decoded = ethereum.decode(
        "(uint256,uint256,uint256[],bytes32,address[],bytes32,uint64,bytes)",
        tx.input
      );

And here is the abi of function

{
    "inputs": [
      { "internalType": "uint256", "name": "remoteChainId", "type": "uint256" },
      { "internalType": "uint256", "name": "blockNonce", "type": "uint256" },
      {
        "internalType": "uint256[]",
        "name": "invalidBlockNonces",
        "type": "uint256[]"
      },
      {
        "internalType": "bytes32",
        "name": "finalizersHash",
        "type": "bytes32"
      },
      {
        "internalType": "address[]",
        "name": "finalizers",
        "type": "address[]"
      },
      { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
      { "internalType": "uint64", "name": "expiry", "type": "uint64" },
      { "internalType": "bytes", "name": "multiSignature", "type": "bytes" }
    ],
    "name": "finalize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }

It seems decoding is not working.

Relevant log output

No response

IPFS hash

0x005bc2cc2715a77d8ac20524789a99bc05ca4048a3c9d78c5ad525c7139df9cf

Subgraph name or link to explorer

https://api.studio.thegraph.com/query/79955/test/v0.0.61

Some information to help us out

  • [ ] Tick this box if this bug is caused by a regression found in the latest release.
  • [X] Tick this box if this bug is specific to the hosted service.
  • [X] I have searched the issue tracker to make sure this issue is not a duplicate.

OS information

macOS

### Tasks

MHarisAshfaq avatar Sep 12 '24 14:09 MHarisAshfaq

Thanks for opening an issue @MHarisAshfaq!

In this case, the type string you're specifying:

"(uint256,uint256,uint256[],bytes32,address[],bytes32,uint64,bytes)"

is for a tuple which contains dynamically sized array/bytes elements (uint256[], bytes, etc). Dynamic tuples like this expect the input data to be prepended with a 32 byte offset representing where the inner data begins.

You can try prepending the block with 0000000000000000000000000000000000000000000000000000000000000020; the number 32 itself encoded as a 32-byte hex string. This should result in a valid block:

000000000000000000000000000000000000000000000000000000000000020 <-- Note this extra 32 byte offset
000000000000000000000000000000000000000000000000000000000000065
f40000000000000000000000000000000000000000000000000000000000000
276000000000000000000000000000000000000000000000000000000000000
010016e3850080805d39bdb096fc08bf0041480292473fadfb4c72009291f11
eb15f0000000000000000000000000000000000000000000000000000000000
0001202beda7a630edebbcad1bc24cd1f90a077ec6cda82c3771a387de0a7d9
03198da00000000000000000000000000000000000000000000000000000000
66e0863d0000000000000000000000000000000000000000000000000000000
000000140000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000
0000000000603d4f93a04a08ef38ccafd24c35084ecd0007810c986f677c663
1b39c871ff0284c3ce5c5e58d837242f1bac4ad70fc63a378a98b69d24aadf3
f44b4fc3dabcfd1b00000000000000000000000000000000000000000000000
000000000000000

This should successfully decode.

encalypto avatar Oct 16 '24 02:10 encalypto

Looks like this issue has been open for 6 months with no activity. Is it still relevant? If not, please remember to close it.

github-actions[bot] avatar Apr 22 '25 00:04 github-actions[bot]