안녕하세요 kip82 지니계수 폐지와 관련하여 질문드립니다

안녕하세요. 해당 문서를 읽다가 이해가 어려운 부분이 있어 질문드립니다.

  1. 기존에 스테이킹한 금액과 지니계수를 기반으로 GC들에게 블록 생성 보상을 제공했다면

하드포크 이후에 지니계수를 폐지하고 모든 참여자에게 균등하게 블록 생성 보상을 제공한다고 적혀있습니다.

그렇다면 GC 입장에서는 이제 스테이킹을 많이 하던 적게하던 상관이 없게 되는건가요?

  1. CN 보상이 proposer reward 와 staking reward (2:8 비율) 로 나뉜다고 되어있는데
    image
    기존에 (reward 6.4 + TxFee/2 ) 한거에서 5:4:1 비율로 나눈 것 중에 5를 Block Proposer가 가져가던 방식에서

하드포크 이후에는 5 만큼 가져가던걸 다시 2:8로 나누어서 2를 가져가고 나머지 8을 스테이킹한 GC들이 나눠 가져가는 방식이 되는 건가요?

예를들어 reward + TxFee 가 100 이라 했을때
원래 BlockProposer가 가져가는건 50이었는데 하드포크 이후에는 50 * 0.2 => 10 을 가져가게 되는건가요? 그러면 나머지 40은 스테이킹 한 gc들끼리 나눠가지게 되나요?

  1. 그렇다면 이번 하드포크는 현재의 GC들이 희생(?)하는 대신에 더 많은 GC 들이 들어오게 하기 위한 업데이트인가요?

요약
KIP-82는 합의 노드들의 수익 원천을 두가지로 세분화하여 보상을 정의하고, 합의 노드들이 비슷한 수익률을 갖게되는 것이 주된 내용입니다. 이를 통해 GC가 스테이킹을 적게하면 수익률이 높아지는 현상이나 스테이킹을 많이 하면 수익률이 낮아지던 현상이 거의 사라집니다. 부가적으로 얻고자하는 것은 1) 합의 노드들의 추가 스테이킹 유도하고, 2) 퍼블릭 스테이킹 서비스의 수수료 등에서 경쟁 요소를 추가하여 사용자들에게 그 혜택이 돌아가도록 유도하기 위한 것입니다.

상세 내용
Gini 계수의 의도는 크게 2가지 였습니다.

  1. (네트워크 안전성) 스테이킹이 많은 노드에 장애가 생겼을 때, 네트워크 위험을 낮추기 위함
    과거에 블록 프로포저는 스테이킹 양에 비례하여 선정되었습니다. 때문에 특정 노드가 과도하게 많은 KLAY를 스테이킹하는 상황에서 해당 노드에 장애가 생기면, 블록 제안이 지연되는 횟수가 빈번해져서 네트워크 안정도가 떨어집니다. Gini 계수는 이런 상황에서 블록 생성자를 비교적 고르게 선정하는데 도움을 줍니다 .

  2. (KLAY 과도한 집중 회피) 특정 노드에게 과도한 보상을 받는 것을 억제하기 위함
    Klaytn 네트워크에서 KLAY 분포가 고르게 될수록 안전성이 높아집니다. 따라서, 마치 소득이 증가함에 따라 소득세율이 증가하는 것과 같이 Gini 계수를 통해 특정 노드가 과도한 보상을 받아 KLAY 집중되는 것을 억제합니다. 다만, 지금까지의 네트워크 상황을 고려했을 때 이 효과가 의미있게 발휘되진 않은 것 같습니다.

그러나, Gini 계수는 아래과 같은 문제들을 유발하였습니다.

  1. 합의 노드의 경우, 스테이킹을 많이 할 수록 이율이 떨어져 스테이킹을 추가로 할 요인이 떨어짐
  2. 합의 노드가 운영하는 퍼블릭 스테이킹 서비스의 경우, 서비스를 잘 운영하여 고객의 KLAY를 많이 유치할 수록 경쟁력인 KLAY 이율이 떨어짐

이를 해결하기 위한 Klaytn의 변화는 다음과 같습니다.

  1. Gini 계수가 제공하던 "네트워크 안전성"과 관련된 요소는 블록 제안자 선정을 스테이킹과 상관없이 모든 합의 노드가 동일할 확률로 하도록 변경하는 것으로 대체했습니다. 네트워크 합의과정 안전성 측면에서 모든 합의노드는 스테이킹 양과 무관하게 동일한 중요도를 가집니다.

  2. 블록 생성 보상을 두가지로 세분화합니다. 두가지 중 "블록 제안자 보상"은 모든 합의 노드들이 동등한 비율로 받게 됩니다. 이 보상은 CN과 PN을 운영하는 네트워크 유지 비용과 올바른 블록을 생성해내는 기여분에 대한 대가입니다. 따라서, 비슷한 성능의 인프라를 유지하는 GC들에게 비슷한 수준의 보상이 돌아가도록 설계되었습니다. 또한, 의미 있는 블록을 생성하도록 유도하기 위해 블록에 담긴 가스비도 모두 블록 제안자에게 돌아가지만, 각 블록에서 소모된 가스비가 “블록 제안자 보상” 보다 작은 경우에는 가스비를 모두 소각하고 큰 경우에는 “블록 제안자 보상” 대신 가스비만 주어집니다. 즉, 블록 제안자는 "블록 제안자 보상"과 블록 가스비 중 더 큰 하나의 값만큼만 보상받습니다.

  3. 블록 생성 보상 중 두번째 보상인 "스테이킹 보상"은 각 노드가 스테이킹한 양에 비례하여 받습니다. 각 노드는 스테이킹을 많이 하면 많은 보상을 받게 되고, 수익률 측면에서는 모두 동일한 수익률을 누리게 됩니다. 스테이킹이라는 행위는 GC들이 KLAY 가격에 대한 이해관계를 일치시키고 네트워크의 보안성을 강화하는 행위입니다. 이에 대한 대가와 스테이킹으로 인한 경제적 기회비용을 이유로 스테이킹 보상이 존재합니다.

추가 기대효과 (Gini 계수가 유발하던 문제점 해결)

  1. GC 스테이킹 보상율은 전체 스테이킹 수량에 영향을 받게되며, 개별 GC의 스테이킹 비율에 영향받지 않습니다. 따라서, GC들은 과거에 비해 부담없이 추가 KLAY를 스테이킹할 수 있으리라 기대됩니다. 또한, 전체 스테이킹 수량이 줄면 수익률이 늘어나기에 스테이킹 양을 일정하게 유지시키데도 도움을 주리라 생각됩니다.

  2. 퍼블릭 스테이킹 서비스의 차별화 요소가 늘어납니다. 퍼블릭 스테이킹 서비스의 보상은 GC 스테이킹 보상에서 발생하였기에 경쟁의 요인이 많지 않았습니다. 고객을 모을수록 경쟁력 중 하나인 보상률이 떨어지기 때문입니다. 위 변화를 통해 각 퍼블릭 스테이킹 서비스들은 고객의 자산을 많이 예치할수록 수익이 늘어나기에 경쟁의 요인이 늘어날 수 있습니다. 이 경쟁 요소들이 최종적으로 Klaytn 생태계 사용자들의 혜택으로 전환되기를 바랍니다.

Klaytn은 Cypress 메인넷의 성장과 함께 지속적으로 발전하고 있으며, GC와 같은 생태계 참여자들에 의해 KIP-82는 더 잘 활용될 수 있다고 생각됩니다. 이번에 블록 보상에 대한 원천을 좀 더 세분화하여 정의함으로 KLAY 인플레이션과 같은 정책도 점점 고도화 될 수 있을 것입니다. 예를들어, "블록 제안자 보상"은 고정비에 가까운 인프라 운영 비용이 보상 발생이 이유이기에 가스비가 충분히 늘어나거나 KLAY 가치가 올라가면 신규 발행되는 KLAY 양을 줄이거나 디플레이션도 가능하게 되리라 믿습니다. 이 처럼, KIP-82는 GC를 포함한 생태계 참여자들이 네트워크 상황에 맞게 판단하고 개선할 수 있도록 보상의 원인을 좀 더 세분화하여 정의하고 기술적 선택지를 제공하는 내용입니다.

2 Likes

답변 감사합니다. 읽어보고 많은 부분이 이해되었습니다. 친절한 답변 감사합니다!

그렇다면 기존에 6.4Klay + Tx Fee / 2 를 5:4:1 비율로 블록제안자 : KGF : KIR 로 배분되던 것이

KIP 82: A new GC reward structure due to abolition of the Gini coefficient 여기 문서에 나와있는 2:8 배분 비율로 바뀌어

6.4 Klay 의 20% 와 Tx Fee/2 를 블록 제안자가 가져가고
나머지 6.4 Klay의 80% 를 (블록제안자를 포함한? 혹은 블록제안자를 포함하지 않은?) 노드들이 나눠서 가지게 되는 건가요?
그렇게되면 KGF,랑 KIR은 어떻게 되는건가요? 나머지 80% 를 다시 5:4:1로 나눠서 5를 노드들이 나눠가지고, 나머지를 KGF랑 KIR이 가져가게 되는 건가요?

6.4 KLAY를 먼저 KGF, KIR 에게 분배한다고 생각하시면 됩니다. Kore 초기 설정값을 대입하면 다음과 같습니다.

  • KGF: 6.4 KLAY * 0.4
  • KIR: 6.4 KLAY * 0.1
  • CN 총 보상: 6.4 KLAY * 0.5 + TxFee/2 - 추가소각
    (추가 소각량은 상황에 TxFee/2 또는 6.4 KLAY * 0.5 * 0.2 중 작은 값)

이후 CN 총 보상이 블록 제안자 보상과 스테이킹 보상으로 나누어집니다.

  • 블록 제안자 보상: 6.4 KLAY * 0.5 * 0.2 + TxFee/2 - 추가소각
  • 스테이킹 보상: 6.4 KLAY * 0.5 * 0.8

Spec에 KIR/KGF 분배에 대한 추가 설명이 없어 혼란스러울 거 같네요.
KIR/KGF 분배와 TxFee (block.gasFee) 부분에 대한 상세한 변화는 다음과 같습니다.

Kore 하드포크 전후 변화

항목 Kore 전 Kore 후 전후 비교
발행량 MintingAmount MintingAmount 동일
소각량 block.gasFee/2 block.gasFee 또는 MintingAmount * CNRatio * CNProposerRatio + block.gasFee/2 증가
인플레이션/디플레이션 MintingAmount - block.gasFee/2 MintingAmount - block.gasFee 또는 MintingAmount - MintingAmount * CNRatio * CNProposerRatio - block.gasFee/2 인플레이션 감소
블록 제안자 보상 MintingAmount * CNRatio + block.gasFee/2 * CNRatio block.gasFee/2 또는 MintingAmount * CNRatio * CNProposerRatio 감소
스테이킹 보상 - MintingAmount * CNRatio * (1 - CNProposerRatio) 항목 추가
모든 CN 보상 총합 (블록 제안자 보상 + 스테이킹 보상) MintingAmount * CNRatio + block.gasFee/2 * CNRatio MintingAmount * CNRatio 또는 MintingAmount * CNRatio * (1 - CNProposerRatio) + block.gasFee/2 감소
KIR MintingAmount * KIRRatio + block.gasFee/2 * KIRRatio MintingAmount * KIRRatio 감소
KGF MintingAmount * KGFRatio + block.gasFee/2 * KGFRatio MintingAmount * KGFRatio 감소

위 표에 사용된 다음 표현들은 Governance 설정값으로 계산되며 다음과 같은 의미를 가집니다.

  • MintingAmount = 매 블록 신규 발행되는 KLAY (현재 값: 6.4 KLAY)
  • CNRatio = CN들에게 할당되는 보상 비율 (현재 값: 0.5)
  • KIRRatio = KIR에 할당되는 보상 비율 (현재 값: 0.4)
  • KGFRatio = KGF에 할당되는 보상 비율 (현재 값: 0.1)
  • CNProposerRatio = CN들에게 할당되는 보상 중 Proposer 몫으로 할당되는 비율 (현재 설정값: 0.2)

위 표의 값 중에서 발행량, KIR, KGF, 스테이킹 보상 값은 일정한 수식을 가지지만, 소각량, 인플레이션/디플레이션, 블록 제안자 보상 등은 상황에 따라 다른 값을 가집니다. 그 이유는 블록에 담긴 트랜잭션 수수료에 따라 인플레이션을 조절하는 로직 때문입니다. 다음과 같은 두가지 경우에 따라 "블록 제안자 보상"이 변경되고, 인플레이션이나 소각량이 따라 조절됩니다.

블록에 담긴 트랜잭션 수수료가 큰 경우
"블록 제안자 신규 발행 보상"은 CN/PN 인프라 운영에 대한 대가로 발행됩니다. Klaytn 네트워크가 활성화되어 트랜잭션 수수료가 많은 경우, 블록 제안자는 block.gasFee/2 만으로 충분히 운영비용을 감당할 수 있을 것입니다. 따라서, 이 경우에 "블록 제안자 신규 발행 보상"은 블록 제안자에게 주어지지 않고 그대로 소각됩니다. 따라서, 다음과 같은 수식을 가집니다.

  • 블록 제안자 보상 = block.gasFee/2
  • 소각량 = block.gasFee/2 + MintingAmount * CNRatio * CNProposerRatio
    (Kore 이전에도 자동 소각되던 BlockGasFee/2 뿐만 아니라 “블록 제안자 보상” 추가 소각)
  • 인플레이션/디플레이션 = MintingAmount - MintingAmount * CNRatio * CNProposerRatio - block.gasFee/2

블록에 담긴 트랜잭션 수수료가 적은 경우
블록에 담기는 트랜잭션 양이 적더라도 CN/PN 인프라 운영 비용은 비슷하게 요구됩니다. 네트워크의 지속 가능성을 위해 최소한의 인프라 운영비용을 지원하고 위해 "블록 제안자 신규 발행 보상"이 주어집니다. "블록 제안자 신규 발행 보상"이 제공되는 경우에는 block.gasFee/2 은 블록 생성자에게 주어지지 않고 소각됩니다.

  • 블록 제안자 보상 = MintingAmount * CNRatio * CNProposerRatio
  • 소각량 = block.gasFee
    (Kore 이전에도 자동 소각되던 block.gasFee/2 뿐만 아니라 전체 트랜잭션 수수료 소각)
  • 인플레이션/디플레이션 = MintingAmount - block.gasFee
2 Likes