목적
이 문서는 DATA Foundation의 스테이킹 사양을 안내합니다. 네트워크 참여자와 기술 파트너에게 DATA Foundation의 스테이킹 메커니즘이 어떻게 작동하는지, 사용자가 우리 체인과 어떻게 상호 작용할 수 있는지에 대한 명확성을 제공하는 것이 목표입니다.토크노믹스
제네시스
DATA Foundation의 제네시스 할당량은 생태계 참여자, 재단, 투자자, 핵심 팀에 분배되는 10억 개의 토큰으로 구성됩니다. 자세한 토큰 분배에 대해서는 이 문서를 참고하세요.잠금(Locked) 토큰과 잠금 해제(Unlocked) 토큰
잠금 해제 토큰은 제한이 없으며 가스 소비, 전송, 스테이킹에 사용할 수 있습니다. 잠금 해제 토큰과 달리, 잠금 토큰은 전송하거나 거래할 수 없으며, 잠금 해제 일정에 따라 잠금이 해제됩니다. 그러나 잠금 토큰은 스테이킹하여 스테이킹 보상을 얻을 수 있으며, 잠금 스테이킹 보상률은 잠금 해제 토큰의 절반입니다. 스테이킹된 잠금 토큰과 잠금 해제 토큰은 동일한 투표권을 갖습니다. 즉, 100개의 잠금 토큰을 스테이킹한 Validator는 100개의 잠금 해제 토큰을 스테이킹한 Validator와 동일한 네트워크 투표권을 갖습니다. 두 토큰 모두 해당 Validator가 슬래싱되면 슬래싱될 수 있습니다.토큰 발행(Emissions)
첫해에 발행을 위해 고정된 수의 토큰이 할당되며, 그 수량은 제네시스 시점에 재단이 결정합니다. 이후 연도에는 발행되는 토큰의 수가 발행 알고리즘에 의해 제어되며, 그 매개변수는 거버넌스를 통해 업데이트되거나 하드포크를 통해 변경될 수 있습니다. 블록당 발행량은 다음 두 매개변수에 의해 제어됩니다:- blocks_per_year: 10,368,000 블록
- 1년에 생산될 것으로 예상되는 블록의 수
- inflations_per_year: 20,000,000 토큰
- 1년에 발행될 인플레이션 토큰의 총 수
- 블록 리워드
- 커뮤니티 풀(Community Pool)
토큰 소각(Burn)
DATA Foundation은 실행 클라이언트로 geth의 포크를 사용하므로 소각 메커니즘은 Ethereum의 EIP-1559를 따릅니다.스테이킹
🔗 스테이킹 대시보드에서 스테이킹하기 ↗️DATA Foundation은 다음과 같은 스테이킹 관련 작업을 지원합니다
- Validator 생성
- Validator 커미션 업데이트
- 스테이킹(Stake)
- 대리 스테이킹(Stake on behalf)
- 언스테이킹(Unstake)
- 대리 언스테이킹(Unstake on behalf)
- 재위임(Redelegate)
- 대리 재위임(Redelegate on behalf)
- 출금 주소 설정
- 보상 주소 설정
- 감옥 해제(Unjail)
- 대리 감옥 해제(Unjail on behalf)
토큰 스테이킹 타입
잠금 토큰과 잠금 해제 토큰 모두에 대해 스테이킹이 활성화되어 있으므로, Validator는 어떤 타입의 토큰 스테이킹을 지원할지 선택해야 합니다. 한 번 토큰 스테이킹 타입을 선택하면 Validator는 다른 타입으로 전환할 수 없습니다.Validator 셋 상태
DATA 네트워크에서 Validator는 두 가지 셋 중 하나로 분류됩니다. (1) 합의에 참여하고 블록 리워드를 받는 활성(본딩된) Validator 셋, 또는 (2) 합의 과정에 기여하지 않는 비활성(언본딩된) Validator 셋입니다. 활성 Validator 셋에 속하려면 Validator는 스테이킹된 토큰 기준 상위 64명의 Validator 중 하나여야 합니다. DATA 네트워크의 모든 우선순위 수수료(priority fee)는 블록 제안자에게 직접 전달된다는 점에 유의하세요.언본딩(Unbonding)
위임자의 언스테이킹은 언본딩 과정을 거칩니다. 사용자는 토큰이 계정으로 돌아오기 전까지 언본딩 시간을 기다려야 합니다. 자체 위임(self-delegate)한 Validator도 마찬가지입니다. 언스테이킹하려면 이들도 언본딩 과정을 거쳐야 합니다. 언본딩 시간은 14일입니다. 언본딩 기간 동안 위임자/Validator는 블록 리워드를 얻지 못합니다. 다만 슬래싱은 여전히 가능합니다. 각 Validator/위임자 쌍에 대해 진행 중인 최대 언본딩 트랜잭션 수는 14개입니다. 이 한도를 초과하는 추가 언본딩 요청은 실패합니다.스테이킹 기간
위임자는 토큰을 얼마나 유연하게, 얼마나 오래 스테이킹할지 결정할 수 있습니다. 기본적으로 잠금 및 잠금 해제 토큰 모두에 대해, 위임자는 스테이킹 후 즉시 언스테이킹할 수 있으며 언본딩 시간이 지난 후 토큰을 돌려받습니다. 이 문서에서는 이를 유연한 스테이킹(flexible staking) 이라고 부릅니다. 잠금 해제 토큰의 경우 90일, 360일, 540일과 같은 몇 가지 추가 고정 스테이킹 기간이 지원됩니다. 이 경우 사용자는 스테이킹 기간이 만료된 후에만 언스테이킹을 호출할 수 있습니다. 만료일보다 빠른 호출은 폐기됩니다. 만료된 스테이킹 기간에서의 언스테이킹도 언본딩 과정을 거치며, 사용자는 14일의 언본딩 시간이 지난 후 스테이킹된 토큰을 돌려받습니다. 이러한 고정 스테이킹 기간으로 스테이킹하면 더 많은 보상을 얻을 수 있습니다. 기간이 길수록 보상 가중치 배수가 커집니다. 기간별 보상 배수:- 잠금 유연 기간 - 0.5
- 유연 기간 - 1.0
- 90일 - 1.1
- 360일 - 1.5
- 540일 - 2
스테이킹 금액의 소수 자릿수
스테이킹 관련 작업(스테이킹, 언스테이킹, 재위임 등)의 소수 자릿수는 9자리입니다. 사용자가 더 작은 값을 지정하면 자투리는 사용자에게 환불됩니다. 또는 토큰 전송이 관련되지 않은 경우, 지정된 값은 9자리 소수점으로 내림 처리됩니다.스테이킹 작업
Validator 생성
Validator가 되려면 우선 최신 릴리스된 story 바이너리를 기반으로 Validator 노드를 실행한 다음, 초기 스테이킹 금액, 별칭(moniker), 커미션 비율과 함께 CreateValidator 함수를 호출해야 합니다. 또한 나중에 커미션 비율을 급격히 변경하지 못하도록 최대 커미션 비율과 최대 커미션 비율 변경량도 설정해야 합니다. Validator가 설정할 수 있는 최소 커미션 비율은 5%입니다. 초기 스테이킹 금액은 1024 IP라는 임계값보다 커야 합니다. 해당 금액은 호출자의 지갑에서 차감됩니다. 유연한 기간으로만 스테이킹할 수 있습니다. Validator가 두 번째로 Validator 생성 함수를 호출하려고 하면 무시됩니다.Validator 커미션 업데이트
이 작업은 Validator가 자신의 커미션 비율을 편집할 수 있도록 합니다. 업데이트된 커미션 비율이 최대 커미션 비율보다 크거나 커미션 비율 변경 델타가 최대 커미션 비율 변경량보다 크면 작업은 실패합니다. 스팸을 방지하기 위해 Validator 업데이트에는 1 IP의 수수료가 부과됩니다. 이 수수료는 컨트랙트에 의해 소각됩니다. 커미션 비율은 하루에 한 번만 업데이트할 수 있습니다. 컨트랙트에서 오류를 발생시키지는 않지만 합의 계층에서는 적용되지 않습니다.스테이킹
Validator와 위임자 모두 Validator에게 토큰을 스테이킹할 수 있습니다. Validator는 자기 자신에게 스테이킹할 수 있으며, 이를 자체 위임(self-delegation)이라고 합니다. 사용자는 고정 스테이킹 기간으로 스테이킹할지 기간 없이(유연한 스테이킹) 스테이킹할지 결정할 수 있습니다. 고정 기간이 선택되면 사용자에게 위임 ID(delegation id)가 반환됩니다. 사용자는 이 스테이킹 작업의 토큰을 언스테이킹하려면 이 위임 ID를 사용해야 합니다. 유연한 스테이킹이 선택되면 반환되는 위임 ID는 0입니다. 스테이킹 금액은 1024 IP라는 임계값보다 커야 합니다. 위임자가 존재하지 않는 Validator에게 위임하면 토큰은 환불되지 않습니다. 사용자가 9자리 소수점 단위를 초과하는 토큰 금액을 지정하면, 실제 스테이킹 금액은 9자리 소수점으로 내림 처리되며 나머지는 사용자에게 환불됩니다.언스테이킹
스테이킹 기간 없이 스테이킹한 경우, 사용자는 언제든지 언스테이킹할 수 있습니다. 언본딩 시간이 지난 후 토큰이 사용자 계정으로 분배됩니다. 스팸을 방지하기 위해 언스테이킹에는 1 IP의 수수료가 부과됩니다. 이 수수료는 컨트랙트에 의해 소각됩니다. 스테이킹 기간으로 스테이킹한 경우, 사용자는 스테이킹 기간이 만료된 후에만 언스테이킹할 수 있습니다. 언본딩 시간이 지난 후 토큰이 사용자 계정으로 분배됩니다. 스테이킹 기간 만료 전의 언스테이킹 요청은 무시됩니다. 최소 언스테이킹 금액은 1024 IP입니다. 언스테이킹 요청이 처리된 후 남은 스테이킹 금액이 1024 IP 미만이면 나머지 부분도 함께 언스테이킹됩니다. 언스테이킹 요청은 먼저 14일의 언본딩 과정을 거칩니다. 그런 다음 언본딩된 요청은 출금 큐로 전송되어 블록당 최대 32건의 출금이 처리됩니다. 출금 큐에 32건을 초과하는 요청이 있는 경우 다음 32건의 출금 요청은 다음 블록에서 처리됩니다. 위임의 부분 언스테이킹이 지원됩니다. 예를 들어, 1년 장기 위임에 100만 토큰이 있다면, 1년 후 사용자는 이 위임에서 50만 토큰을 언스테이킹하고 나머지는 스테이킹된 상태로 유지하여 계속 보상을 얻을 수 있습니다. 전달된 Validator, 위임자, 위임 ID가 잘못된 경우 언스테이킹이 실패할 수 있습니다. Validator/위임자 쌍에 대해 최대 동시 언본딩 요청 수(현재 14건)에 도달한 경우에도 언스테이킹이 실패할 수 있습니다. 전달된 언스테이킹 금액이 총 언스테이킹 가능 토큰보다 크면 현재 총 언스테이킹 가능 금액이 언스테이킹됩니다. 예를 들어, 사용자가 1024 IP를 언스테이킹하려 하지만 1023 IP만 스테이킹되어 있다면 1023 IP가 인출됩니다. 오프라인이 되어 감옥에 갇히거나(jailed) 상위 64명의 Validator 셋에 들어갈 만큼 스테이크가 충분하지 않아 Validator가 종료되는 경우, 위임자는 토큰이 스테이킹 기간 중이 아니거나 스테이킹 기간이 만료되었다면 토큰을 언스테이킹할 수 있습니다. 그렇지 않으면 위임자는 스테이킹 기간이 만료될 때까지 기다려야 언스테이킹할 수 있습니다. 사용자가 9자리 소수점 단위를 초과하는 토큰 금액을 지정하면 실제 언스테이킹 금액은 9자리 소수점으로 내림 처리됩니다.재위임(Redelegate)
재위임 작업은 위임자가 스테이킹된 토큰을 한 Validator에서 다른 Validator로 이동할 수 있게 합니다. 토큰은 즉시 새로운 Validator에게 재위임되어 보상을 얻기 시작할 수 있습니다. 그러나 원본 Validator가 활성 Validator 셋에 있거나 활성 Validator 셋에서 언본딩 중이라면 재위임된 토큰도 언본딩 과정을 거칩니다. 이 14일의 언본딩 시간 동안 원본 Validator가 슬래싱되면 슬래싱됩니다. 스팸을 방지하기 위해 재위임에는 1 IP의 수수료가 부과됩니다. 이 수수료는 컨트랙트에 의해 소각됩니다. 최소 재위임 금액은 1024 IP입니다. 위임자의 초기 스테이크가 1024 IP였지만 이후 슬래싱되었다면, 토큰 금액이 1024 IP 미만이더라도 다른 Validator에게 재위임할 수 있습니다. 언스테이킹과 마찬가지로, 전달된 재위임 금액이 총 재위임 가능 토큰보다 크면 총 재위임 가능 금액이 재위임됩니다. 재위임 후 남은 잔액이 1024 IP 미만이면 남은 모든 토큰이 함께 재위임됩니다. 재위임 후에도 위임 ID는 동일하게 유지됩니다. 재위임에는 자체적인 위임자/원본 Validator/대상 Validator 쌍당 진행 중 최대 언본딩 트랜잭션 한도가 있으며, 이 역시 14건입니다. 위임자는 토큰이 아직 만료되지 않은 스테이킹 기간 중이더라도 다른 활성 Validator에게 재위임할 수 있습니다. 스테이킹 기간 만료일과 보상률은 동일하게 유지됩니다. 재위임은 원본 Validator와 대상 Validator가 동일한 토큰 타입을 지원할 때만 트리거될 수 있습니다. 사용자가 9자리 소수점 단위를 초과하는 토큰 금액을 지정하면 실제 재위임 금액은 9자리 소수점으로 내림 처리됩니다.출금/보상 주소 설정
위임자는 스테이킹 컨트랙트를 호출하여 출금 주소를 설정할 수 있습니다. 언스테이킹된 토큰은 이 출금 주소로 전송됩니다. 마찬가지로 위임자는 별도의 보상 주소를 설정할 수 있습니다. 모든 보상 분배는 이 주소로 전송됩니다. 스팸을 방지하기 위해 출금 주소 또는 보상 주소 업데이트에는 1 IP의 수수료가 부과됩니다. 이 수수료는 컨트랙트에 의해 소각됩니다. 주소 변경은 다음 블록에서 적용됩니다.슬래시/감옥 해제
슬래싱은 Validator의 잘못된 행위에 대해 스테이킹된 토큰의 일부를 슬래싱하여 처벌합니다. DATA 네트워크에서는 두 가지 유형의 행위가 슬래싱될 수 있습니다: 이중 서명(double sign) 과 다운타임(downtime) 입니다.- 이중 서명(double sign): Validator가 블록에 대해 이중 서명을 하면 토큰의 5%가 슬래싱되고 영구적으로 감옥에 갇힙니다(tombstoned라고 함).
- 다운타임(downtime): Validator가 너무 오랫동안 오프라인 상태이고 최근 28,800 블록 중 95%를 놓치면 토큰의 0.02%가 슬래싱되고 감옥에 갇힙니다.
대리(On Behalf) 함수
대부분의 스테이킹 관련 작업은 Validator나 위임자를 대신하여 다른 지갑에서 수행할 수 있습니다. 이러한 대리 함수 대부분은 권한이 필요 없으며(permissionless), 실제 Validator나 위임자가 아닌 대리 작업을 호출하는 지갑에서 토큰을 지출하기 때문입니다.운영자 추가(Add Operator)
위임자가 다른 지갑이 자신을 대신해 언스테이킹하거나 재위임할 수 있도록 허용하려면, 스테이킹 컨트랙트를 호출하여 해당 지갑을 위임자의 운영자(operator)로 추가해야 합니다. 이후 운영자는 위임자를 대신하여 위임자의 토큰을 언스테이킹하고 재위임할 수 있습니다. 다른 지갑이 자신을 대신해 감옥에서 해제할 수 있도록 허용하려는 Validator에게도 동일하게 적용됩니다. 운영자 추가에는 1 IP의 수수료가 부과됩니다.추가 데이터 필드
각 함수에는 잠재적인 미래 변경을 수용하기 위해 형식이 지정되지 않은 추가data 입력 필드가 포함됩니다. 이는 향후 사용자 인터페이스를 변경할 필요를 줄여줍니다.
Validator 키 형식
Validator 공개 키는 secp256k1 키입니다. 키는 33바이트 압축 버전과 65바이트 비압축 버전이 있습니다. DATA Foundation의 스마트 컨트랙트와 상호 작용할 때는 Validator를 식별하기 위해 33바이트 압축 키가 사용됩니다.리워드
리워드 풀 할당
모든 블록에서 토큰 인플레이션의 고정된 비율이 리워드 분배 풀로 들어가며, 이는 64명의 활성 Validator 각각의 지분 가중치(share weight)에 따라 분배됩니다. 이렇게 할당된 토큰은 다음 섹션에서 설명하는 방식으로 Validator와 그 위임자들 사이에 공유됩니다. Validator 지분 가중치는 총 토큰 스테이킹 금액과 토큰 스테이킹 타입이 잠금인지 잠금 해제인지를 기반으로 계산됩니다. 예시로, Validator 리워드 분배 풀에 100개의 토큰이 할당되어 있고, 활성 Validator가 3명만 있다고 가정해 봅시다:- validatorA: 잠금 토큰 10개 스테이킹
- validatorB: 잠금 토큰 10개 스테이킹
- validatorC: 잠금 해제 토큰 10개 스테이킹
- validatorA: 10 * 0.5 = 5 지분
- validatorB: 10 * 0.5 = 5 지분
- validatorC: 10 * 1 = 10 지분
- validatorA: 100 * (5 / 20) = 25 토큰
- validatorB: 100 * (5 / 20) = 25 토큰
- validatorC: 100 * (10 / 20) = 50 토큰

- R_i는 Validator i의 총 인플레이션 토큰 리워드입니다
- S_i는 Validator i의 스테이킹된 토큰 수입니다
- M_i는 보상 배수입니다(잠금 토큰은 0.5, 잠금 해제 토큰은 1)
- R_total은 리워드 풀에 할당된 총 인플레이션 토큰입니다
Validator 및 위임자 리워드
각 Validator에 대한 총 리워드 할당량(계산은 이전 섹션에 나와 있음)은 Validator 자체와 그 모든 위임자들 사이에 공유됩니다:- Validator는 자신이 설정한 고정 비율의 커미션을 가져갑니다
- 나머지 리워드는 위임자들의 지분 가중치에 따라 분배됩니다
- delegatorA: 토큰 10개 스테이킹, 스테이킹 배수 1
- delegatorB: 토큰 10개 스테이킹, 스테이킹 배수 1
- delegatorC: 토큰 10개 스테이킹, 스테이킹 배수 2
- delegatorA: 10 * 1 = 10 지분
- delegatorB: 10 * 1 = 10 지분
- delegatorC: 10 * 2 = 20 지분
- delegatorA: 80 * (10 / 40) = 20 토큰
- delegatorB: 80 * (10 / 40) = 20 토큰
- delegatorC: 80 * (20 / 40) = 40 토큰

- D_i는 위임자 i의 총 인플레이션 토큰 리워드입니다
- S_i는 위임자 i의 스테이킹된 토큰 수입니다
- M_i는 위임자 i의 스테이킹된 보상 배수입니다
- R_total은 Validator에 할당된 총 인플레이션 토큰입니다
- C는 Validator의 커미션 비율입니다