제네시스 블록
블록체인의 시작
제네시스 블록은
블록체인 네트워크의
"첫번째" 블록이며
수많은 블록체인 네트워크들을 분별하는
하나의 "키" 역할을 합니다.
그러므로,
같은 블록체인 네트워크를 연결하려면
이 파일은 "무조건" 같아야 하며
특히나 이 제네시스 파일의
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으로 두시면 됩니다.
“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파일을 알아보았습니다.
제가 알고있는 한도 내의
블록체인 잡지식이 떨어져 갑니다.
곧 끝날것 같습니다,,
조만간 웹에서
블록체인 네트워크에 연결하여
데이터를 불러와 띄우는 작업을
진행해 보겠습니다.
감사합니다.
'IT > 블록체인' 카테고리의 다른 글
geth | Part_8 웹 구동을 위해 간단한 apache 서버 설치 (bitnami wamp) (0) | 2020.09.05 |
---|---|
geth | Part_7 로컬 PC 윈도우에 블록체인 네트워크 구성하기 (0) | 2020.09.03 |
geth | Part_5 번외편_geth 실행 시, 옵션 (0) | 2020.09.01 |
geth | Part_4 빠르고 쉽게 원하는 데이터를 블록체인에 저장하기 2 (0) | 2020.08.31 |
geth | Part_3 빠르고 쉽게 원하는 데이터를 블록체인에 저장하기 1 (0) | 2020.08.30 |