본문 바로가기
  • 인공지능
  • 블록체인
  • 정보보안
신기술분석/블록체인

블록체인 Dapp 만들기 #2

by nathan03 2021. 6. 25.
반응형

가. Geth로 프라이빗 노드 구축 I (제네시스 블록, 계정 생성)

단, puppeth 실행이 안될경우 Geth 설치 시, Development tools 체크하여 설치 필수

mkdir -p ~/Blockchain 명령어를 통해 폴더를 하나 생성한다. 

프라이빗 노드 만들기 이전에 블록체인의 첫번째 블록인 제네시스 블록을 만들기 위해, 노드를 초기화 하는데 필요하다. 

> cd Blockchain
> puppeth 

 

2번. Configure new genesis  메뉴를 클릭 하자.   

   

제네시스 구성 선택, 합의 알고리즘 선택 (pow or poa), 어떤 계정이 미리 eth 를 받아야하나 패스, 네트워크 아이디 정하기 
* 주의 : 네트워크 ID 선정 시 Public 네트워크에서 쓰고 있는 ID는 쓰면 안된다. (추천: 4386번)
             ( 예약어 : 1: Main 네트워크 / 2: 모던 테스트 네트워크 / 3: Ropsten / 4: Rinkeby / 42: Kovan ) 

해당 경로로 가서 제네시스 파일이 생성됐는지 확인한다. 

VScode로 code mynetwork.json  제네시스 첫 번째 블록에 내용을 확인해보자. 

생성한 제네시스 노드를 이용하여 프라이빗 노드를 초기화하자.

geth --datadir . init mynetwork.json

geth와 keystore 파일이 생성된다. 

새로운 계정 생성

  • 앞으로 만드는 새로운 계정들은 keystore에 저장된다.
  • 무작위로 새로운 이더리움 계정을 생성한다 다음 명령어로
  • geth --datadir . account new

  • 계정의 프라이빗키를 보호하기 위해 passphrash : ******** (본인 비밀번호 입력)

계정 3개 생성 확인 

  • 세 개의 이더리움 계정을 리스트로 보여주는 커맨드
  • geth --datadir . account list
  • 첫 번쨰 계정은 모든 채굴 보상금이 들어오게 된다.

프라이빗 노드를 초기화 하기 위한 제네시스 블록 및 계정 생성 끝 

나. Geth로 프라이빗 노드 구축 II (노드 첫 실행, DAG 파일 생성)

code nodestart.cmd  실행

geth --networkid 4386 --mine --minerthreads 2 --datadir "./" --nodiscover --rpc --rpcport "8545" --rpccorsdomain "*" --nat "any" --rpcapi eth,web3,personal,net --unlock 0 --password ./password.sec

위 명령어는 geth 버전업으로 인하여 더 이상 실행이 안된다. Geth 명령어에 맞게 수행될수 있도록 명령어 확인 !!

code password.sec  실행

계정 패스워드 입력 

 ./nodestart.cmd

< Geth 명령어 트러블 슈팅 > 

오류 : flag provided but not defined: -minerthreads 오류 발생 

해결 : 이더리움 신규 버전에서 --miner.threads 로 변경 되었음 

오류 : Fatal: Account unlock with HTTP access is forbidden!

해결 : --unlock부분에 --allow-insecure-unlock 로 변경 되었음

위 오류 해결 후 node 정상 실행 !! DAG 파일 생성 진행 ~ 

geth --networkid 4386 --mine --miner.threads 2 --datadir "./" --nodiscover --rpc --rpcport "8545" --rpccorsdomain "*" --nat "any" --rpcapi eth,web3,personal,net --allow-insecure-unlock --password ./password.sec

geth --networkid 4386 --allow-insecure-unlock --datadir ./ --port 30303 --http --http.addr "0.0.0.0" --http.port 8545 --http.corsdomain "*" --http.api "admin,db,eth,debug,miner,net,shh,txpool,personal,web3"

다. Geth로 프라이빗 노드 구축 III (Geth 콘솔)

geth attach ipc:\\.\pipe\geth.ipc

geth attach rpc:http://localhost:8545

반응형

댓글