Solana의 스테이크 가중 서비스 품질(QoS) 가이드

스테이크 가중 서비스 품질(QoS)이란?

스테이크 가중 QoS(서비스 품질)는 활성화 시 리더(블록 생성자)가 스테이킹된 validator를 통해 프록시된 트랜잭션을 식별하고 우선순위를 부여할 수 있도록 하는 구현 기능으로, 추가적인 시빌 저항 메커니즘으로 작동합니다. Solana는 지분 증명(PoS) 네트워크이므로, 스테이크 가중 방식의 활용 범위를 트랜잭션 서비스 품질까지 자연스럽게 확장할 수 있습니다. 이 모델에서 0.5%의 스테이크를 보유한 validator는 리더에게 최대 0.5%의 패킷을 전송할 권리를 가지며, 나머지 네트워크의 시빌 공격에 저항할 수 있습니다.

이 기능을 활성화하는 운영자는 스테이크가 낮거나 없는(저품질) validator가 고품질(고스테이크) validator에서 발생하는 트랜잭션을 '압도'할 가능성을 줄임으로써 네트워크의 보안과 성능을 향상시킬 수 있습니다(향상된 시빌 저항이라고도 함).

스테이크 가중 QoS 구현의 잠재적 이점 중 하나는 Validator와 RPC 노드 간에 특정 합의가 이루어질 경우 실현될 수 있습니다. RPC 노드는 Validator와 피어링에 합의함으로써 블록에 더 많은 트랜잭션을 포함시킬 수 있으며, Validator는 RPC 노드에 더 많은 용량을 제공할 수 있습니다. 이러한 합의는 RPC 운영자와 Validator 간에 직접 이루어져야 하며, 피어링 완료를 위해 이 문서에 설명된 단계의 구현이 포함되어야 합니다.

스테이크 가중 QoS의 수혜자는 누구인가요?

상업용 RPC 인프라 운영자와 거래소가 스테이크 가중 QoS의 주요 수혜자 중 하나가 될 가능성이 높습니다. RPC 운영자는 스테이킹된 validator와 거래를 체결하거나 협상하기에 유리한 위치에 있으며, 이를 통해 전체적으로 블록에 포함되는 트랜잭션 비율을 높일 수 있습니다. 자체 인프라에서 validator 노드와 RPC 노드를 모두 운영하는 거래소(또는 기타 기관)는 내부적으로 이 기능을 활성화할 수 있으며, 자체 인프라에서 실행되는 RPC 노드를 신뢰할 수 있다는 확신을 가질 수 있습니다.

스테이크 가중 QoS가 중요한 이유는 무엇인가요?

스테이크 가중 QoS가 활성화되면, 1%의 스테이크를 보유한 validator는 리더에게 최대 1%의 패킷을 전송할 권리를 갖게 됩니다. 이를 통해 스테이크가 높은 validator는 더 높은 서비스 품질을 보장받으며, 스테이크가 낮은(더 적은 지분을 보유한) 저품질 validator가 악의적으로 트랜잭션을 차단하는 것을 방지하고 전반적인 시빌 저항성을 높입니다.

다른 방식으로 설명하자면, 1인 탑승 차량이 카풀 전용 차선을 자유롭게 이용할 수 있다고 상상해 보세요. 동일한 도로에서 더 많은 사람을 효율적으로 이동시키기 위해 만들어진 카풀 차선은 곧 무용지물이 될 것입니다. 도로 전체의 기능이 저하되고 더 적은 수의 통근자만이 목적지에 도달할 수 있게 됩니다. 이는 스테이크가 낮은 validator가 스테이크가 높은 validator와 동일한 우선순위로 리더에게 트랜잭션을 제출할 수 있을 때 발생하는 상황과 유사합니다.

스테이크 가중 QoS를 활성화해야 하는 대상은 누구인가요?

스테이크 가중 QoS는 신뢰도가 높은 RPC 노드와 연결된 Validator 노드에서 활성화해야 합니다. 이는 이미 신뢰 수준이 높은 동일한 인프라에서 RPC와 Validator를 함께 운영하는 상황에서 유용합니다. 스테이크 가중 QoS는 높은 신뢰 구성에서 가장 잘 작동하며, 기능을 활성화하기 전에 Validator와 RPC가 사전에 합의에 도달해야 합니다. 신뢰할 수 없는 RPC와 스테이크 가중 QoS를 활성화하려는 시도는 Validator에게 강력히 권장하지 않습니다.

스테이크는 블록을 생성하는 validator에 적용되어야 합니다. RPC 서버에 스테이크를 위임하는 것은 필요하지 않으며, 권장되지도 않고, 효과적이지도 않습니다.

스테이크 가중 QoS는 어떻게 작동하나요?

스테이크 가중 QoS가 활성화되면, validator와 연결된 RPC 노드는 해당 RPC 노드에서 들어오는 TPU(트랜잭션 처리 장치) 트래픽을 리더가 처리하는 방식에 있어 '가상' 스테이크를 획득하며, 이는 일반적으로는 불가능한 방식입니다. 정의에 따르면, RPC 노드는 '비스테이킹' 및 '비투표' 즉, '비합의' 노드로, 합의 노드와 동일한 방식으로 스테이킹을 통한 우선 트랜잭션 혜택을 받을 수 없습니다. 그렇다면 스테이크 가중 QoS를 사용하여 트랜잭션을 처리하려면 어떻게 해야 할까요? 스테이크 가중 QoS를 활성화하려면 validator 노드와 RPC 노드를 신뢰할 수 있는 피어 관계로 구성해야 합니다. 이는 아래에 나열된 validator 노드와 RPC 노드 모두에 대한 별도의 구성 단계를 포함합니다. 스테이크 가중 QoS를 활성화하려는 운영자는 시작 전에 다음이 필요합니다:

네트워크에서 실행 중인 스테이크를 보유한 validator 및 해당 validator와 피어링된 RPC

양쪽 모두 올바르게 구성되지 않으면 스테이크 가중 QoS는 작동하지 않습니다.

Validator 노드 구성

validator에서 --staked-nodes-overrides /path/to/overrides.yml을 활성화해야 합니다. --staked-nodes-overrides 플래그는 validator가 알려진 출처에서 전송되는 트랜잭션에 스테이크를 적용하여 해당 트랜잭션을 우선순위로 처리할 수 있도록 돕습니다. 이를 통해 validator가 다른 호스트보다 특정 알려진 호스트의 트랜잭션을 우선시하여 RPC와의 스테이크 가중 QoS 사용을 가능하게 할 수 있습니다. RPC는 어떤 방식으로도 스테이킹되어서는 안 됩니다.

현재 스테이크 가중 QoS는 리더의 TPU 용량 중 80%에 스테이크 가중 우선순위를 부여합니다. 그러나 비스테이킹 피어에 가상 스테이크를 할당하는 것을 포함하여 TPU 피어에 다양한 스테이크 가중치를 가상으로 할당하는 데 사용할 수 있는 구성 옵션이 있습니다.

--staked-nodes-overrides의 오버라이드 파일은 다음과 같습니다:

staked_map_id:
pubkey1: 1000000000000000
pubkey2: 4000000000000000

staked_map_id는 각 RPC에 적용할 스테이크 양(lamport 단위)에 대한 신원 pubkey 매핑을 포함합니다. 설정 시 validator는 해당 신원 publicKey에서 발견된 RPC와의 QUIC 연결을 우선시하며, 해당 트랜잭션에 스테이크 양을 할당합니다. 리더의 TPU 용량 중 80%는 staked-nodes-overrides 파일에 지정된 lamport 양과 기존 클러스터 스테이크를 기반으로 비례적으로 분배됩니다.

RPC 노드 구성

RPC에서는 --rpc-send-transaction-tpu-peer를 사용하여 특정 리더에게 트랜잭션을 전달해야 합니다. 정확한 사용법은 --rpc-send-transaction-tpu-peer HOST:PORT입니다. Host는 staked-nodes-overrides가 활성화된 리더의 IP 주소이며, Port는 해당 호스트의 QUIC TPU 포트입니다. 리더의 QUIC TPU 포트는 getClusterNodes에 RPC 호출을 통해 확인할 수 있습니다.

피어링은 다음과 같이 이루어집니다:

스테이크 가중 QoS를 위한 Validator와 RPC 피어링 다이어그램스테이크 가중 QoS를 위한 Validator와 RPC 피어링 다이어그램

결론

스테이크 가중 QoS는 현재 Agave로 알려진 Solana 클라이언트의 v1.14에서 도입된 선택적 기능입니다. Agave는 Solana Labs 클라이언트의 포크 버전으로, 전 Solana Labs 엔지니어링 팀으로 구성된 스핀아웃 조직인 Anza 팀이 사용하는 활성 브랜치가 되었습니다.

스테이크 가중 QoS 기능은 스테이킹된 노드 운영자와 신뢰 관계를 구축할 수 있는 위치에 있는 RPC 인프라 운영자에게 가장 유용할 것입니다. 또한 RPC 노드와 validator 노드를 모두 운영하며 내부적으로 높은 신뢰 연결을 구축할 수 있는 거래소에도 유용할 것입니다.

Is this page helpful?