개요
투표는 블록체인 시스템의 중요한 자치(governance) 메커니즘입니다. 어떤 노드가 IOST 커뮤니티에 지속적으로 기여하고 코드를 공급하며 거버넌스에 참여한다면, 그 노드는 자연스럽게 커뮤니티의 더 많은 표를 얻게 됩니다. 더 많은 표를 받은 노드는 블록 생성에 참여하여 보상을 받을 기회를 갖습니다. 투표에 적극 참여하는 것은 커뮤니티 발전에 매우 중요하므로, 시스템은 투표자에게도 토큰을 보상으로 지급합니다.
노드 종류
IOST의 투표 메커니즘에는 세 종류의 노드가 있습니다: 후보 노드(candidate node), 파트너 노드(partner node), Servi 노드(servi node). 투표 컨트랙트의 applyRegister 메서드를 호출하면 후보 노드가 될 수 있습니다. 받은 표가 210만 표를 넘고 심사를 통과하면, 후보 노드는 파트너 노드 또는 Servi 노드가 됩니다 (어느 쪽이 될지는 applyRegister 호출 시 마지막 인자로 결정되며, true면 Servi 노드, false면 파트너 노드입니다). Servi 노드는 블록을 생성해야 하지만 파트너 노드는 그렇지 않습니다.
투표 규칙
- 1 토큰 = 1 투표권. 1 투표권은 등록된 1개의 노드(후보 노드, 파트너 노드, Servi 노드)에게만 행사할 수 있습니다.
- 한 계정은 여러 노드에 투표할 수 있으며, 노드는 자신에게 투표할 수도 있습니다.
- 파트너 노드와 Servi 노드, 그리고 그 노드의 투표자만 투표 보상을 받을 수 있습니다.
- 자원을 구매하기 위해 스테이킹된 토큰은 투표권을 갖지 않습니다.
- 투표 취소 후 토큰을 회수하려면 72시간을 기다려야 합니다. 회수 대기 중인 토큰은 투표 보상을 받지 못합니다.
보상
시스템은 매년 토큰 총량의 2%를 추가 발행합니다. 그중 1%는 블록 보상으로 Servi 노드에게만 지급됩니다. 나머지 1%는 투표 보상이며, 그 절반은 파트너/Servi 노드에게, 나머지 절반은 그 노드의 투표자에게 분배됩니다.
블록 보상
- 블록 보상은 노드가 생성한 블록 수에 따라 분배됩니다. 블록당 보상은 약 3.3 iost이며, 연간 발행률(2%)과 블록 생성 속도(0.5초당 1 블록)로 계산할 수 있습니다.
- 블록 보상은 노드가 직접 수령해야 하며, 수령은 시스템 컨트랙트의 exchangeIOST 메서드를 호출하여 수행합니다.
투표 보상
노드 보상
- 시스템은 172,800 블록(약 24시간)마다 자동으로 토큰을 발행합니다. 발행된 토큰은 노드 보상 풀로 들어가며, 발행 시점에 각 노드가 받은 표 수에 비례하여 분배됩니다.
- 어떤 계정이든 투표 컨트랙트의 topupCandidateBonus 메서드를 호출하여 노드 보상 풀에 충전할 수 있습니다. 토큰은 충전 시점에 각 노드가 받은 표 수에 비례하여 분배됩니다.
- 투표 보상은 노드가 직접 수령해야 하며, 수령은 투표 컨트랙트의 candidateWithdraw 메서드를 호출하여 수행합니다.
- 노드가 보상을 수령할 때, 투표 보상의 50%는 투표자 보상 풀로 들어갑니다.
- 이미 누적되었으나 아직 수령하지 않은 보상은 노드 속성과 표 수의 변동에 영향을 받지 않으며, 만료 없이 언제든 수령할 수 있습니다.
투표자 보상
- 노드가 보상을 수령할 때, 그 보상의 50%가 해당 노드의 투표자 보상 풀로 들어가고, 그 시점에 각 투표자가 행사한 표 수에 비례하여 분배됩니다.
- 어떤 계정이든 투표 컨트랙트의 topupVoterBonus 메서드를 호출하여 투표자 보상 풀에 충전할 수 있습니다. 토큰은 충전 시점에 각 투표자가 행사한 표 수에 비례하여 분배됩니다.
- 투표 보상은 투표자가 직접 수령해야 하며, 수령은 투표 컨트랙트의 voterWithdraw 메서드를 호출하여 수행합니다.
- 이미 누적되었으나 아직 수령하지 않은 보상은 투표자의 추가 투표 또는 투표 취소의 영향을 받지 않으며, 만료 없이 언제든 수령할 수 있습니다.