[Solidity] Event Logs(eth_getLogs) 보는 법steemCreated with Sketch.

이더리움 API 중 eth_getLogs 의 사용법에 대해서 알아 봅니다.

eth_getLogs는 특정 컨트랙트의 이벤트를 조회하는 기능인데요.
API를 호출해보면 아래와 같은 JSON 형태로 표시가 됩니다.

이렇게만 보면 어떤 event가 호출 된 건지 알아보기가 힘듭니다.
그래서 어떤 event 인지 알아내기 위해서는 Topics의 첫번째 값(Event Signature)을 참조 하면 됩니다.

이벤트 이름 알아내기

  • 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef topics의 첫번째 변수인데, 이 값은 이벤트(파라미터) 값을 Keccak-256 으로 변환한 값을 나타내는 것입니다.

  • 참고로 ERC-20과 ERC-721의 Transfer 이벤트는 동일한 Event Signature를 가집니다.

  • 예를 들면..
    Transfer(address,address,uint256) => 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

  • 이렇게 Transfer 이벤트가 Topics의 첫번째 값으로 변환하여 표시되게 되어 있습니다.

  • Topics 의 두번째 값 부터는 이벤트의 parameter 값에 indexed로 설정된 값들이 순서대로 들어갑니다.

  • ex) Transfer(address indexed _from, address indexed _to, uint256 _value)인 경우 indexed로 설정된 _from, _to 값이 topics의 두번째 배열부터 차지하게 됩니다.

  • indexed가 아닌 파라미터의 경우에는 "data" 변수에 들어가게 됩니다.
    "data": "0x00000000000000000000000000000000000000000000000001aa535d3d0c0000",

indexed

  • topics에 값이 들어가 있는 경우에는 filter가 가능합니다.
  • ex) Transfer 이벤트만 조회
// eth_getLogs 호출 json
{ "jsonrpc":"2.0", "method":"eth_getLogs","id":1, "params":[{
    "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}] }
  • 추가로 특정 _from/_to 값을 얻기 위해서는 topics 배열에 값을 추가하면 됩니다.

alchemy api(alchemy_getAssetTransfers)

  • alchemy에서 제공하는 transfer api
  • 단, 제약사항이 있습니다.

최대 1만개
2000개 블록 범위 이내
150MB 이하만 호출 가능

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

This post has been upvoted by @italygame witness curation trail


If you like our work and want to support us, please consider to approve our witness




CLICK HERE 👇

Come and visit Italy Community



hey @happyberrysboy please visit my website n give good upvotes will do the same for you. :)

랜덤추천작가와 관심작가(2023-01-13)
https://www.steemit.com/@veryhappyday/-2023-01-13

@veryhappyday님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.

해적 코인(PIR) 재단 재정 상황 1/14 (2023)
https://www.steemit.com/@pircoin/pir-114-2023

@pircoin님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.

Steem Trending Overview / 2023-01-14 / Top 75 Posts By Interaction Score
https://www.steemit.com/@realrobinhood/steem-trending-overview-2023-01-14-top-75-posts-by-interaction-score

@realrobinhood님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.

Coin Marketplace

STEEM 0.20
TRX 0.15
JST 0.030
BTC 64884.95
ETH 2619.31
USDT 1.00
SBD 2.82