원작자: Colby Serpa
원본 편집: DAOrayaki
이 기사에서는 Nostr 릴레이가 가벼운 특성을 유지하면서 데이터를 동기화하여 사용자가 레이어 1 블록체인에서 사용할 수 없는 데이터를 선택적으로 삭제할 수 있도록 하는 방법을 설명합니다. 동시에 비트코인 블록체인에 대량의 데이터를 저장하는 것에 비해 비트코인 블록의 제한된 용량과 속도 때문에 Nostr 릴레이를 사용하여 데이터를 저장하는 것이 더 저렴할 수 있습니다.
이 기사에서는 Nostr 릴레이가 가벼운 특성을 유지하면서 데이터를 동기화하여 사용자가 레이어 1 블록체인에서 사용할 수 없는 데이터를 선택적으로 삭제할 수 있도록 하는 방법을 설명합니다. 동시에 비트코인 블록체인에 대량의 데이터를 저장하는 것에 비해 비트코인 블록의 제한된 용량과 속도 때문에 Nostr 릴레이를 사용하여 데이터를 저장하는 것이 더 저렴할 수 있습니다.
다음의 간단한 컴퓨터 공학 설계는 표준화된 CAP 정리 기준에 따라 Nostr 네트워크의 분포 속성을 개선합니다. CAP는 일관성, 가용성 및 파티션 허용 오차를 나타냅니다.
이미지 설명
릴레이의 일관성 부족(CAP 정리에서 C)
일관성은 각 컴퓨터에서 동기화된 데이터베이스가 동일함을 의미합니다. Nostr 릴레이는 블록체인이 블록별로 데이터를 동기화하는 방식과 유사한 방식으로 신뢰 최소화 동기화를 수행할 수 없습니다. 비트코인 풀 노드와 달리 Nostr 릴레이에 저장된 데이터베이스는 일반적으로 불완전합니다. 특정 사용자가 서명한 모든 게시물을 맹목적으로 요청하는 것 외에 Nostr relay는 누락된 데이터를 발견할 수 없습니다.
Nostr의 일관성/동기화 문제:
두 명의 사용자가 각자의 게시물을 서로 다른 Nostr 릴레이에 업로드하면 Nostr은 블록체인과 같지 않기 때문에 두 사용자는 서로의 게시물을 볼 수 없습니다. 블록체인에서 새로운 레코드가 있을 때마다 모든 풀 노드가 블록체인을 동기화합니다. 모든 전체 노드는 이 데이터를 블록으로 동시에 블록체인에 추가합니다. 비트코인 블록체인의 모든 전체 노드는 정확히 동일한 블록체인을 소유합니다.
Nostr 사용자가 항상 서로의 게시물을 볼 수 있게 하려면 모든 Nostr 릴레이가 사용자 프로필에서 누락된 데이터를 식별하여 다른 Nostr 릴레이 또는 사용자에게 누락된 부분을 요청할 수 있는 방법이 필요합니다.
주간 온체인 Merkle 루트 및 전체 트리 해시와 Nostr 릴레이 동기화
일주일에 한 번 정도 사용자는 모든 게시물을 Merkle 트리로 정리할 수 있습니다.
Merkle 트리의 각 리프에는 비트코인의 각 리프가 트랜잭션의 해시를 포함하는 것처럼 게시물의 해시가 포함됩니다.
사용자가 전체 구성 파일을 Merkle 트리로 구성하면 일반 비트코인 트랜잭션 아래 OP_RETURN 온체인에 Merkle 루트를 게시합니다. 이것이 Nostr 2.0이 작동하기 위해 블록체인의 하드 포크를 필요로 하지 않는 이유입니다. OP_RETURN은 보낸 사람이 서명하기 전에 작은 메모를 추가할 수 있는 비트코인 트랜잭션 아래의 블록입니다.
또한 사용자는 전체 트리를 해시하고 Merkle 루트와 함께 체인( OP_RETURN )에 업로드합니다. Merkle 루트는 전체 트리가 아니라 최상위 분기의 해시일 뿐입니다. 전체 트리의 해시는 사용자와 릴레이어가 프로필 데이터가 누락되었는지 감지할 수 있도록 하는 데 필수적입니다.
전체 트리의 해시를 얻으려면 Merkle 루트를 텍스트 파일의 루트에 배치합니다. 그런 다음 Merkle 가지를 루트 아래 줄에 놓습니다. 그런 다음 가지 아래 줄에 Merkle 잎을 놓습니다. 설명대로 트리가 정렬되면 한 번에 모두 해시합니다. 아래는 위에 표시된 Merkle 트리에 대해 전체 트리 해시가 어떻게 보이는지에 대한 전체 트리 해시의 예입니다. 전체 트리 해싱(모든 Merkle 트리 데이터를 한 번에 해싱)
Merkle 루트 및 전체 트리 해시는 두 가지 주요 기능을 제공합니다.
Merkle 루트를 사용하면 사용자와 릴레이어가 전체 블록을 다운로드하지 않고도 트랜잭션을 다운로드할 수 있는 것과 같이 한 번에 구성 파일의 일부를 다운로드할 수 있습니다.
전체 트리 해싱을 통해 사용자와 중계자는 저장된 구성 파일이 불완전한지 알 수 있습니다. Merkle 루트와 달리 전체 트리 해시는 Merkle 트리에 모든 비트가 있는 경우에만 일치합니다.
이 저렴한 방법을 사용하여 매주 또는 사용자 정의 빈도로 전체 구성 파일을 업데이트할 수 있습니다. Nostr은 지금처럼 계속 작동하지만, 모든 사용자가 자신의 게시물을 볼 수 있도록 하려면 때때로 사용자가 Nostr 릴레이 간에 데이터를 동기화하기 위해 일부 sats를 지불할 수 있습니다.
사용자 및 릴레이어는 한 번에 하나의 지점에 대한 게시물을 다운로드할 수 있습니다. 각 분기 후에는 해당 분기를 Merkle 루트에 가장 가까운 다른 분기로 해시하여 체인의 Merkle 루트와 일치하는지 확인합니다(SPV와 유사). 해당 분기가 Merkle 루트와 일치하도록 함께 해시되면 아직 전체 사용자 프로필이 없더라도 분기가 사용자 프로필의 일부임을 알 수 있습니다. 사용자는 각 분기의 유효성을 확인하고 다운로드한 구성 파일이 완전한지 확인하면서 여러 Nostr 트렁크에서 동일한 구성 파일의 다른 분기를 다운로드할 수 있습니다.
첫 번째 레벨 제목
Merkle 루트가 전체 트리 해시처럼 기능할 수 없는 이유는 무엇입니까?
Nostr 릴레이가 Merkle 루트에만 의존한다면 Merkle 루트에 가장 가까운 모든 분기 쌍이 동일한 Merkle 루트로 해시되기 때문에 Merkle 트리가 언제 완료되는지 알 방법이 없습니다.
사용자의 프로필이 완전한지 확인하기 위해 릴레이어 또는 사용자는 업데이트된 전체 Merkle 트리를 해시하고 온체인 전체 트리 해시와 일치하는지 확인합니다. 전체 트리 해시가 일치하면 사용자 데이터가 완성됩니다. 전체 트리 해시가 일치하지 않으면 릴레이 또는 사용자는 다른 릴레이에 최신 리프 번호를 알리고 전체 트리 해시가 일치할 때까지 누락된 분기를 요청할 수 있습니다. 매주 추가되는 모든 새로운 Merkle 루트를 추적하려면 Nostr 릴레이가 비트코인 풀 노드가 되어야 합니다. Nostr 2.0 릴레이는 Bitcoin과 Nostr의 보안을 강화하면서 Bitcoin 블록 체인을 저장하기 위해 간접적으로 지불됩니다.
Nostr 스토리지 제한: 사용자의 경험 법칙
중계자는 Bitcoin 풀 노드와 달리 무엇을 저장할지 선택할 권리가 있기 때문에 Nostr 중계기는 일부 사용자 데이터를 잃을 수 있습니다. 따라서 사용자는 로컬에서 백업할 수 있는 경우에만 Nostr 릴레이에 데이터를 저장해야 합니다. Web5의 자체 호스팅 서비스를 통해 사용자는 백업을 모든 로컬 장치에 동기화할 수 있으므로 Nostr 사용에 대해 우려하는 사용자의 위험을 줄일 수 있습니다. 결국 블록체인만이 데이터를 진정으로 변경할 수 없는 곳입니다. 즉, Nostr은 많은 응용 프로그램에서 여전히 잘 작동하는 상당히 안전한 하이브리드 솔루션입니다. 장단점은 다음과 같습니다.
3계층의 신뢰 최소화
계층 1: 검열하기가 매우 어려운 변경 불가능하고 값비싼 데이터 저장소입니다. (체인의 블록은 모든 비트코인 전체 노드를 동기화합니다.)
레이어 2: 변경 가능하고 값싼 데이터 스토리지, 적당히 어려운 검열. (오프체인 Merkle 트리 및 온체인 해시, 주문형 동기식 Nostr 릴레이)
로컬 데이터 저장소는 모든 로컬 장치와 동기화되며 쉽게 감사할 수 있습니다. (지역 집중화)
Nakamoto 컨센서스에 기반한 블록체인과 Nostr 간의 근본적인 트레이드오프
특정 주소에 대한 데이터를 저장하는 Nostr 릴레이가 많을수록 해당 데이터를 검열하기가 더 어려워집니다. 이는 많은 Nostr 릴레이에서 호스팅하는 인기 있는 데이터가 거의 다운로드되지 않는 인기 없는 데이터보다 검열하기가 더 어려울 수 있음을 의미합니다.
반면에 Nakamoto 합의 블록체인은 데이터의 나이에 따른 검열을 방지합니다. 블록체인에 있는 데이터가 길수록 51% 공격을 사용하여 삭제하기가 더 어렵습니다.
검색 가능성 증명을 사용한 ZKCSP 및 라이트닝 네트워크 결제 Nostr Relay
특정 포크가 특정 사용자에게 속하는지 확인할 수 있기 때문에 Nostr 릴레이는 작은 데이터 조각을 사용자에게 전달할 때마다 지불할 수 있습니다. 이를 달성하기 위해 사용자는 가벼운 지갑의 일반적인 기능을 수행할 수 있도록 블록체인의 헤드(SPV에서와 같이)를 다운로드해야 합니다. 사용자는 가벼운 지갑의 SPV 기능을 활용하여 체인에서 특정 트랜잭션을 가져옵니다. 여기에는 사용자 프로필의 Merkle 루트와 전체 트리 해시가 OP_RETURN에 포함됩니다. 사용자는 이제 릴레이에 지불하여 분기별로 해당 사용자의 프로필 분기를 다운로드하고 각 분기를 해시하여 Merkle 루트 온체인과 일치하는지 확인할 수 있습니다.
데이터를 제공하는 대가로 비트코인의 가장 작은 단위인 sats를 Nostr 릴레이로 보내기 위해 우리는 Gregory Maxwell(유명한 비트코인 코어 개발자)의 ZKCP 설계(Zero-Knowledge Conditional Payment)[1]의 진화를 사용합니다. ZKCSP : 검색 가능성 증명 [2] 라이트닝 네트워크와 결합.
ZKCSP 백서의 설명에 따르면:
"...신뢰할 수 있는 제3자가 필요하지 않습니다...또한 검색 가능성 증명 사례를 위해 ZKCSP 프로토콜을 구현했습니다. 여기서 클라이언트는 클라이언트의 데이터가 서버에 올바르게 저장되어 있다는 증거에 대해 서버에 비용을 지불합니다." [2]
사용자가 여러 금융업자와 Lightning 스마트 계약을 시작합니다.
사용자는 주변 금융사에 요청을 보냅니다. 금융가는 요청에 서명합니다.
사용자는 금융가가 서명한 요청을 해당 금융가에 연결된 Nostr 릴레이에 직접 보냅니다.
이제 사용자는 ZKCSP 구성을 시작하여 Nostr 중계기가 올바르게 요청된 데이터가 전달된 후에만 금융가로부터 지불받을 수 있도록 합니다.
3단계가 발생하면 사용자는 4단계에서 ZKCSP 구성을 시작하기 전에 금융업자가 서명한 원래 요청에 추가하여 수정합니다. 사용자는 원래 요청에 사용자와 금융업자의 잔액에서 공제할 금액을 지정하는 추가 금액을 추가합니다(금융업자의 수수료를 더한 금액이 같아야 함). 그런 다음 사용자는 이를 원본 메시지에 추가합니다. 서명할 내용.
사용자가 자신이 소유한 것보다 더 많은 sats를 보내도록 지정하거나 금융가가 해당 Nostr 릴레이에서 동결한 것보다 더 많은 경우 Nostr 릴레이는 릴레이가 지불을 받을 수 없기 때문에 요청을 거부합니다.
이러한 방식으로 사용자는 소수의 자금 제공자와 자금을 동결하면서 많은 Nostr 릴레이와 연결할 수 있습니다. 신뢰를 최소화한 금융업자가 사용자와 판매자 사이의 무허가 중개자인 라이트닝 네트워크에서도 비슷한 접근 방식을 취할 수 있습니다. 일반 P2P 번개 점프는 Nostr 2.0에서도 사용할 수 있지만 라우팅 및 채널 밸런싱이 자주 실패하는 경우 유용할 수 있습니다.
화이트리스트 유료 Nostr 릴레이 잠금 해제
Nostr 릴레이는 이러한 모든 사용자가 본 데이터를 저장하려는 경우 특정 키를 화이트리스트에 추가할 수 있습니다. Nostr 릴레이가 데이터를 저장하려는 사용자를 화이트리스트에 추가할 수 없는 경우 전송된 모든 데이터를 저장합니다. 사용자가 항상 무료로 릴레이에 데이터를 보낼 수 있다면 사용자는 Nostr 릴레이 비용을 지불할 필요가 없습니다. Nostr은 중계자가 지불할 수 없는 데이터 저장을 거부할 수 있는 옵션이 있는 경우에만 유료 옵션을 제공할 수 있습니다. 무료 릴레이는 여전히 존재하지만 유료 릴레이 옵션은 현재 존재하지 않습니다.
모든 Nostr 데이터를 무료로 저장하는 대신 유료 Nostr 릴레이는 화이트리스트를 사용하여 유료 사용자가 매일 보는 모든 데이터를 선택적으로 저장할 수 있습니다. 일부 Nostr 릴레이는 계속해서 무료 모델로 운영되지만 대부분의 무료 릴레이는 열광적인 열광자일 뿐이기 때문에 대규모로 지속 가능하지 않습니다. 화이트리스트(각 Nostr 프로필에 공개 키를 안전하게 할당할 수 있었던 경우에도) Nostr 릴레이가 저장할 데이터를 결정할 수 있는 기능을 제공합니다.
화이트리스트 기능을 잠금 해제하기 위한 프로필당 하나의 공개 키: 비트코인 주소가 Nostr 공개 키가 됩니다.
이 시스템을 통해 최종적으로 각 구성 파일에 공개 키를 할당할 수 있습니다.
각 게시물에 대해 새 공개 키를 생성하는 사용자에게는 아무런 이점이 없습니다. 모두 자신의 프로필과 연결되어 있기 때문입니다! 이것은 Bitcoin 주소와 동일하지 않습니다. 비트코인과 달리 사용자가 동일한 애플리케이션 내에서 여러 개의 공개 키를 갖도록 하는 것은 개인 정보 보호를 개선하지 않습니다.
Nostr 프로필의 공개 키는 주간 해시(모든 사용자 게시물의 Merkle 루트 및 전체 트리 해시)를 포함하는 비트코인 트랜잭션의 공개 키와 일치해야 합니다. Schnorr 서명을 사용하는 Nostr 사용자와 달리 비트코인 지갑(모바일 지갑/라이트 지갑 또는 풀노드)을 사용하여 서명해야 합니다.
이것의 장점은 각 Nostr 계정이 비트코인 주소로 표시된다는 것입니다. 즉, 사용자는 두 개의 서로 다른 공개 키를 요청하지 않고 Nostr 계정으로 직접 지불을 보낼 수 있습니다. 이것은 시스템에서 새로운 사용자의 인지 비용을 줄입니다. 사용자 이름을 사용하는 대신 사용자는 여전히 Nostr에서 서로를 찾기 위해 공개 키 또는 DNS를 서로에게 보내야 합니다.
다른 Nostr 애플리케이션이 다른 공개 키를 사용하는 경우 동일한 분산 ID(DID)에 계속 연결할 수 있습니다. 이렇게 하면 계정 식별 방식이 애플리케이션 전체에서 일관되게 유지됩니다. 그러나 이 Nostr 합의 규칙은 각 Nostr 애플리케이션에서 프로필당 하나의 공개 키만 사용하도록 제한합니다.
DHT는 피어 검색을 위한 리더보드 역할을 합니다.
릴레이는 분산 해시 테이블(DHT)을 사용하여 다른 릴레이를 찾을 수 있습니다. 릴레이는 데이터가 저장된 공개 키를 나열하여 분산 해시 테이블에서 화이트리스트를 공유할 수 있습니다. 이렇게 하면 특정 공개 키에 대한 데이터 포크가 누락된 릴레이가 DHT를 스캔하고 누락된 포크를 저장한다고 주장하는 다른 릴레이의 IP 주소에 직접 연결할 수 있습니다. 그런 다음 릴레이는 이러한 Nostr 릴레이에서 누락된 분기를 직접 다운로드할 수 있습니다.
릴레이는 또한 릴레이어가 온체인에서 해결한 이전 ZKCSP 트랜잭션 수(최근 및 전체 시간)를 확인하여 가장 활동적인 릴레이어를 찾을 수 있습니다. 이 시스템에서 모든 Nostr 릴레이는 풀 노드가 되므로 다른 릴레이의 이전 트랜잭션을 감사하는 것은 어렵지 않습니다. 온체인 거래에는 항상 거래 수수료가 필요하기 때문에 신뢰 위조 비용이 많이 듭니다. Nostr 릴레이가 다른 릴레이의 신뢰를 얻기 위해 자신과 신뢰를 쌓기 위해 많은 채널을 열면 매주 가짜 평판을 유지하기 위해 많은 거래 수수료를 지불해야 합니다. 공격자가 누락된 분기를 제공하지 못한 후 시간 초과로 인해 릴레이가 연결 해제되므로 이것은 일시적이고 비용이 많이 드는 공격일 뿐입니다(51% 공격이 일시적이고 비용이 많이 드는 공격인 것처럼).
DHT는 각 Nostr 릴레이의 공개 키가 DHT의 IP 주소 옆에 나열되기 때문에 채굴만큼 익명은 아니지만 릴레이가 네트워크를 통해 맹목적으로 요청을 보낼 필요가 없습니다. 네트워크에 과부하가 걸리게 됩니다. 더 많은 개인 정보 보호를 원하는 Nostr 중계자는 VPN 또는 기타 IP 보호 서비스를 사용할 수 있습니다.
사용자는 전체 노드가 아니기 때문에 동일한 신뢰 시스템에 액세스할 수 없습니다. 그러나 사용자는 이를 신뢰할 수 있습니다.
금융가는 수백 개의 Nostr 릴레이에 간접적으로 연결됩니다.
사용자는 모든 블록 헤더를 라이트 지갑에 자동으로 저장하기 때문에 가장 활동적인 채굴자가 누구인지 확인할 수 있습니다. 광부가 금융가가 되면 사용자는 가장 인기 있는 광부를 걸러낼 수 있으므로 네트워크의 생존 가능성과 상관관계가 없는 임의의 금융가에 자금을 맹목적으로 묶을 필요가 없습니다.
결론적으로
결론적으로
라이트닝 네트워크는 비트코인의 나카모토 컨센서스 블록체인 없이는 존재하지 않을 것입니다. 사용자가 번들로 묶인 오프체인 거래 증명을 저장할 장소가 없기 때문입니다.
사용자가 이 모든 라이트닝 네트워크 트랜잭션을 함께 묶고 작은 증명을 블록체인에 넣는 것처럼 우리는 모든 Nostr 데이터를 묶고 작은 증명을 블록체인에 넣을 것입니다. 라이트닝 네트워크가 두 번째 계층에서 즉시 지불을 제공하는 것과 같은 방식으로 Nostr은 안전하지 않은 사이드 체인의 위험 없이 두 번째 계층에서 데이터 저장소를 제공할 수 있습니다.
라이트닝 네트워크와 동일한 접근 방식을 사용하며, 첫 번째 레이어에는 비트코인의 Nakamoto 컨센서스 블록체인이 있고 두 번째 레이어에는 Nostr+ZKCSP 라이트닝이 있습니다.
