안녕하세요 skkrypto 3.5기 박유정입니다.
저번 시리즈때 도커 허브에 대해서 말씀드렸죠? 다시 말씀드리자면 도커허브는
" 본인이 생성한 image를 docker hub를 통해 다른 사람들과 공유할 수 있도록 해주는 곳" 입니다.
geth를 바로 운영체제에 설치해도 되지만 에러가 많이 날 수 있기 때문에 저희는 geth 이미지를 다운받아 이더리움 네트워크 구축을 해볼 예정입니다.
Geth 1.90 버전이 설치된 이미지 다운을 받습니다. 도 커 이미지만 도커 허브에서 다운 받으면 쉽게 구동이 가능합니다.
$ docker pull pjt3591oo/ethereum-geth:1.90 v
$ docker images
p옵션? 포트 포워딩을 의미하는데 호스트 시스템으로 8545, 30303 포트 번호로 들어온 요청을 컨테이너의 8545, 30303 포트번호로 넘겨주는 역할을 합니다
p옵션으로 포트 포워딩을 하지 않으면 어떻게 될까요?? 해당 컨테이너를 제외한 모든 곳에서 접속할 수 없습니다!
$ docker run –it –name ethereum.geth.com –p 8545:8545 –p 30303:30303 pjt3591oo/Ethereum-geth:1.90 /bin/bash
위의 빨간색 박스로 친 구문을 실행시켜 주시고
다음과 같은 구문을 칩니다.
$ mkdir node1
$ cd node1
$ geth --datadir $PWD account new
당연히 여러분들도 아시겠지만 mkdir는 폴더를 만드느것이고 cd는 해당 폴더를 들어가는 명령어겠죠??
이후 geth --datadir $PWD account new는 현재 폴더에 계정을 생성한다는 의미입니다.
계정생성 후 비밀번호를 입력하라고 나오면, 비밀번호를 입력하고 이떄 생성된 계정이 출력되게 됩니다.
$ls를 입력하면 keystore이라는 파일이 나옵니다.
keystore이란? 3번에서 생성한 계정입니다. 이 파일은 비밀번호로 보호하기 때문에 개인키(private key)보다 보안측면에서 더 좋은것으로 알려져 있습니다. 비밀번호와 함께 개인키를 만들어주는 내용을 포함하고 있는 파일이죠. 이때 비밀번호를 입력해야하는데, 비밀번호와 키스토어 내용을 조합하여 개인키(private key)를 복구하는 역할을 합니다!
다음 genesis.json파일은 제네시스 블록을 만들기 위한 제네시스 파일입니다.
여기서 중요한 점은 alloc입니다. 앞에서 우리가 생성한 계정 주소를 넣어주면 됩니다!
genesis.json
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "20",
"gasLimit": "2100000",
"alloc": {
"각자의 계정 주소 ": { "balance": "300000" }
}
}
하단에 그림에는 보기 힘들지만 다음과 같은 코드를 입력합니다
$cd ~/
$cd node
$ geth --datadir $PWD --networkid 1234 console
이때 networkid를 입력 하는 이유는 프라이빗 네트워크를 실행할 때 필요한 추가적인 옵션이기 때문입니다.
networkid는 1번부터 4번까지는 메인 네트워크와 테스트 네트워크 이기 때문에 1~4 까지는 제외하고 아무 수치나 적어주면 가능합니다.
노드를 실행할때 console을 붙이지 않으면 이더리움 노드만 실행합니다. cnonsole을 붙여줘야지 이더리움을 조작할 수 있습니다.
이제 > 표시가 뜨면서 실행한 노드와 명령어를 주고 받을 수 있습니다.
<출처>
1. 블록체인 프로젝트, 박정태 지음