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

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

by 일등박사 2022. 8. 14.

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


최근!! GETH를 활용하여 private block chain을 개발하고 DApp을 만드는데 한창입니다!!

이떄 많이 활용되나 잘 정리된 자료가 없던,

 

GETH에 API로 데이터 받아오기를

Python 방식으로 하는 방법에 대하여 공유하고자합니다!!

 

1. 우선 private Ethereum blockchain Node가 필요합니다!!

 여기에는 두가지 방법이 있는데요!! 

GETH를 활용하여 나만의 private block chain을 만들어 활용하는 것과, 

가장 쉬운 가나슈 사용하기 방법이있습니다!!

 

이번 포스팅에서는 가나슈를 활용하여 알아보겠습니다!!

그래서 가나슈를 실행하였습니다!!

 

실행된 가냐슈, HTTP://127.0.0.1:8545 에 접속중

2. jupyter notebook으로 Python 환경 접속

여러분이 익숙하실 jupyer notebook으로 Python환경을 만들어줍니다!

필요한 package는 requests와 json !!

import requests
import json

3. request를 통하여 데이터 불러오기 (Wallet 정보)

이제 데이터를 불러와보겠습니다!!!

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)

결과는 아래와 같이 나오는데요!!

가나슈에서 보였던 지갑주소와 동일함을 확인할 수 있습니다!!

 

4. request를 통하여 Wallet 만들기

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":"personal_newAccount","params":["mypassword"],"id":1}')

json.loads(res.text)

위와 같은 코드를 입력합니다!!

 

가나슈의 로그를 보면 새로운 계정이 생성되었음을 알 수 있습니다!!

 

 

5. 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_blockNumber","params":[],"id":1}')

json.loads(res.text)

과연 몇개의 블록이있을까요?

 

결과는 16진수로 return 됩니다!! 0개의 블록이 있네요!!

6. 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":"miner_start","params":[],"id":1}')

json.loads(res.text)

 

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":"miner_stop","params":[],"id":1}')

json.loads(res.text)

위 코드와 같이 miner_start와 miner_stop을 통하여 채굴 시작/종료를 해보았습니다!!

 

 

가나슈의 로그에 채굴시작/종료 명령어가 잘 반영되었음을 알 수있습니다!!^^

 

어떄요!? 이 외에도 다양한 함수들을 사용할수 있습니다!

https://ethereum.org/en/developers/docs/apis/json-rpc/

 

Home | ethereum.org

Ethereum is a global, decentralized platform for money and new kinds of applications. On Ethereum, you can write code that controls money, and build applications accessible anywhere in the world.

ethereum.org

위의 사이트에 함수들이 잘 소개가 되어있습니다!!

 

다음 포스팅에서는,

request를 사용할수도 있지만!!

더욱 쉽게 블록체인에 접속할수 있는

web3 package들에대하여 알아보겠습니다!!!

(import  web3 면 끝!!!)

 

감사합니다.

댓글