728x90
지난 포스팅에 이어 온체인 분석을 이어가겠습니다!!
오늘의 핵심은!! 아래 파이썬 함수입니다!
def is_contract_address(address):
"""
주어진 주소가 스마트 계약인지 여부를 확인하는 함수
:param address: 확인할 주소
:return: True(스마트 계약), False(지갑)
"""
# 주소가 이더리움 주소 형식인지 확인
if not Web3.is_address(address):
return False
# raise ValueError("Invalid Ethereum address")
# 주소에 대한 코드를 가져옴
code = web3.eth.get_code(address)
# 스마트 계약 주소의 코드 길이는 2보다 큼 (Paying contract는 1일수도 있음)
return len(code) > 2
# 예시: 주소가 스마트 계약인지 여부 확인
address = "0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401"
if is_contract_address(address):
print("Smart Contract")
else:
print("Wallet")
위 함수가 무슨뜻인가하면, block의 ETH 수신 주소가 이더리움 지갑인지 혹은 스마트컨트랙트 주소인지를 확인하는 함수입니다!
이를 통해서!! 블록 내 transaction 정보가 smart contract 였는지 혹은 단순 eth 송금이었는지를 확인해볼 수 있습니다!
한번 19272508 블록의 내부 거래정보를 펼처볼까요~?
block_time = from_timestamp_to_seoul(block.timestamp)
key_l = []
from_l = []
to_l = []
value_l = []
gas_price_l = []
smartcontract_yn_l = []
block_number = 19272508
block_number
block = web3.eth.get_block(block_number)
# Print block details
print("Block Number:", block['number'])
print("Block Hash:", block['hash'])
print("Transactions in this block:")
for tx_hash in block['transactions']:
tx = web3.eth.get_transaction(tx_hash)
key_l.append(tx['hash'])
from_l.append(tx['from'])
to_l.append(tx['to'])
value_l.append(web3.from_wei(tx['value'], 'ether'))
gas_price_l.append(web3.from_wei(tx['gasPrice'], 'gwei'))
smartcontract_yn_l.append(is_contract_address(tx['to']))
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")
if is_contract_address(tx['to']):
print("<<<<<<<<<<<<<SMART CONTRACT >>>>>>>>>>>>>")
else:
print("<<<<<<<<<<<<<SEND TOKEN >>>>>>>>>>>>>")
df = pd.DataFrame()
df['key'] = key_l
df['block_time'] = block_time
df['from'] = from_l
df['to'] = to_l
df['value'] = value_l
df['gas_price'] = gas_price_l
df['smartcontract_yn'] = smartcontract_yn_l
df
이를 통하여!!
19272508 의 91개 거래 중 87개가 Smart Contract 였음을 확인할 수 있습니다~!^^
728x90
'블록체인 > On Chain Analysis' 카테고리의 다른 글
[On-Chain 데이터분석] 이더리움 네트워크의 가스비 트렌드 확인 (feat python, web3) (0) | 2024.02.21 |
---|---|
[On-Chain 데이터분석] ETH 블록 내 모든 transaction 확인하기(python, web3 ,eth, 온체인분석) (0) | 2024.02.21 |
댓글