Transaction의 data로 호출 당시의 argument를 디코딩해서 확인해보자.
Transaction 내용은 다음과 같이 얻는다.
const tx = ethers.provider.getTransaction("0x4e1b7e05a1a19a37a619dcd79be64669653e960db97eadc451b3999acedd7a4b")
얻은 tx.data 가 트랜잭션이 실행될 때의 data이다. 이 데이터를 ABI로부터 디코딩한다.
const abi = [
"function dasomFunction(uint32 id, uint32 size, address[] users, uint256[] amounts)"
];
const iface = new ethers.utils.Interface(abi);
const decoded = iface.decodeFunctionData("dasomFunction", tx.data);
console.log("Decoded Data:", decoded);
getContractAt 과 같이 Contract를 얻어서 다음과 같이 디코딩할 수도 있다.
const dasomContract = await ethers.getContractAt("DasomContract", "0x21a34c702BfE8d06544e557FCc06965A86365933");
const decoded = dasomContract.interface.decodeFunctionData("dasomFunction", tx.data);