Steem Smart Contracts: 합의 계층 구조 소개

in #sct5 years ago (edited)

스팀 스마트 계약(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 관련 참고 글

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.029
BTC 76535.07
ETH 2962.73
USDT 1.00
SBD 2.65