본문 바로가기
  • 개발 / 공부 / 일상
BlockChain

(BlockChain) IPC

by JJeongHyun 2023. 2. 9.
반응형

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 결과

ubuntu 내의 eth.accounts 결과 화면

  • getBlock(genesis)

ubuntu 내의 getBlock(genesis)

 

  • getBlock("latest")

ubuntu getBlock("latest") 결과 화면

 

  • 트랜잭션을 보내기 위해서 계정 잠금 풀기
geth --datadir ~/myGeth --unlock "지갑 주소"

'BlockChain' 카테고리의 다른 글

(BlockChain) MetaMask  (0) 2023.02.09
(BlockChain) RPC  (0) 2023.02.09
(BlockChain) Geth & Go 설정  (0) 2023.02.09
(BlockChain) WSL  (0) 2023.02.09
(BlockChain) VM & Kernel  (0) 2023.02.09