제네시스 블록

블록체인의 시작

 

 

 

 

 

 

 

제네시스 블록

 

블록체인 네트워크의

 

"첫번째" 블록이며 

 

수많은 블록체인 네트워크들을 분별하는

 

하나의 "" 역할을 합니다.

 

 

 

 

 

 

그러므로,

 

같은 블록체인 네트워크를 연결하려면

 

이 파일은 "무조건" 같아야 하며

 

특히나 이 제네시스 파일의

 

chainId값을 가지고 구분한다 생각 하시면 됩니다.

 

 

 

 

 

아래는 geth 블록체인을 형성 시 필요한

 

genesis.json 파일의 내용이며

 

안의 값이 어떤 것을 의미하는지에 대한

 

설명을 추가적으로 적어 놓았습니다.

 

 

 

{ "config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty": "20", "gasLimit": "2100000", "alloc": { "bbc34675b938a3bc565e64a4a0050ebc1b2d1d827": { "balance": "3100000" }, "19abbcc9ae680c1aa7819bdfa47a623b7b77dade": { "balance": "2100000" } } }

 

 

 

“config”

 

블록체인 구성을 의미합니다.

 

 

 

 

 

 

 

“chainId”

 

권한이 없는 사용자의 유입을 막기 위한 

 

일종의 방 번호라고 생각하시면 됩니다. 

 

권한이 없는 "공격자"로부터의 

 

공격 (replay attack) 을 보호를 합니다. 

 

 

 

 

 

 

 

 

예를 들어 

 

chainId에 따라 달라지는 

 

특정 값을 일치시켜 작업을 검증하는 경우 

 

공격자는 다른 ID로 

 

동일한 값을 쉽게 얻을 수 없습니다.

 

 

 

 

 

 

그냥 chainId의 값이 다르면  (genesis.json파일이 다르면)

 

접근이 불가능하다 

 

라고 생각 하시면 됩니다

 

*chainId의 값은 고유한 값으로 설정하는게 좋습니다

 

예를들면 ab6da98c7bfd7b68876fd987c7ba8d6f786c 등과 같은 //

 

 

 

 

 

 

“homesteadBlock”

 

Homestead는 ethereum의 두번째 release입니다. 

 

* 첫번째 release는 Frontier 입니다.

 

 

 

 

 

 

 

 

 

homesteadBlock값이 0인 것은

 

이 release를 사용함을 의미합니다.

 

고로, 0으로 두시면 됩니다.

 

*참조 : https://github.com/ethereum/go-ethereum/blob/feeccdf4ec1084b38dac112ff4f86809efd7c0e5/params/config.go#L71

 

 

 

 

 

 

 

“difficulty”

 

마이닝(채굴)의 난이도 입니다.

 

블록을 채굴 하기위해 난이도를 조절하는데,

 

말 그대로 값을 낮게 잡아두면

 

빠르게 마이닝이 됩니다.

 

 

 

 

 

 

 

“gasLimit”

 

한 블록 당 gas 비용을 제한합니다.

 

 

 

 

 

 

보통, 저희처럼 테스트 할 때는

 

제한되지 않도록 하기 위해

 

이 값을 높게 잡아둡니다.

 

 

 

 

“alloc”

 

생성되어 있는 계정에 balance를 지정해줍니다.

 

즉, 계정에 "일정량의 돈을 미리 쥐어준다." 라고

 

제네시스 블록에 "셋팅" 해준다고 생각하시면 됩니다.

 

 

 

 

 

이 계정은 40자리의 16진수 문자열로 구성됩니다.

 

* 이 셋팅을 하기 전에 미리 계정을 생성 해 놓고 

 

그 계정을 여기 다시 적어주어야 합니다.

 

생성되지 않은 계정을 등록해 봤자 소용없습니다.

 

 

 

 

 

 

 

 

 

예)

 

-> geth --datadir private-blockchain init genesis.json console

 

으로 1차적으로 geth를 실행하여 

 

personal.newAccount()로 계정을 하나 생성해 줍니다.

 

 

 

 

 

그 계정을 복사 해 두어

 

geth 콘솔창을 나간 뒤

 

genesis.json파일을 편집해

 

방금 복사해 놓은 계정값을 

 

alloc에 추가하고

 

balance값을 적어 줌으로써

 

셋팅이 완료됩니다.

 

 

 

 

 

 

 

 

이로써 

 

블록체인의 "시작"인

 

제네시스 블록

 

genesis.json파일을 알아보았습니다.

 

 

 

 

 

제가 알고있는 한도 내의 

 

블록체인 잡지식이 떨어져 갑니다.

 

곧 끝날것 같습니다,,

 

 

 

 

 

조만간 웹에서 

 

블록체인 네트워크에 연결하여

 

데이터를 불러와 띄우는 작업을 

 

진행해 보겠습니다.

 

 

 

감사합니다.



+ Recent posts