스테이킹 인센티브
선거 및 스테이킹
TON 블록체인은 지분 증명(PoS) 합의 알고리즘을 사용하며, 이는 모든 지분 증명 네트워크와 마찬가지로 네트워크의 보안과 안정성이 일련의 네트워크 검증자에 의해 유지된다는 것을 의미합니다. 특히 검증자는 새로운 블록(트랜잭션 배치로 구성)의 후보를 제안하고, 다른 검증자는 디지털 서명을 통해 이를 검증하고 승인합니다.
검증인은 특별한 선거인 거버넌스 컨트랙트를 사용하여 선출됩니다. 각 합의 라운드 동안 검증인 후보자는 자신의 지분과 원하는 최대 팩터(합의 라운드당 검증인이 수행하는 유지 관리의 양을 조절하는 매개 변수)와 함께 선출 신청서를 보냅니다.
검증인 선출 과정에서 거버넌스 스마트 콘트랙트는 다음 검증인을 선택하고 각 검증인에게 투표 가중치를 할당하여 총 지분을 최대화하며, 검증인의 지분과 최대 요인도 고려합니다. 따라서 지분과 최대 요인이 높을수록 검증자의 투표 가중치가 높아지며, 그 반대의 경우도 마찬가지입니다.
선출된 검증자는 다음 합의 라운드에 참여하여 네트워크를 보호하도록 선택됩니다. 그러나 다른 많은 블록체인과 달리 수평적 확장성을 달성하기 위해 각 검증자는 네트워크의 일부만 검증합니다:
각 샤드체인과 마스터체인에는 전용 검증자 세트가 존재합니다. 마스터체인 검증자 세트는 투표 가중치가 가장 높은 최대 100명의 검증자로 구성됩니다(네트워크 파라미터 Config16:max_main_validators
로 정의됨).
반면, 각 샤드체인은 23개의 검증자 세트(네트워크 파라미터 Config28:shard_validators_num
으로 정의됨)에 의해 검증되고 1000초마다 무작위로 교체됩니다(네트워크 파라미터 Config28:shard_validators_lifetime
).
스테이크의 가치: 최대 유효 지분
현재 구성의 최대 요소
는 3이며, 이는 가장 작은 유효성 검사기의 지분은 가장 큰 유효성 검사기의 지분보다 세 배 이상 작을 수 없음을 의미합니다.
구성 매개변수가 포함된 공식입니다:
maxfactor = [
최대스테이크인자](https://tonviewer.com/config#17) / [
검증자선출_대상`](https://tonviewer.com/config#15)
(단순화된) 선택 알고리즘
선거인 스마트 컨트랙트](/개발/스마트 컨트랙트/거버넌스#선거인)에서 실행하는 이 알고리즘은 그들이 커밋한 지분에 따라 최고의 검증인 후보를 선택합니다. 작동 방식은 다음과 같습니다:
초기 선택: 선거인은 설정된 최소 금액(30만, 설정에 명시된 대로) 이상을 스테이킹한 모든 후보를 고려합니다.
주문 후보자: 이 후보들은 지분을 기준으로 가장 높은 후보부터 가장 낮은 후보 순으로 정렬됩니다.
범위 좁히기:
- 후보자 수가 허용된 최대 유효성 검사자 수(설정 참조)를 초과하는 경우, 가장 낮은 지분을 가진 후보자는 제외됩니다.
- 그런 다음 선거인은 가장 큰 그룹부터 시작하여 작은 그룹으로 이동하면서 각 잠재적 후보 그룹을 평가합니다:
- 정렬된 목록에서 상위 후보를 검토하여 1순위 후보를 하나씩 늘립니다.
- 각 후보자에 대해 선거인은 '유효 지분'을 계산합니다. 후보자의 지분이 최소 지분보다 훨씬 높으면 하향 조정됩니다(예: 누군가가 31만 지분을 보유하고 있고 최소 지분은 10만인데 최소 지분의 3배로 제한하는 규정이 있는 경우, 해당 후보자의 유효 지분은 30만 개로 간주됩니다).
- 이 그룹에 속한 모든 후보의 유효 지분을 합산합니다.
최종 선택: 총 유효 지분이 가장 높은 후보자 그룹이 선거인에 의해 검증인으로 선정됩니다.
유효성 검사기 선택 알고리즘
잠재적 검증인의 사용 가능한 지분을 기반으로 총 지분 규모를 최대화하기 위해 최소 및 최대 지분에 대한 최적의 값이 결정됩니다:
선거인은 최소 지분(30만 구성)보다 높은 지분을 보유한 모든 지원자를 대상으로 합니다.
선거인은 내림차순으로 지분을 정렬합니다.
참여자가 최대 수보다 많으면, 선거인은 목록의 꼬리 부분을 삭제합니다. 그러면 선거인은 다음을 수행합니다:
- 1에서 N_(나머지 참가자 수)까지의 각 사이클 i 에 대해 정렬된 목록에서 첫 번째 i 신청서를 가져옵니다.
- 최대 지분`을 고려하여 유효 지분을 계산합니다. 즉, 어떤 사람이 310만 개를 넣었지만 '최대 요인'이 3이고 목록의 최소 지분이 10만 톤코인이라면 유효 지분은 최소(310만, 3*100만) = 300만 개가 됩니다.
- 모든 i 참가자의 총 유효 지분을 계산합니다.
선거인이 총 유효 지분이 최대인 i을 찾으면, 해당 i 참가자를 검증자로 선언합니다.
긍정적인 인센티브
모든 블록체인 네트워크와 마찬가지로, TON의 각 거래에는 네트워크 스토리지와 온체인 거래 처리를 수행하는 데 사용되는 가스라는 계산 수수료가 필요합니다. TON에서는 이러한 수수료가 선거인 컨트랙트 내 보상 풀에 누적됩니다.
네트워크는 또한 각 마스터체인 블록당 1.7톤, 각 베이스체인 블록당 1톤에 해당하는 보조금을 보상 풀에 추가하여 블록 생성에 보조금을 지급합니다(네트워크 파라미터 Config14:masterchain_block_fee
및 Config14:basechain_block_fee
). 베이스체인을 두 개 이상의 샤드체인으로 분할할 경우, 샤드체인 블록당 보조금은 그에 따라 분할된다는 점에 유의하시기 바랍니다. 이 과정을 통해 단위 시간당 보조금을 거의 일정하게 유지할 수 있습니다.
TON 블록체인은 2023년 2분기에 디플레이션 메커니즘을 도입할 계획입니다. 특히, 네트워크 사용을 통해 생성된 TON의 일부는 보상 풀로 이동하는 대신 소각될 예정입니다.
65536초 또는 ~18시간(네트워크 매개변수 Config15:validators_elected_for
) 동안의 검증 주기 라운드가 끝나면 스테이킹된 TON은 각 검증자가 즉시 해제하지 않고 추가로 32768초 또는 ~9시간(네트워크 매개변수 Config15:stake_held_for
) 동안 보유하게 됩니다. 이 기간 동안 검증인에게서 슬래싱(잘못된 행동을 하는 검증인에 대한 페널티 메커니즘) 페널티가 차감될 수 있습니다. 자금이 릴리스된 후 검증자는 자신의 투표 가중치에 비례하여 검증 라운드 동안 발생한 보상 풀의 몫과 함께 자신의 지분을 인출할 수 있습니다.
2023년 4월 현재 네트워크의 모든 검증인의 합의 라운드당 총 보상 풀은 약 40,000톤이며, 검증인당 평균 보상은 약 120톤입니다(투표 가중치와 누적 보상 간의 최대 차이는 약 3톤입니다).
톤코인의 총 공급량(50억 톤)이 연간 약 0.3~0.6%의 인플레이션율을 보인다는 점을 감안할 때, 톤코인의 인플레이션율은 연간 약 0.3~0.6%입니다.
그러나 이 인플레이션율은 항상 일정한 것은 아니며 네트워크의 현재 상태에 따라 달라질 수 있습니다. 결국 디플레이션 메커니즘이 활성화되고 네트워크 사용률이 증가하면 디플레이션으로 전환되는 경향이 있습니다.
현재 TON 블록체인 통계는 여기에서 확인할 수 있습니다.
네거티브 인센티브
톤 블록체인에서 검증인이 잘못된 행동으로 불이익을 받을 수 있는 방법은 일반적으로 유휴 상태와 악의적인 잘못된 행동 두 가지가 있으며, 두 가지 모두 금지되어 있으며 해당 행동에 대해 벌금이 부과될 수 있습니다(슬래싱이라고 하는 과정을 통해).
검증자가 검증 라운드 중 상당한 시간 동안 블록 생성 및 트랜잭션 서명에 참여하지 않으면 Standard fine 매개변수를 사용하여 벌금이 부과될 수 있습니다. 2023년 4월 현재 부과된 표준 벌금은 101톤(네트워크 매개변수 ConfigParam40:MisbehaviourPunishmentConfig
)입니다.
TON에서는 패널티(검증인에게 부과되는 벌금)를 통해 모든 네트워크 참여자가 검증인의 잘못된 행동이 의심되는 경우 불만을 제기할 수 있습니다. 이 과정에서 불만을 제기하는 참여자는 선거인 제출을 위해 잘못된 행동에 대한 암호화된 증거를 첨부해야 합니다. 분쟁 해결 기간 동안 네트워크에서 활동하는 모든 검증인은 이의 제기의 유효성을 확인하고, (잘못된 행동 증명의 정당성과 벌금 할당을 결정하면서) 집단적으로 이의 제기를 진행할지 여부를 투표합니다.
66%의 검증인 찬성(동일한 투표 가중치로 측정)에 도달하면 해당 검증인에게서 감점 페널티가 공제되고 검증인의 총 지분에서 철회됩니다. 페널티 및 불만 해결을 위한 검증 프로세스는 일반적으로 MyTonCtrl을 사용하여 자동으로 수행됩니다.