¿Obtener información del contrato a partir de la información de la transacción?

Esta podría ser una pregunta simple. Digamos que tengo el hash de transacción:

{
  blockNumber: "6214286",
  timeStamp: "1535248365",
  hash: "0x144018f7327b3990124762d1aefececff3897755ce15313e662f2c5699aaaca1",
  nonce: "5",
  blockHash: "0x6bd409190b38364611b96006ead9f2281262e8d4b71cd712e528c7459d56962f",
  transactionIndex: "135",
  from: "0x446252b54d626cf4192e5c74545761dfaf7e5a50",
  to: "0xb1690c08e213a35ed9bab7b318de14420fb57d8c",
  value: "2000000000000000",
  gas: "148770",
  gasPrice: "1400000000",
  isError: "1",
  txreceipt_status: "0",
  input: "0x454a2ab300000000000000000000000000000000000000000000000000000000000d1596",
  contractAddress: "",
  cumulativeGasUsed: "4423724",
  gasUsed: "22540",
  confirmations: "189517"
}

¿Hay alguna manera de obtener qué función de contrato se llamó con qué parámetros?

Tengo el contrato ABI y la dirección.


Más información:

He intentado obtener el tokenId de CryptoKitty de la transacción anterior. Voy a esta transacción consultando Etherscan con mi cuenta y filtro en el destino "a" que se asigna al contrato de subasta de CryptoKitty (CryptoKittiesSalesAuction).

Respuestas (2)

Sí tu puedes.

La información que necesitas está aquí:input: "0x454a2ab300000000000000000000000000000000000000000000000000000000000d1596",

Los primeros 4 bytes es lo que necesita para encontrar la función que se llamó. Se llama ID DE MÉTODO. Tienes un ejemplo aquí

Esto se deriva como los primeros 4 bytes del hash Keccak de la forma ASCII de la firma

Y el parámetro es00000000000000000000000000000000000000000000000000000000000d1596

En su contrato inteligente, puede encontrar la identificación del método usando .selector

por ejemplo, para esta función setup(), function setup() external onlyOwnerobtiene la identificación del método haciendo esto: this.setup.selector

Pruebe el decodificador ethereum abi https://www.npmjs.com/package/ethereum-input-data-decoder Puede decodificar los datos de entrada usándolo.