비트코인 사용자는 전체 비트코인 노드를 사용할 경우 더 안전하며, 전체 비트코인 네트워크도 더 건강해집니다. 이를 장려하기 위해 전체 노드를 운영하는 데 필요한 자원 요구 사항은 낮게 유지되어야 하며, 여기에는 필요한 대역폭도 포함됩니다.
Erlay는 대역폭 요구 사항을 줄이는 데 도움이 될 수 있는 새로운 제안입니다. 이는 브리티시컬럼비아 대학교 연구원인 글렙 나오멘코, 알렉산드라 페도로바, 이반 베샤스트니크, 블록스트림 엔지니어 피터 윌레, 독립 비트코인 코어 기여자 그레고리 맥스웰에 의해 개발되었습니다.
이 제안은 거래 식별자를 더 효율적으로 전송하여 노드 간에 전송되는 메시지 수를 줄이는 동시에 모든 노드에 새로운 거래를 전송하는 것을 지원하는 접근 방식을 권장합니다.
이것이 중요한 이유와 작동 방식은 다음과 같습니다.
문제
새로운 비트코인 거래가 방송될 때, 이는 비트코인의 피어 투 피어 네트워크의 모든 노드에 전송되어야 합니다. 기술적으로 이는 두 단계로 이루어집니다. 첫째, 거래를 수신한 후 노드는 거래 식별자 — 거래 ID — 를 연결된 모든 피어에게 전송합니다(거래를 받은 피어는 제외). 이러한 모든 피어는 이 거래 ID를 확인하여 다른 피어로부터 이미 해당 거래를 수신했는지 확인합니다. 그렇지 않으면, 거래 ID를 보낸 노드로부터 전체 거래를 요청합니다. 그런 다음 이 과정이 반복됩니다: 이 노드는 거래 ID를 모든 피어에게 전송합니다.
노드가 이미 거래를 전송받은 피어와도 거래 ID를 공유하기 때문에 비트코인 네트워크에서 많은 중복 메시지가 공유됩니다. 이 중복은 많은 대역폭을 소비합니다. 특히, 현재 비트코인 노드를 운영하는 데 필요한 대역폭의 50%가 거래를 알리는 데 사용됩니다. 실제 거래 본체를 중계하는 데 필요한 대역폭은 45%이며, 블록 헤더 정보와 같은 다양한 다른 메시지에는 5%가 필요합니다. Erlay 연구 논문은 비트코인 노드 간의 모든 트래픽의 44%가 중복 메시지로 구성되어 있다고 추정합니다.
많은 대역폭을 요구하는 노드를 운영하는 것은 많은 사용자에게 부담이 될 수 있으며, 전체 노드를 운영하는 데 장애가 될 수 있습니다.
연결성과 위험
관련된 문제는 더 미묘합니다.
비트코인의 보안은 부분적으로 비트코인 네트워크의 노드 간 연결 수준에 의존합니다. 이 연결이 너무 낮으면 — 노드가 충분한 피어와 연결되지 않으면 — “이클립스 공격”의 위험이 커집니다. 이는 공격자가 많은 IP 주소를 제어하고 이를 사용하여 특정 비트코인 노드에 연결하는 공격입니다. 해당 노드가 보는 모든 피어가 동일한 공격자에 의해 제어된다면, 공격자는 본질적으로 그 노드만을 위한 “대체 비트코인 블록체인”을 생성할 수 있습니다. 이는 여러 공격의 가능성을 열어줍니다.
그들의 논문에서 나오멘코, 페도로바, 베샤스트니크, 윌레, 맥스웰은 비트코인 네트워크 노드 간의 현재 연결성이 암호화폐 블록체인에서 적절한 수준의 보안을 보장하기에는 너무 낮다고 주장합니다. 보스턴 대학교와 히브리 대학교/MSR 이스라엘의 연구원인 이단 하일먼, 앨리슨 켄들러, 아비브 조하르, 샤론 골드버그의 논문에서도 유사한 결론이 도출되었습니다.
이 문제는 네트워크의 비트코인 노드 간의 연결성을 증가시킴으로써 해결될 수 있습니다. 그러나 현재로서는, 이는 각 노드가 요구하는 대역폭을 상당히 증가시킬 것입니다: 노드가 더 많은 피어에 연결하려고 할 경우 대역폭 사용량이 현재 선형적으로 증가합니다.
보다 효율적인 중계 프로토콜이 도움이 될 것입니다.
Erlay의 등장
비트코인의 현재 거래 중계 프로토콜과 관련된 문제를 해결하기 위해 나오멘코 외에는 Erlay라는 새로운 유형의 거래 전파 프로토콜을 사용하는 것을 제안했습니다. 그들이 수행한 연구에 따르면, Erlay는 비트코인 노드 간의 현재 연결 수준을 유지하는 데 필요한 대역폭을 약 40% 줄일 수 있습니다.
Erlay 프로토콜은 나오멘코, 윌레, 맥스웰이 이전에 제안한 “미니스케치”라는 솔루션을 사용하여 비트코인 노드 간에 전달되는 메시지 수를 줄입니다. 거래 ID 외에도 비트코인 노드는 서로 “스케치”를 공유합니다.
이는 두 단계로 이루어집니다. 첫 번째 단계에서 노드는 이전과 같이 새로운 거래 ID를 피어와 공유합니다. 그러나 최대 8개의 피어와만 공유하도록 선택합니다 — 더 많은 피어와 연결되어 있더라도 말입니다. 두 번째 단계에서는 노드가 피어에게 “스케치”를 요청합니다.
이러한 스케치는 노드가 수락한 모든 거래의 식별자를 포함하지만, 간결한 형태로 제공됩니다. 스케치를 사용하여 노드는 피어가 가지고 있는 거래 중 자신이 가지고 있지 않은 거래를 파악할 수 있습니다. 그런 다음, 스케치에 나타나지 않는 거래만 해당 피어에게 요청할 수 있습니다. 이 접근 방식은 모든 거래 ID를 공유하는 것보다 훨씬 적은 대역폭을 소비합니다.
추가적인 이점으로, 이 솔루션은 많은 경우 더 많은 프라이버시를 제공합니다. 거래 ID가 처음에 모든 연결된 노드와 공유되지 않기 때문에 “스파이 노드”가 네트워크를 모니터링하고 특정 거래의 출처를 추적하기가 더 어려워집니다.
다양한 스케치를 비교하고 누락된 거래를 찾는 것의 단점 중 하나는 거래가 전체 네트워크를 통해 이동하는 데 상대적으로 오랜 시간이 걸린다는 것입니다(약 2초 더 걸림). 그러나 비트코인 네트워크의 평균 블록 시간은 10분이므로, 이 접근 방식은 각 노드가 수신하는 메시지 수를 상당히 줄일 수 있기 때문에 그 대가를 치를 가치가 있습니다.
다음 단계
나오멘코는 애플리케이션 개발자, 소프트웨어 테스터 및 연구원이 프로토콜의 사양을 검토하고 이의를 제기하지 않음으로써 효과적으로 승인한 후 Erlay에 대한 비트코인 개선 제안을 작성할 계획입니다. 현재 Erlay 프로토콜은 비트코인 커뮤니티에서 검토되고 있으며, 가까운 미래에 비트코인 프로토콜에 통합될 수 있습니다.
사양에 따르면, Erlay 프로토타입은 단 584줄의 코드로 구성되어 있으며 기존 비트코인 프로토콜에 비호환 변경 사항을 포함하지 않습니다.