📈EVM 기반 온체인 데이터 이해하기
Twitter 원문 읽기Dune과 같은 SQL 기반 온체인 데이터 분석 플랫폼을 처음 시작할 때, 큰 허들은 4가지인 것 같습니다. (1) 데이터의 접근성 (2) SQL 문법 (3) 지표 (4) 시각화 방법론. 이번에는 데이터에 대해 간단하게 설명해보려고 합니다.
이더리움을 포함하여 EVM 기반 데이터는 대부분 유사한 형태로 저장됩니다. 그렇기에 EVM 기반 데이터의 기본적인 형태만 알아도 Dune에서 데이터를 찾는 것이 상당히 쉽습니다. 한 번 같이 살펴봅시다.[ethereum.transactions ethereum.blocks]low-level에서 이더리움 데이터는 어떻게 생성되나요? 간단하게 설명하면-(1) 트랜잭션 생성(송금할 주소, 금액, 가스 등 설정) (2) 지갑의 개인키를 통한 트랜잭션 서명 (3) 트랜잭션 전송 (4) 노드에서 트랜잭션 검증 및 선택 후 블록 생성- 과정을 거칩니다. 이 과정의 트랜잭션과 블록 정보는 이더스캔에서 보는 데이터와 거의 같게 저장됩니다.[ethereum.logs, CallTable]트랜잭션이 컨트랙트와 상호작용하게 되는 경우 2가지 추가 데이터를 확인할 수 있는데 (1) 컨트랙트에 작성되어 있는 Event 데이터 (2) 컨트랙트 함수 호출이라면 FunctionCall. ethereum.log 데이터에는 이런 event 기록이 모두 저장되어 있습니다. FunctionCall의 경우, Dune에 제출된 컨트랙트 별로 CallTable을 확인할 수 있습니다. 없다면 Dune에 제출도 가능합니다![ethereum.traces]EOA(Externally Owned Account)-EOA, EOA→CA(Contract Account)로 보내는 경우가 아닌 EOA-CA-EOA나 EOA-CA-CA-EOA 등의 여러 과정을 거치는 경우에 첫 tx 외는 Internal Txs라 합니다. transactions에 기록되는 것이 아니고, traces에서 observe할 수 있습니다. 이런 데이터는 ethereum.traces에 기록됩니다. Dune에서는 보통 transactions 데이터를 기준으로 여러 지표를 계산하나 보다 정확한 계산을 위한 traces가 필요할 수 있습니다.[erc20_ethereum.evt_Transfer]근데 erc20/721/1155 등은 표준이 정해있으니 FunctionCall이나 Event에 대해 쉽게 추상화 테이블을 만들 수 있죠. 쉽게는 approve/transfer, from/to, amount, tokenId 정보가 제공되며, 이를 통해 거래량/거래 수 등 다양한 분석을 할 수 있습니다.[dex.trades, nft.trades]그리고 위의 데이터를 조합하여 각 dex와 nft marketplace 별로 데이터를 묶어놓은 데이터셋도 존재합니다. 다만 이 데이터를 사용할 때 새롭게 생겼거나 유동성이 적은 Protocol은 포함되어 있지 않을 수 있으니 DefiLlama 등의 다양한 데이터를 통해 데이터를 살펴보시기 바랍니다.[prices.usd]가격 오라클을 통해 받아온 가격 데이터입니다. 다만 마찬가지로 적은 거래량을 가진 토큰의 가격은 불러오지 못할 수 있으니 참고바랍니다. 특히 새로 생긴 밈코인을 분석할 때는 가격 데이터가 없을 수 있습니다. 이런 경우 dexscreener 등을 활용하여 여러 분석을 해보는 것을 추천합니다.
도움이 되었길 바라며, 기회가 되면 SQL 기본 문법으로 돌아오겠습니다👋
346
9