
Minisketch는 오래된 문제를 해결하려는 새로운 솔루션입니다.
Blockstream 공동 창립자인 Pieter Wuille, Bitcoin Core 기여자이자 Blockstream 공동 창립자인 Gregory Maxwell, Blockstream 소프트웨어 엔지니어 Gleb Naumenko가 주도하는 이 오픈 소스 이니셔티브는 각 전체 노드의 메모리 풀 간의 집합 조정을 달성하기 위해 설계되었습니다.
“집합 조정은 간단히 말해 서로 다른 컴퓨터에 저장된 두 집합 간의 차이를 파악하려고 하면서 교환해야 할 데이터 양을 최소화하는 문제입니다. 특히, 전체 데이터 집합보다 적은 데이터를 전송하면서 이를 시도하고자 합니다.”라고 Wuille은 Bitcoin Magazine에 말했습니다.
비트코인에 있어 이는 노드 간의 거래 데이터 차이를 식별하는 것을 의미합니다. Maxwell은 집합 조정을 전화의 연락처 목록을 다른 사람과 동기화하는 과정에 비유했습니다.
“그들에게 전체 목록을 보낼 수 있지만, 그것은 엽서에 들어가지 않을 것이고, 그들은 이미 대부분의 연락처를 알고 있기 때문에 매우 낭비적일 것입니다… 사실, 실제 차이에 대한 사전 정보 없이도 목록 간의 차이 크기만큼의 정보만 전송하여 전체 연락처 집합을 전달할 수 있습니다.”라고 Maxwell은 Bitcoin Magazine에 말했습니다.
간단히 말해, 집합 조정은 각 노드가 서로 전송하는 데이터 양을 최소화하여 비트코인 네트워크에서 전체 노드를 운영하는 데 필요한 대역폭을 줄입니다. 이는 노드들이 메모리 풀의 데이터를 더 효율적으로 동기화할 수 있게 합니다.
집합 조정 분석
Minisketch가 수정하고자 하는 문제는 블록체인에 국한되지 않습니다.
집합 조정은 모든 분산 시스템이 겪는 지속적인 불만입니다. 넓게 보면, 이는 분산 네트워크에서 두 개 이상의 당사자가 서로 다른 데이터 집합을 보유하고 있으며, 이를 조정하기 위해 누가 어떤 데이터를 누락했는지, 그리고 누가 어떤 데이터를 가지고 있는지를 파악해야 함을 의미합니다.
비트코인에 있어 이 데이터는 거래입니다. 이 거래는 노드 간에 중계되어 채굴자들이 새로운 블록에 포함시키기 위해 수집됩니다.
문제는 거래의 순서가 메모리 풀마다 다를 수 있다는 것입니다(새로운 블록에 포함될 수신 거래를 나열하는 대기열). 이는 메모리 풀과 새로 중계된 블록 간의 거래 순서에 불일치가 있을 수 있음을 의미합니다.
“비트코인 노드는 서로 거래를 중계할 때 … 문제를 겪습니다. 특정 노드는 다른 링크에서 수신한 거래가 대부분 동일하지만 정확히 같지는 않습니다. 오늘날 노드는 누가 어떤 데이터를 받아야 하는지를 파악하는 데 많은 대역폭을 낭비하고 있습니다.”라고 Maxwell은 말했습니다.
Minisketch가 격차를 해소하는 방법
PinSketch 알고리즘의 구현인 minisketch는 집합 스케치를 구성하는 데 사용될 데이터 라이브러리를 구축합니다(즉, 이 사용 사례에 대해 거래 데이터의 집합). 노드와 채굴자는 이러한 집합을 사용하여 간결한 집합 조정을 수행할 수 있습니다.
간단히 말해, 이 솔루션은 노드 운영자가 거래 데이터에 대한 메모를 비교할 수 있게 합니다. 그들은 거래의 집합(목록)을 스케치(생성)할 수 있으며, 프로그램은 이러한 집합을 교차 확인하여 한 집합에는 있지만 다른 집합에는 없는 데이터를 확인합니다. 그러나 minisketch를 사용하면 노드는 전체 집합을 스케치하기 위해 거래 집합 간의 차이만 알면 됩니다.
Wuille이 설명한 바와 같이, 실제로는 다음과 같이 보일 것입니다:
“단일 차이로 단순화하면, 이것이 어떻게 작동할 수 있는지 쉽게 알 수 있습니다:
- 내가 {3,5,7,11} 집합을 가지고 있고, 당신이 {3,5,7,9,11} 집합을 가지고 있다고 가정합시다. 그러면 차이는 {9}입니다.
- 우리는 각자의 요소의 합을 계산하므로, 나는 3+5+7+11=26을 얻고, 당신은 3+5+7+9+11=35를 얻습니다.
- 나는 내 합 26을 당신에게 보내고, 당신은 그것을 당신의 합에서 빼면 차이는 9입니다.
“이것은 작동하지만 단일 차이를 찾는 데 제한됩니다. Minisketch는 다양한 유형의 데이터 ‘합’을 전송하여 이를 일반화합니다. 결과적으로 N개의 서로 다른 합으로 N개의 차이를 찾을 수 있습니다… 집합 간의 차이 수가 전송된 ‘합’ 수를 초과하지 않는 한, minisketch는 항상 모든 차이를 찾는 데 성공할 것입니다.”
성공적으로 구현된다면, 이 집합 조정은 노드 간의 거래 중계를 더 효율적으로 만들 수 있습니다. 비트코인 인프라의 다른 개선 사항과 함께, 이는 각 노드의 방송 부담을 상당히 줄일 수 있다고 Maxwell은 말했습니다.
“나는 얼마 전 측정을 했고 거래 중계가 노드의 대역폭 사용량의 약 87%에 해당한다는 것을 발견했습니다. 이는 컴팩트 블록 이전의 수치이므로 현재는 더 클 수 있습니다. 우리의 시뮬레이션 결과는 minisketch를 포함한 개선 사항의 조합을 통해 중계 오버헤드를 40배 줄일 수 있을 것이라는 것을 나타냅니다.”
Wuille에 따르면, minisketch 솔루션은 “더 강력한 네트워크”를 생성할 수도 있습니다. Maxwell은 이 생각을 확장하여 프로토콜을 통해 노드가 표준 8개 대신 16~24개의 다른 노드와 연결할 수 있는 저장된 대역폭을 사용할 수 있다고 주장했습니다. “이는 이론적 공격을 수행하기 위해 더 많은 대역폭을 사용하지 않고도 더욱 어렵게 만들 것입니다.”
Maxwell은 언젠가 minisketch가 블록 전파를 개편하는 데 사용될 수 있기를 희망하고 있습니다. “IBLT(가역 블룸 조회 테이블)를 사용한 블록 전파를 위한 다른 프로토콜이 있었는데, minisketch가 이를 훨씬 개선할 것입니다.”라고 그는 말했지만, 그러한 솔루션이 “긴급하지 않다”고 인정했습니다. “[컴팩트] 블록은 이미 노드당 하루에 약 4MB만 사용하므로, 개선이 그 숫자를 0으로 줄인다고 해도 사용자나 네트워크에 큰 차이를 만들지는 않을 것입니다.” 대신, 그는 이 솔루션이 “Blockstream의 위성처럼 매우 낮은 전송에 더 유용할 것”이라고 구상하고 있습니다.
Wuille은 minisketch가 노드의 대역폭 요구 사항을 줄이고 IBLT보다 더 높은 성공 확률을 가질 것이라고 밝혔지만, 더 큰 데이터 세트에 대해서는 IBLT가 더 빠를 것이라고 인정했습니다. Maxwell은 “IBLT는 몇 백 개의 차이보다 적은 경우 매우 비효율적이며,” minisketch는 더 작은 데이터 세트에 대해 더 효율적이라고 덧붙였습니다.
그러나 minisketch는 여전히 초기 단계에 있으며, Wuille은 실제 BIP가 다소 멀리 있다고 말하며 채택이 여러 요인에 따라 달라질 것이라고 밝혔습니다.
Maxwell은 자신의 관찰을 반복하며 프로토콜이 비트코인 네트워크 합의의 일부가 아니라고 언급했습니다. 만약 어떤 노드 운영자가 충분히 편안하게 느끼고 거래 중계를 개선하고 싶다면, 네트워크에서 널리 채택되지 않더라도 minisketch를 사용할 수 있다고 말했습니다.
“하나의 유용한 점은 중계 메커니즘이 비트코인 합의의 일부가 아니라는 것입니다. 당신과 나는 다른 사람들이 선택하는 것과 관계없이 서로 간에 개선된 프로토콜을 사용하기 시작할 수 있습니다. 이는 중계 개선이 일반적인 프로토콜/소프트웨어 엔지니어링 고려 사항에 의해 지연된다는 것을 의미합니다 — 우리는 그것을 구축하고, 검증하고, 통합해야 합니다. 그러나 합의 변경과 달리, 그것은 사용하기로 선택한 사람들 외에는 누구의 동의도 필요하지 않습니다.”