본문으로 건너뛰기

제네시스 파일

이 페이지는 genesis.json 파일에 대한 자세한 내용을 설명합니다.

제네시스 JSON 파일 구조

genesis.json 파일 구조는 다음 표에 설명되어 있습니다.

필드 이름설명
config블록체인 구성입니다. Config 섹션을 참조하세요.
nonce(사용되지 않음) 이 필드는 이더리움에서 파생되었지만 Klaytn에서는 사용되지 않습니다.
timestamp블록이 생성된 유닉스 시간입니다.
extraData서명자 vanity와 유효성 검사자 목록, 제안자 씰, 커밋 씰을 포함하는 RLP 인코딩된 Istanbul 추가 데이터를 위한 데이터 결합 필드입니다.
gasLimit블록에 사용된 최대 가스 양입니다.
difficulty(사용되지 않음) 이 필드는 이더리움에서 파생되었지만 Klaytn에서는 사용되지 않습니다.
mixhash(사용되지 않음) 이 필드는 이더리움에서 파생되었지만 Klaytn에서는 사용되지 않습니다.
coinbaseminer가 보상을 받을 주소입니다. 이 필드는 Clique 합의 엔진에만 사용됩니다.
alloc미리 정의된 계정.
number블록 번호 필드입니다.
gasUsed블록에 사용된 가스 양입니다.
parentHash이전 블록의 해시 값입니다.

Config

config 필드에는 체인 관련 정보가 저장됩니다.

필드 이름설명
chainId현재 체인을 식별하며 리플레이 공격을 방지하는 데 사용됩니다.
istanbulCompatibleBlockIstanbul 변경이 적용되는 블록 번호입니다.
istanbul, clique합의 엔진의 유형입니다.
unitPrice단가
deriveShaImpl트랜잭션 해시 및 영수증 해시를 생성하는 메서드를 정의합니다.
governance네트워크의 거버넌스 정보입니다. Governance 섹션을 참고하세요.

extraData

extraData 필드는 제안자 vanity와 RLP로 인코딩된 Istanbul 추가 데이터의 연결입니다:

  • 제안자 vanity는 임의의 제안자 vanity 데이터를 포함하는 32바이트 데이터입니다.
  • 나머지 데이터는 RLP로 인코딩된 Istanbul 추가 데이터입니다:
    • 검증자: 오름차순으로 나열된 검증자 목록입니다.
    • Seal: 헤더의 제안자 서명입니다. genesis.json의 경우 65개의 0x0으로 초기화된 바이트 배열입니다.
    • CommittedSeal: 합의 증명을 위한 커미션 서명 씰 목록입니다. genesis.json의 경우 빈 배열입니다.

예제

필드유형value
vanity32바이트 16진수 문자열0x0000000000000000000000000000000000000000000000000000000000000000
Validators[]address[0x48009b4e20ec72aadf306577cbe2eaf54b0ebb16,0x089fcc42fd83baeee4831319375413b8bae3aceb]
Seal65개 요소의 바이트 배열[0x0,...,0x0]
CommittedSeal[][]byte[]

위 데이터가 포함된 extraData는 다음과 같이 생성됩니다.


concat('0x',Vanity,RLPEncode({Validators,Seal,CommittedSeal}))

여기서 concat은 문자열 연결 함수이고, RLPEncode는 주어진 구조를 RLP 인코딩된 문자열로 변환하는 함수입니다.

With this function, the output extraData for this example is 0x0000000000000000000000000000000000000000000000000000000000000000f86fea9448009b4e20ec72aadf306577cbe2eaf54b0ebb1694089fcc42fd83baeee4831319375413b8bae3acebb8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0.

합의 엔진

카이아 네트워크에서 사용할 수 있는 합의 엔진은 Clique와 Istanbul입니다. 각 엔진에 대한 설명은 다음과 같습니다.

Clique

clique 필드에는 권한 증명(POA) 기반 씰링에 대한 구성이 저장됩니다.

필드설명
period연속된 블록 사이의 최소 시간 간격(단위: 초).
epoch투표를 초기화하고 체크포인트로 표시할 블록 수입니다.

Istanbul

Istanbul 필드에는 Istanbul 기반 씰링에 대한 구성이 저장됩니다.

필드설명
epoch투표를 체크포인트로 재설정할 블록 수입니다.
policy블록 제안자 선택 정책입니다. [0: 라운드 로빈, 1: 고정, 2: 가중치 무작위]
sub위원회 규모.

Governance

governance 필드에는 네트워크에 대한 거버넌스 정보가 저장됩니다.

필드설명
governanceMode세 가지 거버넌스 모드 중 하나입니다. [none, single, ballot]
governingNode지정된 거버넌스 노드의 주소입니다. 거버넌스 모드가 single인 경우에만 작동합니다.
reward리워드 설정을 저장합니다. Reward 섹션을 참고하세요.

Reward

reward 필드에는 네트워크의 토큰 이코노미에 대한 정보가 저장됩니다.

필드설명
mintingAmount블록이 생성될 때 발행되는 peb의 양입니다. 값은 큰따옴표로 묶어야 합니다.
ratioCN/KIR/PoC에 대한 분배 비율을 /로 구분합니다. 모든 값의 합계는 100이어야 합니다.
useGiniCoeffGini계수 사용 여부.
deferredTxFee블록에 대한 TX 수수료를 분배하는 방법.
stakingUpdateInterval스테이킹 정보를 업데이트할 블록 높이의 시간 간격입니다.
proposerUpdateInterval블록 높이에서 제안자 정보를 업데이트하는 시간 간격입니다.
minimumStake코어 셀 오퍼레이터에 참여할 수 있는 최소 지분량입니다.

예제


{
"config": {
"chainId": 2019,
"istanbulCompatibleBlock": 0,
"istanbul": {
"epoch": 604800,
"policy": 2,
"sub": 13
},
"unitPrice": 25000000000,
"deriveShaImpl": 2,
"governance": {
"governingNode": "0x46b0bd6380005952759f605d02a6365552c776f3",
"governanceMode": "single",
"reward": {
"mintingAmount": 6400000000000000000,
"ratio": "50/40/10",
"useGiniCoeff": true,
"deferredTxFee": true,
"stakingUpdateInterval": 86400,
"proposerUpdateInterval": 3600,
"minimumStake": 5000000
}
}
},
"nonce": "0x0",
"timestamp": "0x5c9af60e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000f89af85494aeae0ab623d4118ac62a2decc386949b5ce67ce29446b0bd6380005952759f605d02a6365552c776f394699b607851c878e29499672f42a769b71f74be8e94e67598eb5831164574c876994d53f63eab4f36d7b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0",
"gasLimit": "0xe8d4a50fff",
"difficulty": "0x1",
"mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"0000000000000000000000000000000000000400": {
"code": "0x6080604052600436106101505763ffffffff60e00a165627a7a7230582093756fe617053766b158f7c64998c746eb38f0d5431cc50231cc9fb2cd1fd9950029",
"balance": "0x0"
},
"46b0bd6380005952759f605d02a6365552c776f3": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"699b607851c878e29499672f42a769b71f74be8e": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"aeae0ab623d4118ac62a2decc386949b5ce67ce2": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"e67598eb5831164574c876994d53f63eab4f36d7": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
}
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}