Steem Smart Contracts: 합의 계층 구조 소개
스팀 스마트 계약(Steem Smart Contracts, 이하 SSC로 표현)과 관련해서 몇 달동안 작업하고 있습니다. 이 기간 동안, 합의 계층 아키텍처를 몇 차례 변경했고, 여러 오류들이 발견되서 처음부터 다시 시작해야 하는 경우도 수 차례 있었습니다.
SSC의 합의 계층은 DPoS 체계를 기반으로 하고 있으며, 데이터 무결성을 확인하기 위해 P2P 계층과 스팀 블록체인을 사용하는 하이브리드 방식입니다. 합의 계층은 다음과 같이 구성될 것입니다.
증인 선거
- ENG 토큰 보유자들의 투표를 통해 증인을 선출합니다.
- ENG 스테이킹 수량은 투표 영향력과 비례합니다.
- 스팀 계정 하나 당 증인 30 명까지 투표할 수 있습니다.
라운드
- 1 라운드 = 21 개 슬롯(slot)
- 슬롯 특성:
- 상위 20 위 증인은 자동적으로 슬롯을 받습니다.
- 백업 증인 1 개가 무작위로 선택됩니다.
- 21개 증인이 정해지면, 슬롯 순서는 무작위로 진행됩니다.
- 라운드의 마지막 증인은 슬롯을 검증하는 임무를 담당합니다.
라운드 검증(verification) 과정
- 라운드를 구성하는 모든 블록이 스팀 블록체인으로부터 파싱되면, 라운드 검증을 담당하는 증인은 P2P 방식으로 라운드에 참가한 다른 증인들에게 "라운드 해시"(블록의 모든 해시를 요약한 해시)를 보냅니다.
- 17개의 서명을 받게 되면, 이 서명들이 포함된 custom_json이 스팀 블록체인에 브로드캐스트되며, 노드는 이것을 감지해서 증인의 서명을 검증하는 스마트 계약을 실행합니다.
- 라운드의 일부분이 포함된 블록은 "검증된" 것으로 표시(marked)됩니다.
- 라운드 검증 역할을 수행한 증인은 네트워크 보안에 기여한 대가로 ENG 토큰이 보상으로 받게 됩니다.
증인 필수 조건
- 시스템 요구사항: 8Gb 램, 20Gb 저장공간(저장공간의 경우 현재는 4Gb만 필요한 상황이긴 합니다)
- 200 SP(스팀 파워) 이상을 보유한 스팀 계정. 스팀 블록체인에 custom_json을 브로드캐스트하기 위한 조건임.
테스트넷
제 로컬 네트워크에서는 코드가 상당히 안정적으로 동작했지만, 인터넷에서 해당 코드를 테스트해봐야 합니다. 며칠 안에(몆 주가 될수도) 테스트넷을 출시할 예정이며 초기에는 5 명의 증인으로 운영할 생각입니다. 테스트넷 참여에 관심있는 분들은 저에게 문의해주시길 바랍니다. (discord 채널에서 Harpagon#4087 에게 문의하시면 됩니다)
합의 계층 코드는 아래 github 저장소에서 확인하실 수 있으며, 증인 보상 시스템은 아직 마련되어 있지 않습니다.
https://github.com/harpagon210/steemsmartcontracts/tree/witnesses
원문은 https://steempeak.com/steemsmartcontracts/@harpagon/steem-smart-contracts-a-few-words-regarding-the-consensus-layer이며, 스팀 엔진 팀 동의하에 번역을 진행했고, 스팀 코인판 공식 번역가 @dakeshi가 번역을 담당했습니다.
SSC 관련 참고 글
- https://steempeak.com/steemengine/@aggroed/introducing-steem-engine-com
- https://steempeak.com/steem-engine/@aggroed/scot-testing-underway-are-you-ready-for-your-own-token-that-can-distribute-like-steem
- https://steempeak.com/@harpagon/steem-smart-contracts-the-sidechain-that-brings-the-power-of-smart-contracts-to-the-steem-blockchain
- https://steempeak.com/steem-engine/@aggroed/1-million-steem-and-road-map-update-for-steem-engine