본문 바로가기
블록체인/[파공이]파이썬으로 공부하는 이더리움(Web3)

[web3] Python Web3.py 패키지를 활용하여 데이터 주고받기!

by 일등박사 2022. 8. 17.

2022.08.13 - [일등박사의 생각/데이터분석] - [이더리움] Private Block Chain vs Public Block Chain
2022.08.13 - [일등박사의 생각/데이터분석] - [GANACHE] 가나슈 설치하기!!! (Python api 연결준비)

2022.08.14 - [일등박사의 생각/블록체인] - [GETH]API를 활용, PYTHON으로 ganache의 데이터 불러오기!!

 

[GETH]API를 활용, PYTHON으로 ganache의 데이터 불러오기!!

2022.08.13 - [일등박사의 생각/데이터분석] - [이더리움] Private Block Chain vs Public Block Chain 2022.08.13 - [일등박사의 생각/데이터분석] - [GANACHE] 가나슈 설치하기!!! (Python api 연결준비) 최근!!..

drfirst.tistory.com

 


지난 포스팅에이어 Python을 활용하여 이더리움 네트워크와 데이터를 주고 받는 법을 연습해보고자합니다!!

쉽게 나만의 Private 이더리움 환경을 구축하고자!

오늘도 GANACHE(가나슈)의 힘을 빌립니다1!

가나슈 켜고
환경 준비 끝!!!


지난 포스팅에서는 Python Request 패키지를 사용했었는데요@

오늘은 이더리움 네트워크에 최적화된!!!

Web3라는 패키지를 사용할 것입니다!!

 

우선 환경에 pip 로 인스톨이 되어야겠지요!

 

web3 설치는 참 간단하게 잘되더라구요!^^

pip install web3

 

설치가 끝났으면 이제 파이썬 환경에서 

 package를 불러온뒤, 간단히 계정 조회하기를 테스트해봅니다!!

from web3 import Web3

# 가나슈에서 제공되는 주소
BLOCKCHAIN_ADR = "HTTP://127.0.0.1:8545"

### 기존 계정조회하기 USING Web3
w3 = Web3(Web3.HTTPProvider(BLOCKCHAIN_ADR))
w3.eth.accounts

어떄요!?? 계정정보가 잘 불러와지나요!??

 

가나슈에서 보이는 계정정보가 동일하게 불러와짐을 확인할 수 있습니다.

 

 

지난 포스팅의 request를 사용한것과도 똑같구요!

import requests
import json

blockchain_network = "http://127.0.0.1:8545"

res = requests.post(
    blockchain_network, 
    headers = {"Content-Type":"application/json"}, 
    data = '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}')

json.loads(res.text)

 

즉 Web3는 이더리움 네트워크에 api Request로 주고받을 데이터를

쉽고 깔끔하게 요약해서 정리한 패키지라고 생각하시면 됩니다!!

 

그럼 web3를 활용한 몇가지 예시를 더 알아보아요!!

 

 

1. 계정 잔고 조회하기!!

from web3 import Web3
BLOCKCHAIN_ADR = "HTTP://127.0.0.1:8545"

### w3로  comnnection 만들기
w3 = Web3(Web3.HTTPProvider(BLOCKCHAIN_ADR))

## accounts 리스트중 가장 마지막에 생성된 지갑의 잔고를 조회한다
w3.eth.getBalance(w3.eth.accounts[-1])

 

2. WEI에서 ETHER로 단위 변환하기

from web3 import Web3
BLOCKCHAIN_ADR = "HTTP://127.0.0.1:8545"

### w3로  comnnection 만들기
w3 = Web3(Web3.HTTPProvider(BLOCKCHAIN_ADR))

## WEI에서 이더로 단위 변환하기 
Web3.fromWei(w3.eth.getBalance(w3.eth.accounts[-1]), 'ether')

 

3. 채글하기!!

import time
from web3 import Web3
BLOCKCHAIN_ADR = "HTTP://127.0.0.1:8545"

### w3로  comnnection 만들기
w3 = Web3(Web3.HTTPProvider(BLOCKCHAIN_ADR))

## 채굴 5초간 하기
w3.geth.miner.start()
time.sleep(5)
w3.geth.miner.stop()

 

4.  송금하기

가나슈에서 열쇄를 누르면 비밀호 확인 가능!!

import time
from web3 import Web3
BLOCKCHAIN_ADR = "HTTP://127.0.0.1:8545"

### w3로  comnnection 만들기
w3 = Web3(Web3.HTTPProvider(BLOCKCHAIN_ADR))

## 비번보는법은 위의 사진 참고!!
w3.geth.personal.unlock_account(w3.eth.accounts[1], "9b8acf58aae15520daac7cfd299592bf092c162ad5655c69626c2f4e132e9d8a", duration=None)

w3.eth.send_transaction({
  ## 마지막 계정에서
  'to': w3.eth.accounts[-1],
  ## 2번쨰 계정으로
  'from': w3.eth.accounts[1],
  ## 1이더 보내기
  'value': Web3.toWei(1, 'ether')
})

## 이후 채굴을 해야 거래가 채결됨!!
w3.geth.miner.start()
time.sleep(5)
w3.geth.miner.stop()

송금된 잔고
생성된 블럭

 

이상으로 web3를 활용한 기능들을 알아보았습니다@

 

이 외에도 어마어마한 기능이 많은데!!

아래의 웹사이트에서 다양한 기능들을 찾아서 사용해볼 수있습니다!^^

https://web3py.readthedocs.io/en/stable/

 

Introduction — Web3.py 5.30.0 documentation

© Copyright 2018, Piper Merriam, Jason Carver Revision ee5f0543.

web3py.readthedocs.io

 

댓글