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).
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 onlyOwner
obtiene 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.