제네시스를 만들때 여러개의 cn노드를 설정하였습니다.
중간에 특정 cn을 제거하고 새로운 cn을 추가하기 위한 방법이 있을까요?
@GenieKim, 안녕하세요.
API를 통해서 추가 및 삭제가능합니다.
governance.vote("governance.addvalidator", <cn address>)
governance.vote("governance.removevalidator", <cn address>)
감사합니다.
참조:
제네시스에서 생성한 CN의 경우 자동으로 KLAY 스테이킹된 컨트랙트가 함께 배포되는 것 같습니다.
신규로 add하는 CN의 경우 스테이킹을 어떻게 해야하나요?
스테이킹을 해야 블록을 생성할 수 있는 것 아닌가요?
이건 다른 질문입니다만, 제네시스에서 useGiniCoeff를 설정하지 않으면 블록 생성 슬롯을 배정할때 라운드 로빈으로 모든 CN이 순서대로 생성하게 되는것인가요? 아니면 스테이킹 수량에 따라 확률적으로 생성하게 되는 것인가요?
제네시스에서 생성한 CN이 어떻게 등록된 CN을 의미할까요?
자동으로 Staking된 컨트랙트는 배포되지 않습니다.
0000000000000000000000000000000000000400
주소에 addressbook이라는 컨트랙트가 배포되고, 각 CN Staking contract들은 address book에 등록되는 과정을 거칩니다. 신규로 CN을 추가하는 경우 새로운 CN contract를 address book에 등록해야합니다.
Staking 양에 따라서 block proposer가 될 확률이 변경되고요, staking양이 많을 수록 proposer가 될 확률은 증가합니다. 지니계수를 사용하면 그 확률이 staking양에 정확하게 비례하게 늘어나진 않습니다.
감사합니다.
homi를 통해 생성된 CN에 대해서 문의드렸습니다.
그렇다면 homi로 생성하지 않고 genesis.json파일에서 키 정보가 없는 새로운 CN을 등록하려면
validator add 를 통해 등록 후 addressbook컨트랙트를 호출하여 스테이킹해야되나요?
추가로 genesis에서 사이드체인의 KLAY 초기 발행량을 수정할 수 있는지 궁금합니다.
아니면 고정값인가요?
네 그렇습니다.
발행량의 경우 genesis에서 키 별로 가지는 초기 balance 및 reward의 MintingAmount(채굴시 보상) 을 통해 수정할 수 있습니다.
거버넌스의 addValidator를 통해 새로운 CN을 추가하고
아래 코드를 참고하여 CNStakingContract를 사이드체인에 배포하였습니다.
그 다음 순서는 addressbook 컨트랙트에서 CNStakingContract와 CN주소를 등록하는 것으로 알고 있는데 맞나요?
현재 addressbook은 0000000000000000000000000000000000000400 주소로 genesis.json에서 배포한 상태입니다.
addressbook에서 constructContract, registerCnStakingContract, activateAddressBook 순으로 호출하면 되는 것이 맞는 지 궁금합니다.
@GenieKim 안녕하세요,
우선 현재 klaytn repo에 있는 cnStakingContract와 AddressBook을 초기화 하는 방법은 다음과 같습니다.
- [AddressBook]
constructContract
: adminList와 requirement를 통해서 multisig를 호출할 admin과 정족수를 설정 - (Lockup 물량 및 초기 상태 리뷰 함수 호출: contract에 물량 락업 설정 및 상태를 확인하기 위한 함수 호출)
- [CnStakingContract]:
submitRegisterCnStakingContract
: cn staking address와 reward address를 등록하기 위한 함수 - (KIR / POC 컨트랙트 초기화)
- [AddressBook]
submitActivateAddressBook
: address book 활성화
AddressBook과 CnStakingContract는 여러명의 admin을 두어 호출하는 multi sig방식으로 구현이 되어있습니다. 이외에 초기 토큰 락업 물량을 설정하는 방법이나 KIR / POC등 블록 생성 reward를 분배받는 컨트랙트 관련 함수들도 포함되어있습니다.
GX내에서도 해당 컨트랙트 배포 및 관리를 tool을 개발하여 사용하고 있습니다. 어떤 형태의 service chain을 구축하고 있는지에 따라서 위 언급한 기능이 필요할 수 있겠습니다. 더 추가적으로 궁금하신점을 남겨주시면 답변드리도록 하겠습니다
감사합니다.
말씀해주신 내용 중 2번은 어떤 컨트랙트의 어떤 함수일까요?
그리고 4번의 컨트랙트 코드는 github 어디에서 찾을 수 있을까요?
f2f 답변 드린바와 같이 AddressBook과 CNStaking 컨트랙트는 다음과 같습니다.
2번관련: klaytn/CnStakingContract.sol at dev · klaytn/klaytn · GitHub
4번관련: klaytn/AddressBook.sol at dev · klaytn/klaytn · GitHub
감사합니다.