BlockChain
(BlockChain) IPC
JJeongHyun
2023. 2. 9. 18:21
반응형
IPC
- Inter Process Communication의 약자로 프로세스 간의 통신을 뜻
- Process는 컴퓨터에서 실행되고 있는 프로그램을 의미
IPC 통신 전 개인 이더리움 서버 생성
- genesis.json 파일을 만들어서 기본 설정을 해준다
{ "difficulty": "200000", "gasLimit": "3100000", "alloc": { "개인 메타마스크 지갑 주소": { "balance": "100000000" } }, "config": { "chainId": 50, "homesteadBlock": 0, "eip150Block": 0, "eip155Block": 0, "eip158Block": 0 } }
- difficulty : 문제의 난이도
- gasLimit : 블록당 가스 지출 제한량
- alloc : genesis 블록 생성 시 지갑에 보상 지급 ( 빈 객체로, 즉 비어둔 값이여도 상관없다 )
- config
- chainId : 블록체인 네트워크 식별 ID
- homesteadBlock : 이더리움 버전
- eip는 Ethereum Improvement Proposal의 약자로 기본값은 0
- 이더리움 핵심 프로토콜 사양 등의 표준을 설명
# 개인 이더리움 네트워크 생성
geth --datadir myGeth init genesis.json
- myGet 폴더에 생성되고 그 안에 아래와 같이 폴더와 파일이 생성
├── geth
│ ├── LOCK
│ ├── chaindata : 블록 헤더 내용과, 블록 바디의 트랜잭션 내용 파일이 저장
│ ├── lightchaindata
│ └── nodekey
└── keystore : geth가 갖고있는 계정 정보가 저장
- 생성된 개인 이더리움 네트워크 실행
geth --datadir ~/myGeth
- geth로 열어둔 서버에 접근하는 명령어
geth attach ~/myGeth/geth.ipc
- IPC 연결 후에 사용하는 명령어들은 Javascript 기준의 객체와 같다
eth.getBalance("원하는 지갑의 주소") # => 지갑의 돈을 받아 출력한다
# 10000000
eth.getBlock(0) # 제네시스 블록 출력
web3.fromWei(eth.getBalance("원하는 지갑의 주소"), 'ether')
# 1e-10
eth.accounts; # Geth가 갖고있는 계정 배열
miner.setEtherbase(eth.accounts[0]); # 채굴할 때 보상 받을 계정으로 0번째 계정을 받을 계정으로 설정
eth.coinbase; # 현재 채굴 보상을 받는 계정을 확인한다
miner.start(); # 채굴 시작
miner.stop(); # 채굴 중단
eth.getBlock("latest"); # 마지막 블록을 가져온다
eth.getBalance(eth.accounts[0]);
web3.fromWei(eth.getBalance(eth.accounts[0]), "ether");
eth.sendTransaction({
from: eth.accounts[0],
to: eth.accounts[1],
value: web3.toWei(1, "ether"),
}); # 계정 잠금 해제 후 보내기 가능
- eth.accounts 결과
- getBlock(genesis)
- getBlock("latest")
- 트랜잭션을 보내기 위해서 계정 잠금 풀기
geth --datadir ~/myGeth --unlock "지갑 주소"