colorfulnotion / polkaholic

Polkaholic - Substrate Chain Block Explorer for Polkadot/Kusama Chains and Parachains
https://polkaholic.io
GNU General Public License v3.0
31 stars 7 forks source link

EVM Tuple Decode Error #297

Closed mkchungs closed 1 year ago

mkchungs commented 1 year ago

Unable to decode the following:

[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "destinationChain",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "bridgedTokenSymbol",
        "type": "string"
      },
      {
        "components": [
          {
            "internalType": "enum ISquidMulticall.CallType",
            "name": "callType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "target",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "value",
            "type": "uint256"
          },
          {
            "internalType": "bytes",
            "name": "callData",
            "type": "bytes"
          },
          {
            "internalType": "bytes",
            "name": "payload",
            "type": "bytes"
          }
        ],
        "internalType": "struct ISquidMulticall.Call[]",
        "name": "sourceCalls",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "enum ISquidMulticall.CallType",
            "name": "callType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "target",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "value",
            "type": "uint256"
          },
          {
            "internalType": "bytes",
            "name": "callData",
            "type": "bytes"
          },
          {
            "internalType": "bytes",
            "name": "payload",
            "type": "bytes"
          }
        ],
        "internalType": "struct ISquidMulticall.Call[]",
        "name": "destinationCalls",
        "type": "tuple[]"
      },
      {
        "internalType": "address",
        "name": "refundRecipient",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "enableForecall",
        "type": "bool"
      }
    ],
    "name": "callBridgeCall",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  }
]

Autogenerated:

> encodeSelector('callBridgeCall(address,uint256,string,string,(uint8,address,uint256,bytes,bytes),(uint8,address,uint256,bytes,bytes),address,bool)', 10)
'0xc737fbc2'

*************************** 1. row ***************************
         name: CallBridgeCall
fingerprintID: 0xc737fbc2
  signatureID: 0xc737fbc2
 signatureRaw: callBridgeCall(address,uint256,string,string,(uint8,address,uint256,bytes,bytes),(uint8,address,uint256,bytes,bytes),address,bool)
    signature: callBridgeCall(address token, uint256 amount, string destinationChain, string bridgedTokenSymbol, (uint8 callType, address target, uint256 value, bytes callData, bytes payload), (uint8 callType, address target, uint256 value, bytes callData, bytes payload), address refundRecipient, bool enableForecall)
          abi: [{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"destinationChain","type":"string"},{"internalType":"string","name":"bridgedTokenSymbol","type":"string"},{"components":[{"internalType":"enum ISquidMulticall.CallType","name":"callType","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"payload","type":"bytes"}],"internalType":"struct ISquidMulticall.Call[]","name":"sourceCalls","type":"tuple[]"},{"components":[{"internalType":"enum ISquidMulticall.CallType","name":"callType","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"payload","type":"bytes"}],"internalType":"struct ISquidMulticall.Call[]","name":"destinationCalls","type":"tuple[]"},{"internalType":"address","name":"refundRecipient","type":"address"},{"internalType":"bool","name":"enableForecall","type":"bool"}],"name":"callBridgeCall","outputs":[],"stateMutability":"payable","type":"function"}]
      abiType: function
 numContracts: 1
  topicLength: 0
1 row in set (0.10 sec)

Expected: 0x8ca3bf68?

mkchungs commented 1 year ago

solved by #298

Sample: https://polkaholic.io/tx/0x6ba67b177e2f504cdc8b7846120b2a4486c3b5401385128108d868930612ca44