로컬 테스트넷에서 Geth기동을 위해 다음 두가지를 준비한다.
- 데이터 디렉터리
- Genesis 파일
데이터 디렉터리에 송수신한 블록 데이터와 계정 정보를 저장한다.
지정하지 않으면 '~/.ethereum'이 데이터 디렉터리가 된다.
디렉터리가 실행에는 무방하다.
다음과 같이 'test_data' 폴더를 만든다.
cmd(명령 프롬프트)를 이용하여 실행해본다.
cmd는 관리자의 권한으로 실행한다.
help를 입력하면 간단하게 명령어를 볼 수 있습니다.
[IMAGE: https://steemitimages.com/DQmcDvo2162nXrvTgx1Djiu1Mo6HQ1xBCrk8cFGpVcskHkJ/image.png]
[IMAGE: https://steemitimages.com/DQmSFFtaYyREWAPyLnp4SZWgWCuF8DE8hwWkey7sNkYnBbR/image.png]
그냥 윈도우 상에서 폴더를 만들어봐도 되지만 cmd 창에서 명령어로 만들어 보겠습니다.
바탕화면으로 이동 후
보시는 바와 같이 'mkdir'명령어로 폴더를 생성 후 만든 폴더로 이동한다.
[IMAGE: https://steemitimages.com/DQmTHsJTHyCU8NFCrwyh1ePPketrmEmc1dn6rycCbmvd93T/image.png]
'copy con' 명령어를 이용해 genesis.json 파일을 만든다.
genesis 블록(0번째)의 정보가 저장된 json형식의 파일이다.
메모장에 미리 만들어 놓은 내용을 복사 후 컨트롤+Z 키 누르고 엔터를 누른다.
(참고로 붙혀넣기는 마우스 오른쪽 버튼)
{
“nonce”: “0x0000000000000042”,
“mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“difficulty”: “0x400”,
“alloc”: {},
“coinbase”: “0x0000000000000000000000000000000000000000”,
“timestamp”: “0x0”,
“parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“extraData”: “0x”,
“gasLimit”: “0xffffffff”,
“config”: {
“chainId”: 4224,
“homesteadBlock”: 0,
“eip155Block”: 0,
“eip158Block”: 0
}
}
'type genesis.json' 명령어를 통해 내용이 잘 들어간 것을 확인할 수 있다.
테스트넷을 구축할 경우 0부터 블록체인을 만들어 가므로 Genesis파일이 필요하다.
위와 같이 다 준비되었다면 이제 초기화를 해보자!
[IMAGE: https://steemitimages.com/DQmNwggv4SwheX8zPrQZ2HWpJBqBB9aLhcVF9im4tErGKoE/image.png]
생성한 디렉토리 내에서 초기화를 아래와 같이 해준다.
> geth --datadir C:\Users\Ian\Desktop\test_data init C:\Users\Ian\Desktop\test_data\genesis.json
경로는 컴퓨터마다 환경에 맞게 하시길
[IMAGE: https://steemitimages.com/DQmPd2ZMCKEPC6Wmjqe1SJLZce72hKkJ8jZQkGu4nxhsm5g/image.png]
tree 명령어를 통해 geth 폴더 내에 chaindata, lightchaindata 와 keystore가 생성된 것을 확인할 수 있다.
초기화가 완료되면 Geth를 실행해보도록 한다.
[IMAGE: https://steemitimages.com/DQmQpcDG8y4tGxbdR1r4mYLYG26KUnisLsWsAXXwkNkaUqo/image.png]
>geth --networkid 5959 --nodiscover --maxpeers 0 --datadir C:\Users\Ian\Desktop\test_data console 2>> C:\Users\Ian\Desktop\test_data\geth.log
-
networkid 5959
0~3은 예약된 숫자라 그 밖의 정수 5959를 입력해 보았습니다.
0 = Olympic(disused), 1 = Frontier, 2 = Morden(disused), 3 = Ropsten) (default : 1) -
nodiscover
생성자의 노드를 다른 노드에서 검색할 수 없게하는 옵션입니다.
노드추가는 수동으로 해주고요, 지정하지 않으면 동일한 블록체인 네트워크 생성자와 연결될 가능성이 있습니다. -
maxpeers 0
생성자의 노드에 연결할 수 있는 노드의 수를 지정합니다. -
datadir 주소
데이터 디렉터리 지정입니다. 지정하지 않으면 기본 디렉터리를 사용해요.
환경에 맞게 지정하시면 됩니다. -
console
콘솔을 가동합니다.
> C:\Users\Ian\Desktop\test_data\geth.log
로그 파일 만들 때 사용하는 옵션입니다. 에러를 해당 경로 파일에 저장합니다.
[IMAGE: https://steemitimages.com/DQmeCAQzZMbbNoK1pH63rJdk81d5Y2TGkW5kVA8QfGMJ7rA/image.png]
Geth 콘솔에 다음 명령어를 실행하여 EOA를 만듭니다.
> personal.newAccount("hiyo0")
명령어를 입력하여 계정을 생성합니다.
"hiyo0"은 암호입니다. 실제 환경에서는 보안을 고려해 적절하게 설정합니다.
이더리움에는 EOA(Externally Owned Account)와 Contract
두 종류의 계정이 있습니다.
EOA는 일반 사용자 계정으로 비밀키로 관리 되고
Ether를 송급하거나 계약을 실행할 수 있습니다.
Contract 계정은 계약용 계정으로 블록체인에 배포할 때
만들어지는 계정으로 블록체인에 존재합니다.
오늘은 테스트 네트워크에서 Geth를 실행하고 계정을 간단하게 만들어 봤습니다.
감사합니다~