본문 바로가기
블록체인/On Chain Analysis

[On-Chain 데이터분석] ETH 블록 내 모든 transaction 확인하기(python, web3 ,eth, 온체인분석)

by 일등박사 2024. 2. 21.
728x90

온체인데이터분석!! 

블록체인의 특징중 하나가 모든 거래내역(원장)이 공개된다는점인데요!

이에 이 공개된 원장을 기반으로 분석을 하는 것을 온체인 데이터 분석이라고 합니다!

이런분석을 통하여 아래와 같은 기사가 나기도하지요!!

 

https://m.coinreaders.com/98828

 

[코인리더스] 특정 고래, 이더파이에 $1,299만 ETH 입금

  온체인 애널리스트 @ai_9684xtpa가 X를 통해 `특정 이더리움(ETH) 고래 주소가 20분전 바이낸스에서 4500 ETH를 출금해 이더파이(ether.fi)에 입금했다. 이는 약 1,299만 달러 규모`라고 분석했다. 또한 해

m.coinreaders.com

 

이번 포스팅은 이 온체인 데이터 분석의 기본,

블록 내의 Transaction 정보 보기를 알아보겠습니다!


1. 관련 패키지 호출

  > 분석에 필요한 패키지들을 호출합니다.

from web3 import Web3
import requests
import json
from decimal import Decimal


ETH_ADR = "https://rpc.ankr.com/eth"

 

2. 관련 함수선언

  > 이더리움의 블록에는 timestamp 형식으로 시간이 저장되어있습니다.

  > 이에 서울시간으로 변형하는함수를 만들어줍니다!

from pytz import timezone, utc

def from_timestamp_to_seoul(timestamp):
     # Assuming timestamp is in UTC
    gmt_minus_9_tz = timezone('Asia/Seoul')
    target_format = "%Y%m%d-%H%M%S"

    utc_datetime = datetime.datetime.utcfromtimestamp(timestamp)
    seoul_datetime = utc_datetime.astimezone(gmt_minus_9_tz)
    formatted_date = seoul_datetime.strftime(target_format)

    return formatted_date

 

3. 대상 블록번호를 설정하고, 해당 블록에서  거래정보 추출

### 기존 계정조회하기 USING Web3
web3 = Web3(Web3.HTTPProvider(ETH_ADR))

## 최근 10번째 블록을 대상으로!
block_number = web3.eth.block_number -10
block_number

block = web3.eth.get_block(block_number)
block_time = from_timestamp_to_seoul(block.timestamp)

print("Block Number:", block['number'])
print("Block Time:", block_time)
print("Block Hash:", block['hash'])
print("Transactions in this block:")
for tx_hash in block['transactions']:
    tx = web3.eth.get_transaction(tx_hash)
    print("Transaction Hash:", tx['hash'])
    print("From:", tx['from'])
    print("To:", tx['to'])
    print("Value:", web3.from_wei(tx['value'], 'ether'), "ETH")
    print("Gas Used:", tx['gas'])
    print("Gas Price:", web3.from_wei(tx['gasPrice'], 'gwei'), "Gwei")

 

 

 

블록 내의 모든 거래데이터가 잘 추출됨을확인할 수 있습니다~!

 

 

728x90

댓글