Solana 연합 신문: Solana의 동시 리더십 메커니즘, MEV 문제 해결 및 글로벌 가격 발견 엔진 구축
编译:深潮TechFlow
개요
MEV는 무허가 블록체인에서 기본적인 문제입니다. 대부분의 무허가 블록체인과 마찬가지로, Solana의 목표는 체인 운영자가 사용자로부터 추출하는 MEV를 최소화하는 것입니다.
Solana가 취하는 접근 방식은 리더(즉, 블록 생산자) 간의 경쟁을 극대화하여 MEV를 줄이는 것입니다. 이는 슬롯 시간을 단축하고, 단일 리더가 연속적으로 예약하는 슬롯 수를 줄이며, 각 슬롯의 동시 리더 수를 증가시키는 것을 의미합니다.
일반적으로 초당 더 많은 리더는 사용자가 T초 후에 더 많은 선택지를 가지게 하여 곧 임명될 리더 중에서 가장 유리한 제안을 선택할 수 있게 합니다. 더 많은 리더는 또한 우수한 리더가 블록 공간을 제공하는 비용을 낮추어 사용자가 우수한 리더와만 거래하고 불량 리더의 거래를 배제하기 쉽게 만듭니다. 시장은 무엇이 좋은지, 무엇이 나쁜지를 결정해야 합니다.
Solana의 더 큰 비전은 어떤 중앙화 거래소(CEX)의 최상의 성과와 경쟁할 수 있는 글로벌 무허가 가격 발견 엔진을 구축하는 것입니다.
싱가포르에서 시장에 영향을 미치는 사건이 발생하면, 소식은 여전히 광섬유를 통해 빛의 속도로 뉴욕의 CEX로 전송되어야 합니다. 소식이 뉴욕에 도착하기 전에 Solana 네트워크의 리더는 이미 블록에서 이 소식을 방송해야 합니다. 물리적 인터넷 분할이 동시에 발생하지 않는 한, 소식이 뉴욕에 도착할 때 Solana의 상태는 이미 해당 소식을 반영하고 있어야 합니다. 따라서 뉴욕의 CEX와 Solana 간에 차익 거래 기회가 존재해서는 안 됩니다.
이 목표를 완전히 달성하기 위해 Solana는 많은 동시 리더가 필요하며, 높은 낙관적인 확인 보장을 가져야 합니다.
다중 리더 구성
현재의 리더 일정처럼 시스템은 각 슬롯을 1명의 리더가 아닌 2명의 리더로 구성합니다. 이 두 리더를 구별하기 위해 하나의 채널은 A로, 다른 하나는 B로 표시됩니다. A와 B는 독립적으로 순환할 수 있습니다. 이 계획을 실현하기 위해 해결해야 할 질문은 다음과 같습니다:
블록 A와 B가 다른 시간에 도착하거나 실패하면 어떻게 됩니까?
블록 A와 B의 거래 순서를 어떻게 병합합니까?
A와 B 사이에 블록 용량을 어떻게 분배합니까?
동시 블록 전송
구체적인 과정을 이해하기 위해 Turbine에 대해 간단히 알아보겠습니다.
리더는 블록을 구성할 때 이를 조각으로 나눕니다. 32개의 조각 배치는 32개의 코드 조각의 오류 수정 코드입니다. 64개의 조각 배치는 머클화되어 서명된 루트와 연결됩니다.
각 조각은 독립적인 결정론적 무작위 경로를 통해 전송됩니다. 각 마지막 배치의 재전송자는 루트를 서명합니다.
수신자의 관점에서 볼 때, 각 수신자는 검증된 재전송자로부터 32개의 조각을 수신해야 합니다. 누락된 조각은 무작위로 복구됩니다.
이 숫자는 증가하거나 감소할 수 있으며, 지연에 미치는 영향은 미미합니다.
재전송자의 조각 경로 샘플링이 충분히 무작위이고 지분 가중치가 부여된 경우, 협동 분할 네트워크에 필요한 지분은 ε 지분을 훨씬 초과할 것입니다. 수신자가 각 배치의 32/64(구성 가능) 조각이 T 시간 내에 도착했다고 감지하면, 각 노드도 마찬가지일 가능성이 높습니다. 이는 32개의 무작위 노드가 충분히 커서 모두 무작위로 같은 분할에 있을 가능성이 낮기 때문입니다.
분할이 발생하면, 합의가 이를 해결해야 합니다. 이는 보안에 영향을 미치지 않지만 속도는 상대적으로 느립니다.
다중 블록 생산
단일 블록을 전송하는 경우, 각 수신자(다음 리더 포함)는 각 블록의 조각 배치가 도착하는 것을 보게 됩니다. 블록이 T 밀리초 내에 완전하지 않으면, 현재 리더는 해당 블록을 건너뛰고 이를 포함하지 않은 분기를 구축합니다. 리더가 잘못된 경우, 모든 다른 노드는 블록에 투표하고 리더의 블록은 건너뛰어집니다. 비장애 리더는 즉시 투표에 의해 지시된 가장 무거운 분기로 전환합니다.
다중 블록 전송의 경우, 각 노드는 최대 T 밀리초를 기다린 후 관찰된 블록 분할에 대해 투표해야 합니다. 두 개의 동시 리더에 대해 가능한 경우는 A, B 또는 A와 B입니다. 블록 지연이 발생할 경우에만 추가 지연이 발생합니다. 정상 작동 시 모든 블록은 동시에 도착해야 하며, 각 검증자는 두 블록이 모두 도착한 후 즉시 투표할 수 있습니다. 따라서 T는 실제로 0에 가까울 수 있습니다.
이 공격에서 중점적으로 방어해야 할 것은, 극소량의 토큰을 스테이킹한 리더가 슬롯 경계에서 약간 늦게 블록을 전송하여 신뢰할 수 있게 네트워크 분할을 유도하고, 네트워크가 합의 메커니즘을 통해 문제를 해결하는 데 많은 시간을 소모하게 할 수 있는지입니다. 네트워크의 일부는 A에 투표하고, 일부는 B에 투표하며, 또 일부는 A와 B에 동시에 투표할 수 있습니다. 이 세 가지 분할 상황은 모두 합의 메커니즘을 통해 해결해야 합니다.
구체적으로, 제로 이웃의 목표는 노드가 동시에 블록을 복구하도록 보장하는 것입니다. 공격자가 제로 이웃에 협동 노드를 가지고 있다면, 그들은 정상적으로 31/64 조각을 전송하고 공격자가 마지막 조각을 선택적으로 전송하여 분할을 시도할 수 있습니다. 정직한 노드는 어떤 재전송자가 지연되는지를 감지할 수 있으며, 어떤 단일 정직한 노드가 블록을 복구한 후 즉시 누락된 조각을 그들에게 전송할 수 있습니다. 재전송자는 계속할 수 있으며, 그들이 어디에서든 조각을 수신하거나 복구하는 경우입니다. 따라서 블록은 정직한 노드가 복구한 후 곧 모든 노드에 의해 복구되어야 합니다. 대기 시간을 결정하기 위해 테스트가 필요하며, 이는 절대적인지, 아니면 각 조각의 도착 시간에 따라 가중치가 부여되는지, 지분 노드 평판을 사용해야 하는지를 결정해야 합니다.
각 블록에서 협동 리더와 재전송자의 확률은 대략 P 리더 지분(64P 재전송자 지분)입니다. 1%의 지분은 공격자가 리더로 배치한 ½ 조각 배치에서 공격을 시도할 수 있습니다. 따라서 탐지 및 완화는 충분히 강력해야 합니다.
이 공격은 다음 리더에 미치는 영향이 적습니다. 비동기 실행은 사용되지 않은 용량이 이월될 수 있도록 허용합니다. 따라서 현재 리더가 다음 리더에게 슬롯을 건너뛰도록 강요하고, 다음 리더가 4개의 연속 슬롯을 가지면, 건너뛰어진 슬롯의 사용되지 않은 용량은 이월될 수 있어 리더가 건너뛴 슬롯의 거래를 다시 포함할 수 있게 합니다.
동시 블록 병합
사용자가 포함될 기회를 늘리거나 블록에서 첫 번째로 배치되기 위해 동일한 거래를 리더 A와 B에게 동시에 전송하면 자원이 낭비됩니다. 이러한 경우가 발생하면, 동시 리더 수를 늘리는 것이 성능 향상에 미치는 효과는 매우 제한적일 것입니다. 왜냐하면 그들은 단지 두 배의 쓰레기 거래를 처리하고 있기 때문입니다.
중복 거래를 방지하기 위해, 수수료 지불자의 상위 N위가 거래가 어느 리더 채널에서 유효한지를 결정합니다. 이 예에서, 최고위는 A 또는 B를 선택합니다. 수수료 지불자는 독점적인 채널에 할당되어야 하며, 그래야 리더가 수수료 지불자가 유효하다고 판단하고 다른 리더에게 모든 lamports(솔라나 블록체인에서의 최소 통화 단위)를 소진하지 않았음을 확인할 수 있습니다.
이것은 스팸 발송자가 논리적으로 동일한 거래에 대해 최소한 두 번의 수수료를 지불하도록 강요하지만, 첫 번째 거래가 될 확률을 높이기 위해 스팸 발송자는 여전히 논리적으로 동일한 거래를 전송할 수 있습니다.
이러한 행동을 방지하기 위해, 사용자는 리더의 우선 수수료 외에 추가로 100% 소각 주문 수수료를 포함하도록 선택할 수 있습니다. 최고 주문 수수료가 먼저 실행됩니다. 그렇지 않으면 선입선출(FIFO) 정렬을 사용합니다. 동점의 경우, 결정론적 무작위 배열을 사용하여 순서를 해결합니다. 따라서 스팸 발송자에게는 주문 수수료를 높이고 먼저 실행하는 것이 두 번의 포함 수수료를 지불하는 것보다 비용 효율적입니다.
번들 및 재정렬 거래 시퀀스를 처리하기 위해 시스템은 전체 거래 시퀀스의 정렬 비용을 덮기 위해 주문 수수료를 추가할 수 있는 번들 거래를 지원해야 합니다. 수수료 지불자는 자신의 예약된 채널에서만 유효하므로, 번들은 자신의 채널 내에서만 시퀀스를 조작할 수 있습니다.
또는 주문 수수료가 필요하지 않을 수 있습니다. FIFO 정렬을 사용하고 스팸 발송자가 모든 채널에서 항상 우선 수수료를 부과받는 경우, N명의 리더에게 포함 기회를 높이기 위해 지불하는 비용과 거래를 가장 먼저 포함할 가능성이 높은 최근 리더에게 지불하는 비용을 시장이 결정하도록 허용하면 될 수 있습니다.
블록 자원 관리
블록체인 네트워크에서 두 개의 동시 리더가 있을 때, 시스템 전체의 블록 용량 제한은 평균적으로 분배되어야 합니다. 구체적으로, 총 용량뿐만 아니라 각 특정 제한도 포함됩니다. 예를 들어, 쓰기 잠금 제한 - 어떤 계정도 600만 계산 단위(CUs)를 초과하여 쓸 수 없으며, 각 리더는 최대 2400만 CUs의 거래를 예약할 수 있습니다. 이렇게 하면 최악의 경우에도 병합된 블록이 시스템의 총 용량 제한을 초과하지 않게 됩니다.
이러한 메커니즘은 수수료의 변동과 자원의 미활용을 초래할 수 있습니다. 왜냐하면 스케줄링 우선 순위의 수수료는 각 리더의 용량에 의해 결정되며, 각 리더는 다른 동시 리더의 스케줄링 상태를 거의 알지 못하기 때문입니다.
자원 활용 부족과 이로 인해 발생하는 수수료 급등을 완화하기 위해, 모든 사용되지 않은 블록 용량은 미래의 블록으로 이월되어야 합니다. 즉, 현재 병합된 블록이 쓰기 잠금, 총 바이트 수 또는 총 계산 단위(CUs)에서 X를 사용하지 않았다면, K*X를 다음 블록에 추가해야 하며, 여기서 0 < K < 1이며, 특정 최대값까지 가능합니다. 비동기 실행은 체인 최상단에서 최대 한 epoch까지 지연될 수 있으므로, 용량 이월은 상당히 공격적일 수 있습니다.
최근 블록 데이터에 따르면, 대부분의 블록은 일반적으로 80%가 채워지며, 쓰기 잠금 제한은 50% 미만입니다. 일반적으로 미래의 블록은 항상 일부 여유 용량을 가져야 합니다. 블록이 일시적으로 용량 제한을 초과할 수 있으므로, 실행은 합의 과정과 비동기적으로 진행되어야 합니다. 비동기 실행 제안에 대한 자세한 내용은 APE 기사를 참조하십시오.