Event log 데이터 확인

안녕하세요.

websocket subscribe 을 통해서 특정 이벤트 로그 데이터를 받아보려고 합니다.
이벤트 로그를 수신하는것까지는 성공했는데요. 이 이벤트 로그를 abi에 정의된 Input Data를 추출할수 있는 방법이 있을지 궁금합니다.


{ “address”: “0xd60250ab28646c4b04762079bf01399350b4b9f6”, “topics”: [ “0x2d4b597935f3cd67fb2eebf1db4debc934cee5c7baa7153f980fdbeb2e74084e”, “0x000000000000000000000000457939bcedda7fdb80ca8b21b053aca8cd771b2b” ], “data”: “0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000c45536341414141414141413d0000000000000000000000000000000000000000”, “blockNumber”: “0x6cf9122”, “transactionHash”: “0x7f40ab891622228b59eac4d44f07288841346c481adaf5da7a3d73fa35e8eace”, “transactionIndex”: “0x0”, “blockHash”: “0xfc2c185180a7c340064d6992422ed11c44c9db40a4bf5646c7e71920369bff7b”, “logIndex”: “0x1”, “removed”: false }

event Deposit(address indexed _to, string _hash, uint256 amount);

_to indexed로 정의되어서 값을 알수 있는데 _hash, amount 값을 구하고자 합니다.

혹은 solidity의 이벤트 정의에서 string타입을 indexed로 할수 있는 방법이 있는지 궁금합니다.

안녕하세요, 이벤트 로그를 확인할 때, string indexed _hash를 사용하시면 topic에 string 형태가 아닌 keccak256 해시 값이 나오게 됩니다.
예를 들어, Hello라는 string을 이벤트로 확인한다면 keccak256(abi.encodePacked(“Hello”))값인 0x06b3dfaec148fb1bb2b066f10ec285e7c9bf402ab32aa78a5d38e34566810cd2로 확인가능합니다.

해시는 one-way이기 때문에 원본 string을 확인하실 순 없습니다. (만약 사용하시는 _hash가 미리 정의된 string중 하나의 결과값이라면, 수작업으로 비교해볼 순 있을 것 같습니다.)

uint256는 indexed를 붙여 topic 내에서 확인하실 수 있습니다.