Mina_Technical Whitepaper.pdf

이 내용은 간결한 미나 프로토콜의 블록체인의 개념을 소개합니다. 간결한 블록체인은 시스템의 이전 전환 수와 관계없이 각 상태 전환(블록)을 상수 시간 내에 효과적으로 검증할 수 있는 복제된 상태 기계입니다. 전통적인 블록체인은 전환 수에 선형적인 검증 시간이 필요합니다. 이 연구에서는 재귀적으로 구성된 간결한 비대화형 지식 인수(SNARKs)를 사용하여 간결한 블록체인을 구축하는 방법을 보여줍니다. 마지막으로, 이 구성을 사용하여 간결한 블록체인을 사용하는 결제 시스템인 Mina를 구현합니다. Mina는 비트코인과 유사한 결제 기능을 제공하며, 200ms의 빠른 검증 시간으로 경량 클라이언트와 모바일 장치에서 시스템의 히스토리를 완전히 검증하는 것이 실용적입니다.


Introduction

1. 문제 정의:

  • 비트코인 및 기타 분산 결제 시스템 (암호화폐 또는 블록체인)은 결제를 만들고 검증하기 위한 분산 시스템을 제공하려고 한다.
  • 기존 암호화폐, 비트코인 포함,에서 분산화는 각 노드가 네트워크에 참여할 때 전체 시스템 기록을 처리해야 하는 확장성의 비용으로 인해 발생한다.

2. 현재의 문제점:

  • 비트코인 블록체인의 크기는 250GB 이상이며 500M 거래를 포함하고 있다. 이 기록을 다운로드하고 검증하는 데는 보통 랩탑에서 며칠이 소요된다.
  • 이러한 자원 요구 사항으로 인해 대부분의 사용자는 블록체인을 저장하고 검증하는 전체 노드를 실행하지 않는다.
  • 대부분의 사용자는 거래를 검증하지 않고 블록 헤더만 검증하거나 아무 것도 검증하지 않고 신뢰할 수 있는 서버의 조언에 의존한다. 이로 인해 대부분의 클라이언트는 독립 검증 대신 신뢰에 의존한다.

3. 제안하는 해결책:

  • 연구의 목표는 외부 조언에 의존하지 않고 제네시스부터 시스템 기록의 효율적인 검증을 제공하는 분산 결제 시스템을 설계하는 것이다.
  • 거래의 수에 대해 상수(푂(1)) 검증 시간을 제공하려고 한다.
  • 각 블록에 상태 유효성에 대한 간결한 증거를 포함하여 이 목표를 달성한다.

4. Mina Protocol 소개:

  • Mina는 비트코인과 유사한 기능을 제공하는 결제 중심 블록체인이다.
  • 특히, Mina는 계정 기반 모델을 사용하며, 현재 블록체인의 상태는 사용되지 않은 코인(UTXOs)의 목록이 아니라 모든 계정 잔액의 목록이다.
  • Mina의 합의 프로토콜은 Ouroboros Samasika라는 간결한 블록체인을 위한 첫 번째 증명 가능한 보안 PoS 합의 프로토콜이다.

5. 주요 성능 및 기능:

  • 현재 구현에서 상태 증명 크기는 864 바이트이며 검증하는 데 약 200ms가 소요된다.
  • 이렇게 하면 현재 스마트폰과 같은 연산 레벨을 지원할 수 있는 모든 장치가 신뢰할 수 있는 조언 없이 시스템의 현재 상태를 검증할 수 있다.

Mina Protocol은 기존 블록체인의 확장성 문제를 해결하기 위해 간결한 블록체인의 아이디어를 제시하며, 그 방법으로 zk-SNARKs와 같은 기술을 활용하여 블록체인의 크기와 검증 시간을 최소화하는 것을 목표로 합니다.


1.1  Our Contributions 우리의 기여

  • 간결한 블록체인: 블록체인의 개념을 형식화하여 각 상태 전환(블록)을 시스템의 이전 전환 수와 관계없이 상수 시간 내에 효율적으로 검증할 수 있습니다.
  • 구축 접근 방식: 증가 계산 가능한 SNARKs를 사용하여 복제된 상태 기계로 모델링된 일반적인 기능의 간결한 블록체인을 구축하는 방법을 제시합니다.
  • Mina 구현: 제안된 접근 방식의 구체적인 구현으로, 결제 시스템인 Mina를 소개합니다.
  • Ouroboros Samasika: 제네시스부터 부트스트래핑을 제공하는 적응적으로 안전한 PoS 합의 프로토콜입니다.
  • 병렬 스캔 상태: 증명 구성에 의한 한계를 초과하여 트랜잭션 확인 시간을 향상시키기 위한 개념을 도입합니다.
  • 성능 평가: 공개 커뮤니티에 참여하여 프로토콜을 실행하는 것에 대한 성능 평가 보고서를 제시합니다.

2. Succinct Blockchains 간결한 블록체인의 개념

  • 블록체인의 기본 정의: 상태, 블록 증명, 블록 생성자, 블록, 블록체인, 제네시스 블록 등의 기본적인 개념을 정의합니다.
  • 간결한 블록체인 프로토콜: 5개의 PPT 알고리즘으로 특징 지어집니다. 이 알고리즘들은 합의 상태, 블록, 및 블록체인 요약의 유효성을 검증하거나 업데이트하는 데 사용됩니다.
  • 블록체인 요약: 블록체인 요약은 블록체인의 일부 요약으로, 해당 요약은 블록체인이 유효한 경우에만 유효합니다.
  • 블록체인 요약과 기본 블록체인 간의 관계: 간결한 블록체인은 블록체인 요약의 관점에서 정의되며, 요약이 기본 블록체인과 어떻게 관련되어 있는지를 표현하는 '체인 추출성'이라는 개념을 통해 보여줍니다.

Mina Protocol의 핵심 아이디어와 기술적인 세부 사항으로 간결한 블록체인의 개념이 중요한데, 기본적으로 각 블록체인의 상태를 간결하게 요약하여 저장 및 검증을 보다 효율적으로 만드는 아이디어입니다. Mina Protocol은 이러한 간결한 블록체인의 개념을 실제로 구현하며, 이를 통해 블록체인의 크기와 검증 시간을 크게 줄이려고 합니다.

2.1 간결한 블록체인의 보안 속성

공통 접두사 (Common Prefix):

  • 두 사용자 간에 보유한 블록체인의 일부분이 동일하다는 것을 보장합니다. 예를 들어, 한 사용자의 블록체인의 마지막 부분을 제외하면, 다른 사용자의 블록체인과 같아야 합니다.

체인 성장 (Chain Growth):

  • 블록체인이 꾸준하게 성장하고, 일정 시간 동안 일정 수의 블록이 추가되었다는 것을 보장합니다. 이 속성은 블록체인이 계속해서 진행되고 활성화되어 있음을 의미합니다.

체인 품질 (Chain Quality):

  • 블록체인 내의 블록이 어느 정도 활성 사용자들로부터 생성되었다는 것을 보장합니다. 다시 말해, 블록체인 내의 대부분의 블록은 신뢰할 수 있는 참가자들에 의해 생성되어야 합니다.

이 세 가지 속성은 간결한 블록체인이 안정적이고 신뢰할 수 있게 동작하도록 보장하는 핵심 요소들입니다. Common Prefix는 두 사용자의 블록체인 사본 사이에 일관성을 보장하는 반면, Chain Growth는 블록체인이 꾸준히 성장하도록 보장하며, Chain Quality는 체인의 품질을 보장합니다.

블록체인에서는 세 가지 주요 역할이 있습니다:

  1. 전체 노드(Full node): 이 역할에서 참여자는 블록체인 요약을 추적하고 검증합니다.
  2. 블록 생성자(Block producer): 이 역할에서 참여자는 블록을 생성합니다.
  3. 블록체인 요약 생성자(Blockchain summary producer): 이 역할에서 참여자는 블록체인 요약을 생성합니다.

간결한 블록체인의 주요 장점은 어떤 참여자라도 합리적인 리소스로 전체 노드가 될 수 있다는 것입니다. 이는 블록체인의 간결성 특성 때문입니다. 따라서 간결한 블록체인은 블록체인 크기의 증가에 대처하기 위해 경량 클라이언트의 역할을 필요로 하지 않습니다.

블록체인 요약과 기본 블록체인 간의 관계를 살펴보면, 블록체인 요약이 기본 블록체인의 유효성을 상속해야 한다는 것입니다. 즉, 요약이 유효하면 해당 기본 블록체인도 유효합니다.

또한 블록체인 요약이 주어지면, 우리는 추출성의 개념을 통해 그것의 기본 블록체인에 도달합니다. 구체적으로, 연속 번호가 (i)인 블록체인 요약이 주어지면 추출기는 필요한 검증 테스트를 만족하는 연속 번호가 (i-1)인 블록체인 요약과 블록 (B_i)를 재귀적으로 추출합니다.

3. Preliminaries 기초 개념


Preliminaries" 섹션은 SNARK 시스템의 필요한 정의들을 제공합니다  

  • 표기법: PPT는 확률적 다항 시간을 나타내는 약어입니다.
  • ( λ lambda )는 보안 매개변수를 나타냅니다.

1. SNARKs (Succinct Non-interactive ARgument of Knowledge)

  • SNARK는 주장(statement)과 증거(witness)의 다항식 관계를 나타내는 ( R )에 대한 것입니다.
  • SNARK는 네 가지 알고리즘으로 구성됩니다: sSetup, sProve, sVerify, sSim.
  • sSetup: 구조화된 무작위 문자열과 함정도어를 생성합니다.
  • sProve: 주장과 증거를 사용하여 증명을 생성합니다.
  • sVerify: 주어진 증명을 검증합니다.
  • sSim: 증거 없이 증명을 시뮬레이션합니다.
  • 완전성 (Completeness): 참된 주장에 대해 증거가 있는 피증명자는 검증자를 설득할 수 있습니다.
  • 간결성 (Succinctness): 증명의 크기는 ( \lambda )의 다항식입니다.
  • 지식 사운드성 (Knowledge soundness): 유효한 주장을 제시하는 사람은 그들의 내부 데이터에서 유효한 증거를 추출할 수 있어야 합니다.

2. Simulation-extractable SNARKs

  • 이것은 SNARK의 더 높은 보안 수준을 달성하는 것으로, 시뮬레이션 추출성을 나타냅니다. 이 개념은 지식 사운드성과 유사하지만, 적대자도 시뮬레이션된 증거를 볼 수 있습니다.

3. Signatures of Knowledge (SoK)

  • SoK는 NP 언어의 인스턴스로 공개 키를 대체하여 디지털 서명의 일반화입니다. SoK는 시뮬레이션 추출 가능한 비대화형 제로 지식 주장과 관련이 있습니다. 이 연구에서는 SNARK를 사용하여 구축된 SoK에 의존하여 이러한 SoK의 간결성을 활용할 수 있습니다.

이 섹션은 SNARKs, Simulation-extractable SNARKs 및 Signatures of Knowledge와 같은 중요한 개념들을 소개합니다. 이러한 개념들은 간결한 블록체인의 구성 요소로서 중요합니다.


4 Mina: A Succinct Blockchain based on Recursive SNARKs

Mina라는 SNARKs 기반의 간결한 블록체인 구성을 소개합니다.

4. Mina: 재귀 SNARKs를 기반으로 한 간결한 블록체인

  • Mina는 SNARKs를 기반으로 한 간결한 블록체인 구성입니다.
  • 블록체인의 유효성은 SNARK로 증명됩니다. 따라서 SNARK를 검증하면 내장된 블록도 검증됩니다. SNARK의 간결성은 블록체인의 간결성을 보장합니다.
  • 블록체인은 동적이며 새로운 블록이 계속 추가됩니다. 그러나 언제든지 간결성을 보장하려고 합니다. 따라서 블록체인이 "성장"하면 새로운 SNARK 증명을 계산합니다.

4.1 증분적으로 계산 가능한 SNARKs

  • 상태 전환 시스템의 정의를 다시 살펴봅니다. 이 시스템은 상태의 집합, 전환의 집합, 업데이트 함수로 구성됩니다.
  • 두 상태 사이에 상태 전환 시퀀스가 존재함을 간결하게 증명하고 싶습니다. 블록체인에 적용하면, 상태는 계정의 데이터베이스가 되고 전환은 블록이 됩니다.

4.1.1 재귀 증명 구성을 사용한 증분적으로 계산 가능한 SNARKs

  • 단순한 재귀 구성은 이론적으로 실행 가능하지만 매우 비싸다.
  • 틱(Tick)과 톡(Tock)이라는 두 SNARK 구성을 사용하여 각각이 다른 것을 효율적으로 검증할 수 있도록 설계합니다.
  • 이러한 방식은 블록체인의 "성장"을 효율적으로 처리할 수 있도록 합니다.

4.1.2 예제 전환 시스템

  • 간단한 전환 시스템을 사용하여 이 기술이 어떻게 적용되는지 설명합니다.
  • 각 상태는 이전 상태의 해시입니다. 초기 상태에서 시작하여 일련의 전환을 거쳐 결과 상태를 얻습니다.
  • 이러한 전환은 위에서 설명한 SNARK 기술을 사용하여 증명됩니다.

이 섹션은 Mina라는 특정 블록체인 구성을 소개하며, 이 구성은 SNARKs의 재귀적 속성을 활용하여 블록체인의 간결성을 보장합니다.

4.2 Mina: 증분적으로 계산 가능한 SNARKs를 사용한 간결한 블록체인

이 섹션에서는 증분적으로 계산 가능한 SNARKs를 기반으로 한 Mina 프로토콜, 즉 간결한 블록체인을 소개합니다.

4.2.1 구조 설명

  • Mina 프로토콜은 블록체인을 상태 전환 함수로 간주합니다.
  • 예를 들어 UTXO 모델에서는 각 당사자에게 '계정'과 '잔액'이 있습니다. 블록체인의 상태는 모든 계정 잔액의 데이터베이스입니다. 전환은 한 계정에서 다른 계정으로 잔액의 일부를 전송하는 것입니다.
  • Mina 프로토콜은 이러한 상태 전환 시스템을 기반으로 작동합니다.

Mina 프로토콜 구성 요소:

  1. 합의 메커니즘 (UpdateConsensus, VerifyConsensus): Ouroboros Samasika 프로토콜을 사용하여 합의 메커니즘을 구현합니다.
  2. 블록: 블록은 상태 전환과 함께 구성됩니다. 이 블록은 특정 상태와 일련의 증명으로 구성됩니다.
  3. SNARK를 위한 상태 전환 시스템: 이 시스템은 상태와 블록, 그리고 Update 함수로 정의됩니다.
  4. 블록체인 요약: 블록체인 요약은 특정 상태와 해당 상태의 증명으로 구성됩니다.
  5. VerifyChainSummary: 이 알고리즘은 주어진 증명이 올바른지를 확인합니다.
  6. VerifyBlock: 이 알고리즘은 블록의 일관성을 확인합니다.
  7. UpdateChainSummary: 이 알고리즘은 블록체인 요약을 업데이트합니다.

참고: 우리는 사용하는 SNARKs의 구성에 대해 블록체인의 길이가 체인 추출성에 영향을 미치지 않는다고 가정합니다.

간단히 말해, Mina는 블록체인을 상태 전환 시스템으로 볼 수 있으며, 이를 통해 간결한 블록체인을 구성할 수 있습니다.

Ouroboros는 Cardano 블록체인에 사용되는 PoS (Proof of Stake) 합의 알고리즘입니다. 이 알고리즘은 확장성이 높고 에너지 효율적이며, PoW (Proof of Work) 알고리즘보다 훨씬 적은 컴퓨팅 파워를 필요로 합니다.

Ouroboros의 주요 특징은 다음과 같습니다:
슬롯 리더: 네트워크의 참여자 중 일부는 무작위로 슬롯 리더로 선택됩니다. 슬롯 리더는 새 블록을 생성하고 네트워크에 제출하는 권한이 있습니다.
에포크와 슬롯: 시간은 에포크와 슬롯으로 나뉩니다. 각 에포크는 여러 슬롯으로 구성되며, 각 슬롯마다 한 명의 슬롯 리더가 블록을 생성할 수 있습니다.보상: 슬롯 리더는 블록을 성공적으로 생성하고 네트워크에 제출할 경우 보상을 받습니다.
보안: Ouroboros는 확률론적 보안 모델을 기반으로 하며, 악의적인 참여자가 네트워크의 50% 이상의 스테이킹 파워를 갖지 않는 한 네트워크를 공격하는 것은 매우 어렵습니다.
분산성: Ouroboros는 중앙 집중화 없이 분산된 방식으로 작동합니다.

이러한 기본 원칙에 기반하여 여러 Ouroboros 변형이 개발되었습니다. "Samasika"는 Ouroboros의 한 변형일 수 있지만, 2021년 9월 이전의 내 데이터에는 그에 대한 구체적인 정보가 포함되어 있지 않습니다.


5 The Mina Protocol for Payments


5.0.1 계정 및 장부

  • 각 사용자는 계정을 갖습니다. 계정은 공개 키, 잔액, 그리고 거래의 재생을 방지하기 위한 nonce로 구성됩니다.
  • 전체 계정의 목록은 장부로 불립니다. 장부는 모든 사용자의 잔액 및 계정 정보를 표현합니다.

거래

  • 거래는 사용자의 잔액을 다른 사용자에게 전송하는 것을 나타냅니다.
  • 각 거래는 송신자의 공개 키, 수신자의 공개 키, 전송할 금액, nonce, 그리고 송신자의 서명으로 구성됩니다.

거래 검증

  • 특정 거래가 유효한지 확인하는 알고리즘이 있습니다. 이 알고리즘은 송신자의 잔액이 거래 금액보다 큰지, nonce가 올바른지, 서명이 유효한지 확인합니다.

장부 업데이트

  • 거래가 수행될 때마다 장부는 업데이트되어야 합니다. 장부 업데이트 알고리즘은 거래를 처리하고 장부의 상태를 변경합니다.

5.0.2 SNARK

  • SNARK는 "Succinct Non-Interactive Argument of Knowledge"의 약자로, 특정 작업이 올바르게 수행되었음을 간결하게 증명하는 시스템입니다.
  • Mina에서 사용되는 SNARK는 장부의 상태와 합의 상태의 해시 값을 포함하며, 블록 체인의 상태 전환이 올바르게 이루어졌는지를 증명하는데 사용됩니다.

5.0.3 Mina 프로토콜 구성

  • Mina 프로토콜은 Ouroboros Samasika라는 합의 메커니즘을 사용하여 결제를 처리합니다.
  • 프로토콜은 블록 검증, 체인 업데이트, 체인 요약 검증 등의 알고리즘을 포함합니다.
  • 체인 요약 검증은 현재의 체인 상태가 올바른지 확인하는 것을 의미하며, 블록 검증은 특정 블록이 올바른지 확인하는 작업입니다.
  • 체인 업데이트는 새로운 거래나 블록이 체인에 추가될 때 수행되는 작업입니다.

Mina 프로토콜의 결제 부분은 사용자 간의 거래를 처리하고, 그 거래를 검증하며, 그 결과를 블록체인에 올바르게 기록하는 것을 담당합니다.


6 Snark Workers


이 섹션에서는 'parallel scan state'와 'prover incentives'라는 두 가지 최적화 기법을 소개합니다. 두 기법 모두 SNARK 증명 계산에 순차적 종속성이 있음을 고려하여 개발되었습니다.

문제점

  • SNARK 증명 계산에 순차적 종속성이 있기 때문에, 간단한 구현에서는 증명을 계산하는 데 필요한 시간 이상의 블록 시간이 발생할 수 있습니다.

해결책

  • 트랜잭션을 최대한 빨리 처리하고 검증하는 것이 목표입니다.

6.1 Parallel Scan State

  • 기본적으로 블록의 원시 체인은 순차적입니다.
  • SNARK의 점진적 계산 능력 덕분에 SNARK 작업을 병렬로 수행할 수 있습니다.
  • 'parallel scan state'의 개념을 도입하여 블록 생성과 SNARK 증명 계산을 분리합니다.
  • 'work queue'라는 특별한 큐를 유지하면서 새로운 블록이 제안될 때마다 큐에 추가합니다.

6.2 Incentivizing the Provers

  • SNARK 증명을 생성하는 당사자를 snarker라고 합니다.
  • 가능한 한 최소의 트랜잭션 지연 시간을 달성하는 것이 목표입니다.
  • 모든 블록 생성자는 큐에 블록을 푸시할 때 블록을 검증하는 증명을 생성하여 블록을 팝해야 합니다.
  • 이는 시스템에서 안정성을 강화합니다.

기타 사항

  • 주어진 증명과 관련된 요청된 수수료를 고려할 때, 공격자가 수수료 요청을 조작할 수 없어야 합니다.
  • Mina에서는 Bowe–Gabizon 시뮬레이션 추출 가능한 SNARK를 기반으로 한 구성을 사용합니다.

"Snark Workers" 섹션은 Mina 프로토콜에서 SNARK 증명의 순차적 종속성 문제를 해결하기 위해 도입된 최적화 기법들에 대해 설명합니다. 이 기법들은 트랜잭션 처리 및 검증의 효율성과 속도를 높이기 위해 개발되었습니다.

*예시:

생각해보십시오. 여러분이 매일 아침 회사로 출근하기 위해 특정 길을 걷는다고 가정합시다. 그런데 이 길은 매우 좁아서 한 번에 한 사람만 걸을 수 있습니다. 이로 인해 많은 사람들이 이 길을 걸을 때 길에 긴 줄이 생기게 됩니다. 이러한 문제를 해결하기 위해 여러분은 새로운 아이디어를 생각해냅니다.

여러분은 여러 개의 병렬 통로를 만들어 이 문제를 해결하려고 합니다. 이렇게 하면 여러 사람이 동시에 길을 걸을 수 있게 됩니다.
또한, 사람들이 이 길을 더 빨리 건너갈 수 있도록 건너편에 작은 보상을 제공합니다.
이 예시에서 '길'은 SNARK 증명이며, '긴 줄'은 순차적 종속성 문제를 나타냅니다. '병렬 통로'는 "Parallel Scan State"를, '보상'은 "Incentivizing the Provers"를 나타냅니다.

따라서 "Snark Workers" 섹션은 이런 문제를 해결하기 위해 Mina 프로토콜에서 도입된 두 가지 기법, 즉 병렬 처리와 증명 제공자에게 보상 제공에 대한 설명입니다.

*또 다른 예시:

상상해보세요. 도서관에서 책을 빌리려고 하는데, 도서관의 모든 대출 기록이 하나의 큰 장부에 기록되어 있다고 생각해봅시다.

도서관 방문 (블록 생성):
당신이 도서관에 방문하여 책을 빌릴 때, 이 정보가 장부에 추가됩니다. 이것이 블록이 추가되는 것과 유사합니다.

검증 (트랜잭션 검증):
도서관 직원은 당신의 회원 정보, 대출 가능한 책, 대출 기간 등을 확인합니다. 이는 Mina에서 트랜잭션 (예: 돈의 이체)이 올바른지 확인하는 것과 유사합니다.

스탬프 (SNARK 증명):
당신의 대출 정보가 올바른지 확인한 후, 도서관 직원은 장부에 스탬프를 찍습니다. 이 스탬프는 모든 것이 순서대로 잘 진행되었음을 증명합니다. Mina에서는 이것을 SNARK 증명으로 합니다. 이 증명은 매우 간결하여 누구나 빠르게 확인할 수 있습니다.

병렬 처리 (Parallel Scan State):
도서관이 매우 바쁜 경우, 여러 직원이 동시에 여러 대출 정보를 확인하고 스탬프를 찍을 수 있습니다. 이는 Mina에서 SNARK 증명을 병렬로 처리하여 더 빠른 시간 내에 블록체인을 업데이트하는 것과 유사합니다.

보상 (Incentivizing the Provers):
대출 정보를 빠르게 처리해주는 직원에게는 작은 팁이 주어질 수 있습니다. 이는 Mina에서 SNARK 증명을 제공하는 사람들에게 보상을 주는 것과 유사합니다.

7. Ouroboros Samasika - 요약:


"Ouroboros Samasika – PoS Consensus for Succinct Blockchains" 섹션을 간단하게 정리하겠습니다. 이 섹션은 Mina 프로토콜의 핵심적인 부분 중 하나인 증명 가능한 보안을 가진 PoS 합의 프로토콜을 설명합니다.

도입:

  • 기존의 프로토콜들은 적응적 보안이 미흡하거나, 중앙화된 신뢰할 수 있는 제3의 당사자에 의존하거나, 체인 선택을 위해 프로토콜의 히스토리에서 임의의 정보에 의존합니다.
  • 이 논문에서는 적응적 변조에 대한 보안을 제공하며, 부트스트래핑을 위한 신뢰할 수 있는 체크포인트 서비스가 필요하지 않은 합의 프로토콜을 소개합니다.

7.1 직관적인 설명:

  • 합의 프로토콜의 핵심은 체인 선택 규칙에 초점을 맞춥니다.
  • Ouroboros Genesis의 체인 선택 규칙은 두 가지로 나뉩니다: 단기 범위 포크와 장기 범위 포크에 대한 규칙입니다.
  • Protocolboros (이 논문에서 제안하는 프로토콜)의 체인 선택 규칙은 Genesis와 유사하게 두 가지로 나뉩니다.

체인 선택 규칙:

  • 단기 범위 포크 규칙: 포크가 아직 적대적인 변조에 의해 수정되지 않은 상태일 때 적용됩니다. 이 규칙은 가장 긴 체인을 선택합니다.
  • 장기 범위 포크 규칙: 포크가 특정 시점 이전에 발생했을 때 적용됩니다. 아이디어는 슬롯의 이동 창을 고려하여 그 창에서 지금까지 관찰된 모든 밀도의 최소값만을 저장하는 것입니다.

새로운 체인 선택 규칙:

  • 포크가 단기 범위인지 아닌지를 결정하는 isShortRange 알고리즘이 있습니다.
  • SelectChain 프로토콜은 유효한 체인을 선택하는 과정을 설명합니다. 첫 번째 단계에서는 유효하지 않은 체인을 제거하고, 두 번째 단계에서는 유효한 체인에 체인 선택 규칙을 적용합니다.

이 요약은 Ouroboros Samasika 섹션의 주요 내용을 간략하게 다루었습니다. 개발자나 프로그래머가 이해하기 쉽도록 기술적 세부사항을 중심으로 정리했습니다.


7.2 Background

Ouroboros 프로토콜의 개요: Ouroboros는 안전성을 보장하는 최초의 Proof-of-Stake (PoS) 프로토콜로 소개되었습니다. 이 프로토콜에서는 시간을 슬롯(Slots) 및 에포크(Epochs)로 나누며, 초기 버전은 동기 네트워크만을 고려하였습니다. 후속 버전인 Ouroboros Praos는 시간 지연을 고려한 반동기적 세팅을 도입하였고, Ouroboros Genesis는 외부 서비스에 의존하지 않고 장거리 포크를 처리하는 추가적인 체인 선택 규칙을 도입하였습니다.

시간 모델링: 프로토콜의 실행 시간은 에포크로 나누어지며, 각 에포크는 여러 슬롯으로 나누어집니다. 일부 슬롯은 "빈 슬롯"일 수 있으며, 이는 해당 슬롯에 블록 생성자가 할당되지 않았음을 의미합니다.

참여자의 유형: 참여자는 다음 세 가지 유형으로 분류됩니다.

  • 알림 참여자(Alert parties): 모든 필요한 리소스에 액세스할 수 있고 동기화된 참여자입니다.
  • 활성 참여자(Active parties): 현재 프로토콜의 슬롯에서 행동할 가능성이 있는 모든 참여자입니다.
  • 비활성 참여자(Inactive parties): 프로토콜과의 상호 작용에 필요한 일부 리소스에 액세스할 수 없는 참여자입니다.

7.3 The New Chain Selection Rules

에포크 무작위성과 리더 선택 분포: 에포크 무작위성은 리더 선택 분포에 영향을 미치며, 에포크 무작위성은 이전 에포크의 일부 블록 정보를 기반으로 파생됩니다.

이 섹션은 Ouroboros Samasika에서 새롭게 제안된 체인 선택 규칙에 대해 설명하고 있습니다. 아래는 주요 내용의 요약입니다:

7.3.1 새로운 체인 선택 규칙의 목적:

Ouroboros Samasika에서 새롭게 도입된 체인 선택 규칙은 기존의 Ouroboros Genesis 프로토콜과의 차이점을 명확히 강조하기 위해 설명되었습니다. 이 규칙은 체인의 유효성을 판단하는 데 사용됩니다.

단거리 체인 선택 규칙: '단거리 포크'는 악의적인 참여자가 블록 밀도 분포를 아직 수정하지 않았을 때 발생하는 포크를 의미합니다. 이를 확인하기 위해 maxvalid-scisShortRange라는 함수를 호출하여 주어진 범위가 단거리 포크인지 아닌지를 판단합니다.

  • isShortRange 함수의 작동 방식:
  1. 두 체인 C1과 C2의 마지막 블록에서 prevLockcp 컴포넌트를 추출합니다.
  2. 두 체인의 prevLockcp 컴포넌트가 동일하면, 이는 단거리 포크로 판단되며, 그렇지 않으면 단거리 포크가 아니라고 판단됩니다.

새 체인 선택 프로토콜: SelectChain 프로토콜은 여러 체인 중에서 새로운 체인을 선택하는 방법을 설명합니다.

  • 먼저, 유효하지 않은 체인을 제거합니다.
  • 각 체인의 유효성을 IsValidChain 프로토콜을 통해 검증합니다.
  • 유효한 체인들에 대해서 maxvalid-sc 알고리즘을 실행하여 가장 적합한 체인을 선택합니다.
  • 선택된 체인은 Cloc로 설정되고 출력됩니다.

예시:


체인 C1, C2, C3가 있고 C2가 악의적인 참여자에 의해 조작된 체인이라고 가정해봅시다. SelectChain 프로토콜을 실행할 때 IsValidChain은 C2를 유효하지 않은 체인으로 판단하고 제거합니다. 그 다음, maxvalid-sc 알고리즘은 C1과 C3 중에서 가장 적합한 체인을 선택하게 됩니다. 이 예에서 C1이 가장 최근의 정보를 가진 체인이라고 하면, Cloc는 C1로 설정되고 출력됩니다.

Mina Protocol과 체인 선택의 문제

블록체인에서는 여러 노드가 동시에 다양한 블록을 생성할 수 있기 때문에, 이러한 상황에서 어떤 체인이 "올바른" 체인인지를 결정하는 것이 중요합니다. Ouroboros Samasika는 이러한 문제를 해결하기 위한 체인 선택 메커니즘을 제공합니다.


1. 단기 범위 포크 규칙 (Short-range fork rule)

  • 가장 최근에 발생한 체인 분기를 다룹니다.
  • 여기서는 간단하게, 가장 긴 체인을 선택하는 규칙을 따릅니다.

예시: 당신이 책을 읽다가 북마크를 잃어버린 상황을 상상해보세요. 가장 최근에 읽은 페이지를 기억하고 있으므로, 그 페이지로 돌아가기 위해 당신은 책의 후반부를 뒤져서 당신이 기억하는 마지막 문장을 찾습니다.


2. 장기 범위 포크 규칙 (Long-range fork rule)

  • 오래 전에 발생한 체인 분기를 다룹니다.
  • 단순히 가장 긴 체인을 선택하는 것만으로는 충분하지 않습니다.
  • 이 규칙은 체인의 특정 부분의 "밀도"를 확인하여 체인을 선택합니다.

예시: 앞서 언급한 책 예제를 계속 상상해보세요. 이번에는 당신이 어느 페이지에서 북마크를 잃어버렸는지 전혀 기억하지 못한다고 가정해봅시다. 이런 경우, 당신은 첫 페이지부터 시작하여 당신이 읽은 마지막 문장이 어디에 있는지 찾을 것입니다. 이것은 체인의 "밀도"를 확인하는 것과 유사합니다.


결론

Mina Protocol의 Ouroboros Samasika는 여러 체인 중에서 어떤 체인을 선택할 것인지 결정하는 방법을 제공합니다. 이 선택은 체인의 길이와 밀도를 기반으로 합니다. 이 메커니즘은 네트워크에 참여하는 모든 노드가 합의에 도달할 수 있도록 도와줍니다.

이 문서는 Ouroboros Genesis의 체인 선택 규칙에 대한 깊은 이해를 제공하며, Ouroboros Samasika와 Genesis 사이의 주요 차이점과 유사점을 강조하고 있습니다.


*예제: 체인 선택 프로그램

이 예제에서는 블록체인 네트워크에 여러 체인 후보들이 있을 때, 어떤 체인을 선택할지 결정하는 프로그램을 작성합니다.
  1. 데이터 구조 설정:
  • 체인은 블록의 리스트로 표현됩니다.
  • 각 블록은 prevLockcp와 같은 메타 데이터를 포함합니다.
class Block:
    def __init__(self, prevLockcp, data):
        self.prevLockcp = prevLockcp
        self.data = data

class Chain:
    def __init__(self):
        self.blocks = []

    def add_block(self, block):
        self.blocks.append(block)
  1. 체인 선택 함수 구현:
  • 체인이 단기 범위에서 포크되었는지 아닌지를 확인하는 함수를 작성합니다.
def is_short_range(chain1, chain2):
    return chain1.blocks[-1].prevLockcp == chain2.blocks[-1].prevLockcp
  1. 체인 선택 알고리즘 구현:
def select_chain(local_chain, chain_candidates):
    # 체인 선택 초기화
    max_chain = local_chain

    for candidate in chain_candidates:
        if is_short_range(candidate, max_chain):
            # 단기 범위 포크 규칙: 가장 긴 체인 선택
            if len(candidate.blocks) > len(max_chain.blocks):
                max_chain = candidate
        else:
            # 장기 범위 포크 규칙: 여기서는 단순화하여 체인 밀도를 기반으로 선택하게 됩니다.
            # 실제 구현에서는 더 복잡한 로직이 필요합니다.
            if get_min_density(candidate) > get_min_density(max_chain):
                max_chain = candidate

    return max_chain

이것은 Ouroboros Samasika 합의 프로토콜의 체인 선택 메커니즘을 단순화하여 코드로 표현한 것입니다. 실제 구현에서는 더 많은 세부사항과 검증 로직이 필요합니다.


*예제: 도서관에서 책 선택하기

상상해 보세요. 여러분이 도서관에 가서 특정 주제의 책을 찾고 있습니다. 그 주제에 대한 여러 권의 책이 있습니다. 각각의 책은 그 주제에 대한 다양한 정보와 관점을 담고 있습니다. 어떤 책을 선택할지 결정해야 합니다.

최근에 업데이트 된 책 선택하기 (단기 범위 선택 규칙):

첫 번째로, 여러분은 최근에 출판된 책을 선호할 수 있습니다. 왜냐하면 그것은 최신 정보를 제공할 수 있기 때문입니다. 이것은 Ouroboros Samasika에서 "단기 범위 포크"를 처리하는 방법과 유사합니다. 여기서는 가장 최근의 정보 (즉, 가장 긴 체인)를 선호합니다.

평점과 리뷰 확인 (장기 범위 선택 규칙):

그러나 어떤 경우에는 여러분이 그 주제에 대한 오래된 책 중에서도 선택해야 할 수 있습니다. 이런 경우에는, 그 책의 평점이나 독자들의 리뷰를 확인하여 결정을 내릴 수 있습니다. 만약 한 책이 다른 책보다 더 좋은 평점과 리뷰를 받았다면, 그 책을 선택할 확률이 높아집니다.

이것은 Ouroboros Samasika의 "장기 범위 포크" 선택 메커니즘과 유사합니다. 여기서는 체인의 특정 부분 (창) 내에서 정보의 "밀도" (즉, 블록의 수)를 비교하여 어떤 체인이 더 나은지 판단합니다.  이런 방식으로, Ouroboros Samasika 합의 프로토콜은 여러 체인 후보 중에서 "가장 나은" 체인을 선택하는 메커니즘을 제공합니다. 이것은 도서관에서 여러 책 중에서 가장 적합한 책을 선택하는 것과 유사한 원칙에 기반합니다.

7.4 The Window Min-density

윈도우 최소 밀도

핵심 개념:

  • 새로운 체인 선택 규칙의 핵심 개념은 "윈도우 최소 밀도"입니다.
  • 이는 이동하는 윈도우를 고려하고, 지금까지의 모든 윈도우에서 밀도의 최소값을 항상 유지하는 아이디어입니다.

v-shifting ω-window 정의:

  • 길이가 ω인 윈도우는 한 번에 v 슬롯만큼 이동합니다.
  • v는 이동 매개변수, ω는 윈도우 길이 매개변수로 불립니다.

v 및 ω 설정:

  • Ouroboros Samasika의 시작점은 Ouroboros Genesis입니다.
  • Ouroboros Samasika에서는 포크 위치에 관계없이 윈도우 위치를 고려합니다.
  • 윈도우는 푠CG보다 약간 큰 크기로 설정되며, 시간이 지남에 따라 v 슬롯만큼 약간 이동합니다.

예시:

  • sCG = 6 슬롯, 휖푠 = 1/3일 경우, 윈도우 크기 ω = 8 슬롯, 이동 크기 v = 2 슬롯입니다.

알고리즘 및 프로토콜:

  • 윈도우의 최소 밀도는 minDen으로 표시됩니다.
  • 윈도우의 끝에 도달했는지 확인하는 알고리즘이 제공됩니다 (isWindowStop).
  • 체인 선택 프로토콜 (SelectChain)은 유효한 체인을 선택하는 방법을 제공합니다.
  • 윈도우를 이동하는 알고리즘 (shiftWindow)도 제공됩니다.

참고사항:

  • 윈도우 길이를 완전히 나누는 이동 길이 휈의 요구사항은 깔끔한 알고리즘 설명을 위한 것입니다.

네, 이 부분은 Ouroboros Samasika 합의 프로토콜의 체인 선택 메커니즘 중에서 "윈도우 최소 밀도"에 관한 내용입니다. 이 내용을 통해 우리는 체인 내에서 어떤 부분이 "올바른" 체인인지 결정하는 방법을 배울 수 있습니다. 이것을 이해하기 위해 간단한 예시로 설명을 시도해 보겠습니다.


윈도우 최소 밀도란?

윈도우 최소 밀도는 특정 크기의 "윈도우" 안에서 발견된 블록의 밀도를 추적하는 개념입니다. 이 밀도는 체인의 어느 부분이 더 "진짜"일 가능성이 있는지를 결정하는 데 도움이 됩니다.


*예시: 슬라이딩 퍼즐 게임

슬라이딩 퍼즐 게임을 상상해보세요. 여러분은 퍼즐 조각을 움직여서 올바른 위치에 놓아 전체 그림을 완성해야 합니다. 이 퍼즐 게임에서는 각 조각이 어느 위치에 있어야 하는지 알려주는 '패턴'이 있습니다.

이 '패턴'은 우리의 "윈도우"에 비유할 수 있습니다. 여러분은 윈도우 안의 퍼즐 조각들의 밀도 (즉, 얼마나 많은 조각이 올바른 위치에 있는지)를 확인하면서 올바른 그림을 완성할 수 있습니다.

윈도우의 이동

이 윈도우는 시간이 지남에 따라 움직입니다 (즉, 슬라이딩 됩니다). 이것은 여러분이 게임을 진행하면서 다른 부분의 퍼즐 조각들을 확인하기 위해 '패턴'을 움직이는 것과 유사합니다.

윈도우 최소 밀도의 중요성

퍼즐 게임에서, 여러분은 올바른 위치에 있는 조각의 수 (즉, 밀도)를 최대화하기 위해 조각들을 움직입니다. 마찬가지로, Mina Protocol에서는 체인의 올바른 부분을 결정하기 위해 윈도우 최소 밀도를 사용합니다.
이런 방식으로, Mina Protocol의 Ouroboros Samasika 합의 프로토콜은 체인의 어느 부분이 올바른지를 결정하는 메커니즘을 제공합니다. 이 메커니즘은 윈도우의 밀도와 그 밀도가 시간에 따라 어떻게 변하는지를 기반으로 합니다.

7.5 새 체인 선택 규칙 채택 (Adopting the New Chain Selection Rule)

개요:

  • Ouroboros Genesis의 maxvalid-sc 알고리즘에 도입된 수정 사항이 다른 합의 서브 프로토콜에 어떻게 영향을 미치는지 설명합니다.

초기 설정:

  • Genesis 블록이 생성될 때 처음으로 −−→Den = (pDen1, ..., pDen??, pDencurr, minDen) 매개변수가 설정됩니다.
  • 모든 리소스와 함께 등록된 당사자는 이 프로토콜을 호출하여 작동합니다.

초기화 프로토콜:

  • Ouroboros Samasika의 초기화 프로토콜은 당사자가 처음 가입할 때만 실행됩니다.
  • 키 생성, 윈도우 밀도 변수 업데이트 및 기타 초기 설정 작업을 수행합니다.

스테이킹 절차:

  • 특정 순서로 실행되며, FVRF에서 새 블록을 생성하거나 KES 서명 키를 진화시키는 작업을 포함합니다.
  • shiftWindow(·)isWindowStop(·, ·) 알고리즘을 사용하여 매개변수를 업데이트합니다.

윈도우 최소 밀도 얻기:

  • 주어진 체인의 현재 윈도우 최소 밀도를 얻는 프로토콜입니다. Genesis 블록인 경우 0을 반환하고, 그렇지 않은 경우 마지막 블록을 구문 분석하여 minDen 매개변수를 얻습니다.

7.6 Proofs of Security

Ouroboros Samasika 프로토콜의 보안 증명에 관한 기술적인 내용입니다. 여기에는 간결한 요약입니다:

Ouroboros Samasika 프로토콜의 보안 증명


예비 사항:

  1. Azuma의 부등식: 실수 값의 무작위 변수의 시퀀스에 대한 경계를 제공합니다.
  2. Chernoff 경계: 독립적인 무작위 변수의 합의 꼬리 확률에 대한 경계를 제공합니다.
  3. 슈퍼-이항 마르티갈 조건: 이진 무작위 변수의 시퀀스에 대한 조건을 정의합니다.
  4. Azuma의 부등식의 코롤라리: 이진 무작위 변수의 시퀀스에서 1과 0의 수에 대한 경계를 제공합니다.

증명 구조:

증명은 "특성 문자열"을 "동기 버전"으로 변환하고 이를 분석함으로써 구축됩니다.

주요 정의 및 레마:

  1. 레마 1 (Azuma의 부등식): 실수 값의 무작위 변수의 시퀀스에 대한 경계를 제공합니다.
  2. 정리 1 (Chernoff 경계): 독립적인 무작위 변수에 대한 확률 경계를 논의합니다.
  3. 정의 2와 3: 슈퍼-이항 마르티갈 조건을 설명합니다.
  4. 레마 2: 유도된 분포의 구조를 설명합니다. 주어진 시퀀스에서 동기 동등한 무작위 변수를 얻습니다.
  5. 증명 (i) 및 (ii): Azuma의 부등식과 유도된 분포의 구조를 사용하여 경계를 논의합니다.
  6. 정리 2: Ouroboros-Samasika 프로토콜의 보안 속성을 확립하는 주요 정리입니다. 공통 접두사, 체인 성장, 체인 품질 및 존재 체인 품질과 같은 속성이 유지되도록 합니다.
  7. 레마 3: 로컬 체인의 최소 밀도가 thigh 이상임을 나타내는 임계 값이 있다고 설명합니다.
  8. 레마 4: 특정 슬롯 이후에 정직한 당사자가 후보 체인을 확장하지 않는다고 주장합니다.
  9. 레마 5: 후보 체인의 최소 밀도에 대한 상한을 제공합니다.

결론:

다양한 레마와 정리를 활용하여 Ouroboros Samasika 프로토콜의 보안이 확립되어, 공통 접두사, 체인 성장, 체인 품질 및 존재 체인 품질과 같은 속성이 유지됩니다.


7.7 짧은 범위 포크 규칙의 효율적 구현 An Efficient Implementation of the Short-range Fork Rule

기본 아이디어: Ouroboros Genesis와 같이, 가장 긴 체인을 선택하는 "짧은 범위 포크 규칙"을 기억하세요. 포크가 히스토리에서 ( k ) 블록 이전인 경우 그것을 짧은 범위 포크라고 합니다. 이 규칙의 단순한 구현은 항상 마지막 ( k ) 블록을 저장하는 것입니다. 그러나 이 방법은 효율적이지 않습니다.

효율적인 접근 방식: 한 시점에서 단 두 개의 블록 정보만 저장할 수 있는 방법을 제안합니다.

체크포인트 유지: 모든 시대(epoch)에서 두 개의 체크포인트를 유지합니다. 포크가 얼마나 오래 전에 발생했는지에 대한 추정을 제공할 수 있습니다.

  • 시작 체크포인트: 각 시대의 시작 부분에 있습니다.
  • 잠금 체크포인트: 시대의 처음 두 세분의 일 부분에 있는 마지막 블록입니다. 현재 시대에서, 첫 슬롯으로부터 시간이 지나가면, 잠금 체크포인트는 지금까지의 마지막 블록이 됩니다. 그러나 첫 두 세분의 일의 마지막 블록에 도달하면, 그 블록에서 "잠금 체크포인트"가 고정됩니다.

포크 위치 추정: 두 가지 경우를 고려합니다.

  1. 현재 시대의 포크: 이를 짧은 범위 포크로 분류합니다. 현재 시대의 리더 선택 분포는 이전 시대의 처음 두 세분의 일 끝에 이미 결정되었습니다. 따라서 현재 시대의 분포가 왜곡되지 않았다고 안전하게 가정하고, 단순한 가장 긴 체인 규칙이 이 경우에 적합합니다.
  2. 같은 잠금 체크포인트를 가진 이전 시대의 포크: 후보 체인에 대한 이전 시대의 잠금 체크포인트가 같기 때문에, 포크 이후에도 리더 선택 분포가 잘 분포되어 있습니다. 따라서 여기에서도 단순한 가장 긴 체인 규칙이 충분합니다.

8 실험 결과 Experimental Results

  • Mina 프로토콜을 구현하고 전 세계 참가자들과 함께 테스트넷을 시작했습니다.
  • 실험 기간은 2019년 11월 12일 10 AM부터 2019년 12월 15일 10 AM까지, 태평양 표준시입니다.

8.1 구현 세부사항

  • 구현은 OCaml 언어로 작성되었습니다.
  • SNARK는 Snarky라는 특별한 OCaml 기반 언어로 작성되었습니다. 백엔드는 libsnark [4]를 기반으로 합니다.
  • 기본 고스립 프로토콜은 libp2p [1]을 기반으로 합니다.
  • Mina 프로토콜은 증분 계산 가능한 SNARK를 기반으로 합니다.
  • 블록 큐에 대한 SNARK 증명의 트리가 생성되며 루트 증명은 큐 이전의 블록 체인 증명과 결합됩니다.
  • 블록체인의 유효성을 입증하는 SNARK 증명을 블록체인 증명이라고 합니다.
  • 세 가지 다른 종류의 증명이 있습니다: 기본 증명, 랩 증명, 병합 증명.
  • Mina 프로토콜은 Ouroboros Samasika 합의 메커니즘과 함께 사용됩니다.
  • 주요 합의 매개 변수: ( k = 10 ), 슬롯 지속 시간 ( R = 240 )초, ( f = 0.5 ) (에포크 내에서 채워진 슬롯의 평균 분수).
  • 테스트넷에는 총 85명의 고유 참가자가 있었습니다. 이 중 49명은 블록 생성자였으며, 8명은 증명자였습니다.
  • 우리가 운영하는 블록 생성자 노드는 ‘c5.2xlarge’ 인스턴스 크기를 사용했으며, 증명자 노드는 ‘c5.9xlarge’를 사용했습니다.

8.2 결과

  • 관심 기간 동안의 총 슬롯 수는 15839개였으며, 이 중 7926개의 슬롯이 채워졌습니다.
  • 총 24826개의 거래가 이루어졌으며, 이 중 17256개는 커뮤니티 멤버로부터였습니다. 78명의 고유한 발신자와 183명의 고유한 수신자가 있었습니다.
  • 총 53120개의 블록 SNARK 증명이 생성되었습니다.
  • 그림 17, 18, 19는 일일 거래 수, 일일 블록 생성 수, 일일 SNARK 생성 수를 보여줍니다.

9 향후 작업

  • 제시된 Mina 프로토콜 설명은 결제 시스템을 위한 것이지만, 이 개념은 튜링 완전한 기능에 쉽게 확장될 수 있습니다.
  • 예를 들어, 프레임워크는 사용자 정의 토큰과 다중 서명 계정을 지원하기 위해 확장될 수 있습니다.
  • 또한, 로드맵에는 SNARK 연구의 최근 진보와 같은 기본 SNARKs를 업그레이드하는 것이 포함되어 있습니다.

10 관련 작업

  • Mina는 확장과 분산 간의 트레이드오프에 대한 해결책을 제시하는 유일한 프로젝트가 아닙니다.
  • 이 트레이드오프는 블록체인의 시작부터 핵심 도전 과제였습니다.
  • 이후 많은 해결책이 제안되었으며, 이러한 해결책은 기존 체인을 활용하는 것과 Mina와 같은 새로운 구조를 제안하는 것으로 분류될 수 있습니다.

10.1 기존 체인 솔루션

  • Lightning 및 Plasma 네트워크는 거래를 주 체인에서 사이드 채널로 이동합니다. 그러나 체인 작업은 여전히 전체 블록체인을 다운로드해야 하며 미해결 라우팅 문제로 고통받습니다.
  • Light 노드는 암호 화폐에 더 넓은 접근을 가능하게 하는 해결책으로 제안되었습니다.
  • 샤딩도 용량을 늘릴 방법으로 제안되었습니다. 노드는 그들이 전체 데이터를 가지고 있는 샤드에 대해서만 완전한 확신을 가집니다.
  • 블록체인 접근에 대한 또 다른 제안된 해결책은 제3자 노드에 의존하는 것입니다.

References

libp2p: 이것은 모듈식 피어 투 피어 네트워킹 스택입니다. libp2p는 네트워크 프로토콜, 다중주소 연결 및 서로 다른 전송 프로토콜 간의 통합과 같은 여러 기능을 제공하며, 분산 애플리케이션과 서비스를 위한 기반으로 사용됩니다.

Vitalik Buterin: Ethereum의 공동 창시자로, 그는 Ethereum 블록체인의 확장성 문제를 다루는 다양한 토론과 인터뷰에서 중요한 의견을 제시하였습니다. 이 레퍼런스는 그의 인터뷰나 발표 중 하나를 나타냅니다.

Ouroboros Genesis: 이 연구는 증명 가능한 보안성을 가진 새로운 유형의 PoS 블록체인 프로토콜을 소개합니다. 동적 가용성을 통해 네트워크 참여자의 변화를 처리하면서도 안전성을 유지할 수 있습니다.

libsnark: 이것은 zk-SNARK 증명을 구성하기 위한 C++ 라이브러리입니다. zk-SNARK는 "제로 지식" 증명의 한 형태로, 특정 정보를 공개하지 않고도 어떤 주장이 참인지 증명할 수 있습니다.

Eli Ben-Sasson et al.: 이 연구는 타원곡선의 사이클을 통한 확장 가능한 제로 지식 증명을 소개합니다. 이러한 증명은 특히 블록체인과 같은 분산된 시스템에서 효율적인 트랜잭션 검증을 위해 중요합니다.

Nir Bitansky et al.: 이 연구는 SNARK와 proof-carrying data의 재귀적 구성 및 부트스트래핑에 대해 다룹니다. 이러한 기술은 특히 블록체인과 같은 분산 시스템에서 데이터의 유효성을 효율적으로 증명하기 위해 사용됩니다.

Sean Bowe et al.: "Halo"는 신뢰할 수 있는 설정 없이 재귀적 증명 구성을 제공하는 연구입니다. 이 기술은 zk-SNARK를 다음 단계로 발전시키려는 시도의 일부입니다.

Alessandro Chiesa et al.: "Marlin"은 유니버설 및 업데이트 가능한 SRS를 사용하여 zk-SNARK를 사전 처리하는 방법에 대한 연구입니다. 이러한 접근 방식은 효율적인 증명 및 검증을 위한 새로운 기술을 제공합니다.

Phil Daian et al.: "Snow White"는 PoS의 안전한 증명에 대한 새로운 접근 방식을 제시합니다. 이 연구는 특히 분산된 증명 시스템의 재구성 및 응용 프로그램에 중점을 둡니다.

James A. Donald: 비트코인 백서의 첫 번째 응답으로, 블록체인의 확장성과 중앙 집중화 문제를 초기부터 제기했습니다. 이것은 블록체인 기술의 핵심적인 도전 과제 중 하나로 여겨져 왔습니다.

Juan A. Garay et al.: 이 연구에서는 비트코인의 기반 프로토콜에 대한 근본적인 분석과 응용 프로그램을 제시합니다. 특히, 그들은 이러한 프로토콜의 안전성과 합의 메커니즘의 특성을 조사합니다.

Aggelos Kiayias et al.: "Ouroboros"는 PoS 블록체인 프로토콜의 안전성을 증명하는 연구입니다. 이 연구에서는 특정 조건 하에서 이 프로토콜이 어떻게 안전하게 동작할 수 있는지에 대한 근거를 제시합니다.

Rajeev Motwani and Prabhakar Raghavan: 이 책은 확률 알고리즘에 대한 깊은 연구를 제공합니다. 랜덤화된 알고리즘의 다양한 사용 사례와 그 응용 프로그램에 대한 통찰력을 제공합니다.

Satoshi Nakamoto: 이것은 비트코인의 원래 백서입니다. 이 백서에서는 P2P 전자 현금 시스템의 개념과 그 구현에 대한 세부 사항을 소개합니다. 비트코인의 기본 아이디어와 동기에 대한 깊은 이해를 제공합니다.

Eli Ben Sasson et al.: "Zerocash"는 비트코인에서 분산형 익명 결제를 제공하는 방법에 대한 연구입니다. 이 연구에서는 zk-SNARKs를 사용하여 거래의 내용을 숨기는 동시에 그 유효성을 증명하는 방법을 제시합니다.

Alexander Skidanov: 이 글은 블록체인 샤딩의 문제점에 대한 통찰력을 제공합니다. 샤딩은 블록체인의 확장성 문제를 해결하기 위한 한 가지 방법이지만, 여전히 해결되지 않은 도전 과제가 있습니다.

Saar Tochner et al.: 이 연구는 결제 채널 네트워크의 경로 선택 문제에 대한 통찰력을 제공합니다. 결제 채널의 경로를 예측하는 것과 관련된 트레이드오프에 대해 논의합니다.

Trustnodes: 이 기사에서는 Lightning Labs의 주요 개발자가 Lightning Network의 라우팅 문제에 대해 논의하는 내용을 다룹니다. 라우팅 문제는 네트워크의 효율성과 안정성에 영향을 미칩니다.

Gavin Wood et al.: "Ethereum" 백서에서는 일반화된 트랜잭션 원장의 안전한 분산 방식을 소개합니다. 이 백서는 Ethereum 블록체인의 핵심 개념, 합의 메커니즘, 스마트 컨트랙트 언어 등에 대한 깊은 통찰력을 제공합니다.