Vitalik의 최신 연구: LSDFi 프로토콜 유동성과 분산화 개선 간의 미묘한 관계
链捕手
2023-10-08 04:30
本文约4397字,阅读全文需要约18分钟
이 기사에서는 주로 노드 운영자의 중앙화 위험과 현재 LSDFi 프로토콜 및 유동성 풀에 존재하는 불필요한 합의 부담에 중점을 둘 것입니다.

원작자: 비탈릭 부테린

원본 편집: bayemon.eth, ChainCatcher

피드백과 리뷰를 주신 Mike Neuder, Justin Drake 및 기타 분들께 특별히 감사드립니다. 유사한 주제에 대한 Mike Neuder, Dankrad Feist 및 arixon.eth의 이전 게시물도 참조하세요.

현재 이더리움의 개발 현황은 다수의 Double Tiered Stake를 포함하고 있다고 할 수 있는데, 여기서 언급하는 Double Tiered Stake는 두 가지 유형의 참여자가 있는 스테이킹 모델을 의미합니다.

  • 노드 운영자(Node Operator): 노드를 운영하며 자신의 평판이나 일정 금액의 자체 자본을 담보로 사용합니다.

  • 대리인 위임자: 대리인은 최소 금액이나 담보 이외의 다른 참여 방법에 대한 추가 제한 없이 일정 금액의 이더리움을 담보로 제공합니다.

이러한 새로운 이중 스테이킹은 스테이킹 토큰(LST)에 유동성을 제공하는 스테이킹 풀에 대한 많은 참여를 통해 생성됩니다. (Rocket Pool과 Lido 모두 이 모델을 가지고 있습니다.)

그러나 현재의 이중 서약에는 두 가지 결함이 있습니다.

  • 노드 운영자의 중앙화 위험: 현재 모든 스테이킹 풀에서 노드 운영자를 선택하는 메커니즘은 여전히 ​​지나치게 중앙화되어 있습니다.

  • 불필요한 합의 부담: Ethereum L1은 Epoch당 약 800,000개의 서명을 확인해야 하며 이는 단일 슬롯에 엄청난 부하입니다. 또한 유동성 스테이킹 풀에는 더 많은 자금이 필요하기 때문에 네트워크 자체는 이 부하로 인해 충분한 이점을 얻지 못합니다. 따라서 이더리움 네트워크가 기간에 따라 각 스테이커의 서명을 요구하지 않고 합리적인 분산화 및 보안을 달성할 수 있다면 커뮤니티는 이러한 솔루션을 채택하여 기간당 서명 수를 효과적으로 줄일 수 있습니다.

본 글에서는 위의 두 가지 문제에 대한 해결책을 설명하겠습니다.첫째, 스테이킹 노드를 현재 형태로 개인적으로 관리하고, 각 슬롯의 정보에 서명하고, 예금을 잠그는 것을 꺼리는 사람들이 대부분의 자본을 보유하고 있다고 가정합니다. 자금이 감소한 사람들에게 재분배하는 경우, 이 사람들이 네트워크의 탈중앙화와 보안에 의미 있는 기여를 하기 위해 어떤 역할을 할 수 있을까요?

현재 이중 담보는 어떻게 작동하나요?

현재 가장 인기 있는 두 스테이킹 풀은 Lido와 RocketPool입니다. Lido에 관한 두 참여 당사자는 다음과 같습니다.

  • 노드 운영자: Lido DAO에 의해 투표됨, 이는 실제로 LDO 보유자가 선출한다는 의미 누군가가 Lido 스마트 계약 시스템에 ETH를 입금하면 stETH가 생성되고 노드 운영자는 이를 서약 풀에 넣습니다(하지만 왜냐하면 출금증명서는 스마트 계약 주소에 귀속되어 있으므로 운영자는 임의로 자금을 출금할 수 없습니다.)

  • 에이전트: 누군가가 Lido 스마트 계약 시스템에 ETH를 입금하면 stETH가 생성되고 노드 운영자는 이를 담보로 사용할 수 있습니다. (그러나 출금 인증서는 스마트 계약 주소에 바인딩되어 있으므로 운영자가 마음대로 돈을 인출할 수 없습니다.)

로켓 풀의 경우 다음과 같습니다.

  • 노드 운영자: 누구나 8 ETH와 일정 수의 RPL 토큰을 제출하면 노드 운영자가 될 수 있습니다.

  • 에이전트: 누군가가 로켓풀 스마트 계약 시스템에 ETH를 입금하면 rETH가 생성되며 노드 운영자는 이를 담보로 사용할 수 있습니다. (또한 출금 인증서가 스마트 계약 주소에 바인딩되어 있으므로 운영자가 마음대로 돈을 인출할 수 없습니다. ).

대행사 역할

이러한 시스템(또는 잠재적인 향후 프로토콜 변경으로 인해 활성화되는 새로운 시스템)에서 물어봐야 할 주요 질문은 프로토콜 관점에서 에이전트를 갖는 의미는 무엇입니까?

이 질문의 깊은 의미를 이해하기 위해 먼저 게시물에 언급된 프로토콜 변경에 대해 생각해 보도록 하겠습니다. 즉, 감소 페널티를 2 ETH로 제한하고 로켓 풀은 노드 운영자의 지분량을 2 ETH로 감소시킵니다. 로켓 풀의 시장 점유율은 100%로 증가합니다/(스테이커 및 ETH 보유자의 경우 rETH가 위험이 없어짐에 따라 거의 모든 ETH 보유자가 rETH 보유자 또는 노드 운영자가 됩니다).

rETH 보유자(프로토콜 내 보상 및 우선순위 수수료 + MEV 포함)에 대한 3% 수익과 노드 운영자에 대한 4% 수익을 가정합니다. 또한 ETH의 총 공급량은 1억개라고 가정합니다.

계산 결과는 다음과 같습니다. 복리 계산을 피하기 위해 매일 수익을 계산합니다.

이제 로켓 풀이 존재하지 않는다고 가정하면 최소 예치금은 스테이커당 2ETH로 떨어지고, 총 유동성은 625만 ETH로 제한되며, 노드 운영자의 수익은 1%로 떨어집니다. 다시 계산해 봅시다:

공격 비용 관점에서 두 시나리오를 모두 고려하십시오. 첫 번째 경우, 에이전트는 본질적으로 돈을 인출할 수 있는 권한이 없으므로 공격자는 에이전트로 등록하지 않으므로 의미가 없습니다. 따라서 그들은 모든 ETH를 스테이킹하고 노드 운영자가 됩니다. 총 스테이킹 금액의 1/3에 도달하려면 208만 이더리움을 스테이킹해야 합니다.(공정하게 말하면 여전히 상당한 숫자입니다.) 두 번째 경우, 공격자는 해당 금액에 도달하기 위해 자금만 스테이킹하면 됩니다. 전체 스테이킹 풀의 1/3을 스테이킹하더라도 여전히 208만 이더리움을 투자해야 합니다.

스테이킹 경제성과 공격 비용 관점에서 두 경우의 최종 결과는 완전히 동일합니다. 노드 운영자가 보유한 총 ETH 공급량의 비중은 하루 0.00256%씩 증가하고, 비노드 운영자가 보유한 총 ETH 공급량의 비중은 하루 0.00017%씩 감소합니다. 공격 비용은 208만 ETH이다. 따라서 이 모델에서 에이전트는 무의미한 Rube Goldberg 기계인 것처럼 보이며, 합리적인 커뮤니티는 심지어 중개자를 생략하고 스테이킹 보상을 크게 줄이고 스테이킹된 ETH의 총량을 625만개로 제한하는 경향이 있습니다.

물론, 이 글은 스테이킹 보상을 4배로 줄이고 총 스테이킹 금액을 625만개로 제한하자는 주장은 아닙니다. 오히려 이 글의 요점은 잘 작동하는 스테이킹 시스템의 핵심 속성은 에이전트가 시스템 전반에 걸쳐 상당한 책임을 져야 한다는 것입니다. 또한 에이전트가 올바른 조치를 취하라는 커뮤니티의 압력과 이타주의에 의해 크게 동기를 부여받았다면 문제가 되지 않습니다. 결국 이것이 오늘날 주요 세력의 분산형, 높은 보안 스테이킹 솔루션을 장려하는 이유입니다.

대리인의 책임

에이전트가 스테이킹 시스템에서 의미 있는 역할을 할 수 있다면 그 역할은 무엇일까요?

내 생각에는 두 가지 범주의 답변이 있다고 생각합니다.

  • 에이전트 선택: 에이전트는 자신의 지분을 맡길 노드 운영자를 선택할 수 있습니다. 합의 메커니즘에서 노드 운영자의 역할"가중치"그들에게 맡겨진 총 지분에 비례합니다. 현재 에이전트 선택 메커니즘은 여전히 ​​제한적입니다. 즉, rETH 또는 stETH 보유자는 ETH를 인출하고 다른 풀로 전환할 수 있지만 에이전트 선택의 실제 가용성은 크게 향상될 수 있습니다.

  • 합의 메커니즘 참여: 위임자는 합의 메커니즘에서 특정 역할을 수행하도록 선택할 수 있습니다. 책임은 전체 구독보다 가벼우며 긴 종료 기간과 위험 감소는 없지만 여전히 견제와 균형 역할을 할 수 있습니다. 노드 연산자.효과.

대행사 옵션 강화

대리인의 선택권을 높이는 방법에는 세 가지가 있습니다.

  • 풀의 향상된 투표 도구

  • 풀 간 경쟁 증가

  • 대리권을 고쳐라

현재 풀에서의 투표는 실제로 실용적이지 않습니다. Rocket Pool에서는 누구나 노드 운영자가 될 수 있으며, Lido에서는 투표가 ETH 보유자가 아닌 LDO 보유자에 의해 결정됩니다. Lido는 LDO + stETH의 이중 거버넌스에 대한 제안을 내놓았습니다. 그들은 보호 메커니즘을 활성화하여 새로운 투표를 방지하고 노드 운영자가 추가되거나 제거되는 것을 방지할 수 있습니다. 이는 stETH 보유자에게 어느 정도 발언권을 제공합니다. . 하지만 이 힘은 제한되어 있으며 더 강력해질 수 있습니다.

풀 간 경쟁은 이미 존재하지만 상대적으로 약합니다. 가장 큰 과제는 소규모 스테이킹 풀의 스테이킹 토큰이 유동성이 낮고 신뢰를 얻기 어렵고 애플리케이션의 지원이 적다는 것입니다.

페널티 금액을 2 또는 4 ETH와 같이 더 작은 금액으로 제한하여 처음 두 가지 문제를 개선할 수 있습니다. 그러면 나머지 ETH를 안전하게 입금하고 즉시 인출할 수 있으므로 소규모 스테이킹 풀에서도 양방향 변환이 여전히 유효합니다. 세 번째 문제는 LST 관리를 위한 전체 발행 계약(지갑에 사용되는 ERC-4337 및 ERC-6900 계약과 유사)을 생성하여 이 계약을 통해 발행된 스테이킹된 토큰이 모두 안전하다는 것을 보장함으로써 개선할 수 있습니다.

현재는 협약에 확실한 대표권자가 없지만, 앞으로도 이런 상황은 존재할 가능성이 높아 보인다. 이는 위의 아이디어와 유사한 논리를 포함하지만 프로토콜 수준에서 구현됩니다. 사물을 응고시키는 것의 장단점에 대한 더 많은 정보를 원하시면,이 기사를 참조하십시오

이러한 아이디어는 현 상태에 비해 개선되었지만 이점은 제한적입니다. 토큰 투표 거버넌스에는 문제가 있으며, 궁극적으로 모든 형태의 인센티브가 없는 프록시 선택은 토큰 투표의 한 형태일 뿐입니다. 이것이 위임 지분 증명에 대한 저의 주요 불만이었습니다. 따라서 더욱 강력한 합의 참여를 달성할 수 있는 방법을 고려하는 것도 중요합니다.

합의 참여

유동성 스테이킹과 관련된 현재의 문제를 제쳐두더라도, 현재의 독립적인 스테이킹 방법에는 한계가 있습니다. 단일 슬롯 최종성을 가정하면 각 슬롯은 이상적으로 약 100,000~1,000,000개의 BLS 서명을 처리할 수 있습니다. 서명을 집계하기 위해 재귀 SNARK를 사용하더라도 서명 추적성을 위해 각 서명에 참가자의 비트 필드를 제공해야 합니다. 이더리움이 글로벌 규모의 네트워크가 된다면 스토리지 비트필드를 완전히 분산시키는 것만으로는 충분하지 않습니다. 각 슬롯의 16MB는 약 6,400만 명의 스테이커만 지원할 수 있습니다.

이러한 관점에서 볼 때 스테이킹을 복잡도가 더 높은 감소 가능한 계층과 더 낮은 복잡도 계층으로 나누는 것이 가치가 있습니다. 여기서 각 슬롯은 활성화되지만 참가자는 10,000명만 있을 수 있습니다. 또는 복잡도가 낮은 계층은 가끔씩만 참여하도록 호출됩니다. 복잡성이 낮은 레이어는 감소에서 완전히 면제되거나 참가자에게 무작위로 몇 개의 슬롯 내에 입금할 수 있는 기회가 주어져 감소 대상이 될 수 있습니다.

실제로 이는 검증인 잔액 한도를 늘리고 이어서 잔액 임계값(예: 2048 ETH)을 늘려 기존 검증인이 더 높거나 낮은 복잡성 계층으로 이동하는지 결정함으로써 달성할 수 있습니다.

다음은 이러한 소규모 스테이킹 역할의 작동 방식에 대한 몇 가지 제안 사항입니다.

  • 각 슬롯에 대해 10,000명의 소규모 스테이커가 무작위로 선택되어 해당 슬롯을 대표한다고 믿는 것에 서명할 수 있습니다. 작은 스테이커를 입력으로 사용하여 LMD GHOST 포크 선택 규칙을 실행합니다. 소규모 스테이커가 주도하는 포크 ​​선택과 노드 운영자가 주도하는 포크 ​​선택 사이에 약간의 불일치가 있는 경우, 사용자의 클라이언트는 어떤 블록도 최종 확인으로 받아들이지 않고 오류를 표시합니다. 이로 인해 커뮤니티가 상황을 해결하기 위해 개입하게 됩니다.

  • 에이전트는 온라인 상태이며 다음 시간 동안 소규모 스테이커 역할을 할 의사가 있음을 네트워크에 알리는 트랜잭션을 보낼 수 있습니다. 노드가 보낸 메시지(블록 또는 증명)를 계산하려면 노드와 무작위로 선택된 에이전트가 모두 노드의 확인 정보에 서명해야 합니다.

  • 에이전트는 온라인 상태이며 다음 시간 동안 소규모 스테이커 역할을 할 의사가 있음을 네트워크에 알리는 트랜잭션을 보낼 수 있습니다. 각 시대마다 10명의 무작위 에이전트가 포함 목록 제공자로 선택되고 10,000명의 추가 에이전트가 유권자로 선택됩니다. 이들은 k-슬롯 이전에 선택되며 k-슬롯 창이 제공되어 온라인 존재를 확인하는 온체인 메시지를 게시합니다. 확인된 각 선택 포함 목록 공급자는 포함 목록을 게시할 수 있습니다. 단, 각 포함 목록에 대해 해당 포함 목록의 거래가 포함되거나 일반 1 선택된 유권자의 투표에서 포함 목록을 사용할 수 없다고 표시되는 경우는 제외됩니다. 그렇지 않으면 블록이 무효로 간주됩니다.

이러한 소규모 스테이킹 노드의 공통점은 모든 작업을 수행하기 위해 모든 슬롯에 적극적으로 참여할 필요가 없거나 라이트 노드만 있어도 된다는 것입니다. 따라서 노드 배포에는 노드 운영자가 애플리케이션이나 브라우저 플러그인을 통해 달성할 수 있는 합의 계층의 검증만 필요하며, 이는 대부분 수동적이며 계산 오버헤드, 하드웨어 요구 사항 또는 기술적 노하우를 부과하지 않습니다. ZK-EVM과 같은 고급 기술이 필요합니다.

이러한 소규모 행위자도 모두 공통 목표를 공유합니다. 즉, 51% 대다수의 노드 운영자에 의한 거래 검열을 방지하는 것입니다. 첫 번째와 두 번째는 또한 대다수가 최종성 감소에 참여하는 것을 방지합니다. 세 번째는 검열과 더 직접적으로 관련되어 있지만 다수의 노드 운영자의 선택에 더 취약합니다.

이러한 아이디어는 프로토콜에 구현된 이중 스테이킹 솔루션의 관점에서 작성되었지만 스테이킹 풀의 기능으로 구현될 수도 있습니다. 다음은 몇 가지 구체적인 구현 아이디어입니다.

  • 프로토콜 관점에서 각 검증인은 두 개의 서약 키(연속 서약 키 P, 호출 가능한 바인딩된 이더리움 주소)를 설정하고 빠른 서약 키 Q를 출력할 수 있습니다. 포크 선택을 추적하는 노드의 서명 정보는 P로 표시되고 서명된 정보는 Q로 표시됩니다. PQ 저장 결과가 일치하지 않는 경우 블록의 확정이 허용되지 않으며 유동성 풀이 무작위 선택을 담당합니다. 대표.

  • 프로토콜은 크게 변경되지 않고 그대로 유지될 수 있지만 해당 기간 동안 검증인의 공개 키는 P+Q로 설정됩니다. 축소의 경우 두 개의 축소 가능한 메시지는 서로 다른 Q 키를 가질 수 있지만 동일한 P 키를 갖게 됩니다. 축소 설계에서는 이 경우를 처리해야 합니다.

  • Q 키는 프로토콜에서 블록의 포함 목록에 서명하고 확인하는 데만 사용할 수 있습니다. 이 경우 Q는 단일 키가 아닌 스마트 계약이 될 수 있으므로 스테이킹 풀은 이를 사용하여 보다 복잡한 투표 논리를 구현할 수 있으며 무작위로 선택된 공급자로부터 포함 목록을 수락하거나 포함 목록이 투표에 사용할 수 없음을 나타냅니다. .

결론적으로

올바르게 구현된 경우 지분 증명 설계를 미세 조정하면 두 가지 문제를 한 번에 해결할 수 있습니다.

  • 오늘날 독립적인 지분 증명을 수행할 수 있는 자원이나 능력이 없는 사람들에게 지분 증명에 참여할 수 있는 기회를 제공하여 (i) 지원할 노드를 선택할 수 있는 권한 및 (ii)를 포함하여 더 많은 권한을 보유하게 됩니다. 전체 지분증명 노드를 운영하는 것보다 더 가볍지만 여전히 의미 있는 방식으로 합의에 적극적으로 참여하세요. 모든 참가자가 이러한 옵션 중 하나 또는 둘 다를 선택하는 것은 아니지만, 이러한 옵션 중 하나 또는 둘 다를 선택하는 모든 참가자는 현 상태에 비해 상당한 개선을 경험하게 될 것입니다.

  • 단일 슬롯 최종성 체제 하에서도 이더리움 합의 계층이 각 슬롯에서 처리해야 하는 서명 수를 약 10,000개 정도의 더 작은 수로 줄입니다. 이는 또한 분산화에도 도움이 되어 모든 사람이 검증 노드를 더 쉽게 실행할 수 있게 해줍니다.

이러한 솔루션의 경우 문제에 대한 해결책은 지분 증명 프로토콜 내에서 사용자에게 부여된 권한, 지분 증명 프로토콜 간 사용자 선택, 프로토콜 내 설정 등 다양한 추상화 수준에서 찾을 수 있습니다. 이 선택은 신중하게 고려해야 하며 프로토콜의 복잡성과 프로토콜 경제의 변경 범위를 최소화하는 동시에 원하는 목표를 달성하기 위해 최소 실행 가능한 설정을 선택하는 것이 더 나은 경우가 많습니다.

链捕手
作者文库