Whitepaper

파이 백서

3 솔루션: Pi – 휴대폰에서의 채굴 활성화

Pi Core 팀은 이러한 채택의 주요 장벽을 확인한 후, 일반 사람들이 채굴(또는 분산 거래 기록에서 거래를 검증하는 데 필요한 가상화폐 보상을 획득)할 수 있는 방법을 찾기 시작했습니다. 업데이트/교체자로서, 트랜잭션의 분산 레코드를 유지 관리하는 과정에서 발생하는 주요 과제 중 하나는 이 공개 레코드에 대한 업데이트가 부정적이지 않도록 보장하는 것입니다. Bitcoin의 기록 갱신 프로세스는 입증되었지만(신뢰성을 입증하기 위해 에너지/돈을 태우는) 그다지 사용자(또는 행성) 친화적이지 않습니다. Pi의 경우, 사용자에게 매우 친숙하고 이상적으로 개인용 컴퓨터와 휴대 전화에서 마이닝을 가능하게 하는 합의 알고리즘을 사용하는 추가 설계 요건을 도입했다.

기존의 합의 알고리즘(분산된 원장에 트랜잭션을 기록하는 프로세스)을 비교함에 있어, Stellar Consensus Protocol은 사용자 친화적인 모바일 우선 채굴을 가능하게 하는 선도적인 후보로 부상한다. Stellar Consensus Protocol(SCP)은 Stellar Development Foundation의 수석 과학자이기도 한 스탠포드 컴퓨터 과학 교수 David Maziøres가 설계했습니다. SCP는 분산 원장에 대한 업데이트가 정확하고 신뢰할 수 있음을 보장하기 위해 연합 비잔틴 협정이라는 새로운 메커니즘을 사용한다. SCP는 2015년부터 운영 중인 스텔라(Stellar) 블록 체인을 통해 실전 배치되기도 한다.

컨센서스 알고리즘의 간단한 소개

Pi consensus 알고리즘을 도입하기 전에, 그것은 합의 알고리즘이 블록 체인에 대해 무엇을 하는지, 그리고 오늘날의 블록 체인 프로토콜이 일반적으로 사용하는 합의 알고리즘의 유형에 대한 간단한 설명을 하는 것을 돕는다. 이 섹션은 명확성을 위해 지나치게 단순화된 방식으로 작성되었으며, 완전하지 않습니다. 더 높은 정확도는 아래의 Adaptations to SCP를 참조하고 stellar consensus protocol paper를 읽으십시오.

블록 체인은 트랜잭션 블록 목록을 완전히 정렬하는 것을 목표로 하는 내결함성 분산 시스템입니다. 내결함성 분산 시스템은 수십 년 동안 연구되어 온 컴퓨터 과학의 한 분야이다. 중앙 집중식 서버가 없는 대신 블록의 내용 및 총 순서가 무엇인지에 대한 합의가 필요한 분산형 컴퓨터 목록(노드 또는 피어라고 함)으로 구성되기 때문에 분산 시스템이라고 합니다. 이러한 노드는 시스템에 일정 정도 결함이 있는 노드를 허용할 수 있기 때문에 내결함성이라고도 합니다(예: 노드의 최대 33%가 고장일 수 있으며 전체 시스템이 계속 정상적으로 작동함).

합의 알고리듬에는 두 가지 광범위한 범주가 있다. 노드를 다음 블록을 생성하는 리더로 선택하는 것과 명시적인 리더는 없지만 모든 노드가 컴퓨터 메시지를 서로 전송하여 표를 교환한 후에 다음 블록이 무엇인지에 대한 합의에 도달한다. (정확히 말하면 마지막 문장은 여러 가지 부정확성을 포함하지만, 가장 광범위한 것을 설명하는 데 도움이 된다.돌멩이)

비트코인은 첫 번째 유형의 합의 알고리즘을 사용합니다. 모든 비트코인 노드는 암호화 퍼즐을 푸는 데 있어서 서로 경쟁하고 있다. 솔루션은 랜덤하게 발견되므로, 기본적으로 먼저 솔루션을 찾는 노드가 다음 블록을 생성하는 라운드 리더로 선택됩니다. 이 알고리즘은 Proof of work이라고 불리며 많은 에너지 소비를 초래한다.

스타 컨센서스 프로토콜의 단순화된 도입

Pi는 다른 유형의 합의 알고리듬을 사용하며, Stellar Consensus Protocol(SCP)과 FBA(Federated Beatin Agreement)라는 알고리즘을 기반으로 한다. 이러한 알고리즘은 에너지 낭비는 없지만 노드가 다음 블록에 대해 합의하기 위해서는 많은 네트워크 메시지를 교환해야 한다. 각 노드는 암호 서명과 트랜잭션 기록에 기초하여 트랜잭션이 유효한지 여부를 독립적으로 결정할 수 있습니다. 예를 들어, 전환 및 이중 지출 권한입니다. 그러나 컴퓨터 네트워크가 한 블록에 어떤 거래를 기록할 것인지, 그리고 이러한 거래와 블록의 순서에 대해 합의하기 위해서는, 그들은 서로 메시지를 주고 받아야 하고 합의에 도달하기 위해 여러 차례의 투표를 해야 한다. 직관적으로 어떤 블록이 다음 블록인지에 대한 네트워크 내의 다른 컴퓨터로부터의 그러한 메시지는 다음과 같을 것이다:

  • "나는 A 블록이 다음 블록이 될 것을 우리 모두가 제안한다."
  • "A 블록이 다음 블록이 될 것을 투표한다."
  • "나는 대부분의 노드들이 A 블록에 투표했다는 것을 확인한다."

여기서 합의 알고리즘은 이 노드를 가능하게 한다. "A는 다음 블록이고, A 이외의 블록은 다음 블록으로 있을 수 없다"고 결론짓는다. 위의 투표 단계는 많은 것처럼 보이지만, 인터넷은 충분히 빠르고 이러한 메시지들은 가볍기 때문에 이러한 합의 알고리즘은 비트코인의 작업 증명보다 더 가볍다. 이러한 알고리듬의 주요 대표 중 하나는 비잔틴 Fault Tolerance(BFT)이다. 오늘날 몇몇 상위 블록 체인은 NEO와 리플과 같은 BFT의 변형을 기반으로 한다.

BFT에 대한 주요 비판 중 하나는 중앙 집중화 지점이 있다는 점이다. 투표가 수반되기 때문에 투표 쿼럼에 참여하는 노드 집합은 시스템 생성자가 초기에 중앙에서 결정한다. FBA의 기여는 중앙에서 결정된 쿼럼을 가지는 대신, 각 노드가 각기 다른 쿼럼을 형성하는 쿼럼 조각을 설정한다는 것이다. 새로운 노드는 분산 방식으로 네트워크에 가입할 수 있습니다. 즉, 신뢰하는 노드를 선언하고 다른 노드를 신뢰하도록 설득하지만 중앙 관리 기관을 설득할 필요는 없습니다.

SCP는 FBA의 인스턴스화 중 하나이다. SCP 노드는 비트코인의 작업 증명 합의 알고리듬에서처럼 에너지를 연소하는 대신 네트워크의 다른 노드를 신뢰할 수 있는 것으로 보증함으로써 공유 레코드를 보호한다. 네트워크의 각 노드는 신뢰할 수 있는 것으로 간주되는 네트워크의 다른 노드로 구성된 쿼럼 슬라이스를 구축합니다. 쿼럼은 멤버 쿼럼 슬라이스를 기반으로 구성되며, 검증자는 쿼럼에 있는 노드의 비율도 트랜잭션을 수락하는 경우에만 새 트랜잭션을 수락합니다. 네트워크 전체의 검증자가 쿼럼을 구성할 때, 이러한 쿼럼은 노드가 보안에 대한 보증을 통해 트랜잭션에 대한 합의에 도달하는 데 도움이 된다. 이 SCP 기술 요약을 통해 Stellar Consensus Protocol에 대해 자세히 알아볼 수 있습니다.

스타 컨센서스 프로토콜에 대한 Pi의 적응

Pi의 컨센서스 알고리즘은 SCP에서 최고를 구성한다. SCP는 공식적으로 [Mazieres 2015]로 증명되었으며 현재 Stellar Network에서 구현된다. 주로 회사 및 기관(예: IBM)으로 구성된 Stellar Network와 달리, Pi는 개인 기기가 프로토콜 수준에서 기여하고 휴대폰, 노트북 및 컴퓨터를 포함하여 보상을 받을 수 있도록 합니다. 다음은 Pi가 개인에 의한 채굴을 가능하게 하는 데 SCP를 적용하는 방법에 대한 소개입니다.

Pi 사용자가 할 수 있는 역할은 Pi Miner로서 4가지가 있다.

선구자 : 매일매일 자신이 로봇이 아니라는 것을 확인하는 Pi 모바일 앱의 사용자입니다. 이 사용자는 앱에 로그인할 때마다 자신의 존재를 확인합니다. 또한 앱을 열어 거래를 요청할 수 있습니다(예: Pi에서 다른 Pioneer로 결제).

기부자 : 자신이 알고 신뢰하는 개척자의 목록을 제공하여 기여하는 Pi 모바일 앱의 사용자입니다. 전체적으로 Pi 기여자들은 글로벌 신뢰 그래프를 구축할 것입니다.

대사님 : 다른 사용자를 Pi 네트워크에 소개하는 Pi 모바일 앱의 사용자입니다.

노드 : 개척자이며 Pi 모바일 앱을 사용하는 기여자이며 데스크톱이나 노트북 컴퓨터에서 Pi 노드 소프트웨어를 실행하고 있는 사용자입니다. Pi 노드 소프트웨어는 기여자가 제공하는 신뢰 그래프 정보를 고려하여 핵심 SCP 알고리즘을 실행하는 소프트웨어입니다.

사용자는 위의 역할 중 하나 이상을 수행할 수 있습니다. 모든 역할이 필요하기 때문에, 모든 역할은 그들이 그 주어진 날 동안 참여하고 기여하기만 한다면 매일 새롭게 주조된 파이로 보상을 받는다. 채굴자가 기부금에 대한 보상으로 새로 주조된 화폐를 받는 사용자라는 느슨한 정의에서, 네 가지 역할은 모두 채굴자로 간주됩니다. 우리는 Bitcoin 또는 Ethereum에서와 같이 작업 합의 증명 알고리즘을 실행하는 것과 같은 전통적인 의미보다 광산을 더 광범위하게 정의한다.

우선, 우리는 Pi Node 소프트웨어가 아직 출시되지 않았다는 것을 강조할 필요가 있습니다. 따라서 이 섹션은 아키텍처 설계 및 기술 커뮤니티의 의견을 요청하기 위한 요청으로 더 많이 제공됩니다. 이 소프트웨어는 완전한 오픈 소스일 뿐만 아니라 국내에서 사용할 수 있는 오픈 소스 소프트웨어인 스텔라 코어에 크게 의존할 것입니다. 이것은 지역 사회의 모든 사람들이 그것에 대한 개선사항을 읽고, 논평하고, 제안할 수 있다는 것을 의미합니다. 다음은 개별 장치에 의한 마이닝이 가능하도록 SCP에 대해 제안된 변경 사항입니다.

노드

가독성을 위해, 우리는 SCP 용지가 온전한 노드라고 지칭하는 것으로 올바르게 연결된 노드로 정의한다. 또한 가독성을 위해 Pi 네트워크의 모든 온전한 노드의 집합으로 정의한다. 각 노드의 주 작업은 주 Pi 네트워크에 올바르게 연결되도록 구성해야 합니다. 직관적으로, 주 네트워크에 잘못 연결되어 있는 노드는 주 비트코인 네트워크에 연결되지 않는 비트코인 노드와 유사하다.

SCP의 용어로, 노드가 올바르게 연결되려면 이 노드가 쿼럼 슬라이스를 선택해야 한다는 것을 의미하므로 이 노드를 포함하는 모든 결과 쿼럼이 기존 네트워크의 쿼럼과 교차한다. 보다 정확하게는 n+1 노드()의 결과 시스템 N'이 쿼럼 교차를 즐기는 경우 노드 이 이미 올바르게 연결된 노드()의 기본 네트워크 N에 올바르게 연결되어 있습니다. 다시 말해서, N'은 쿼럼 중 어느 두 개라도 노드를 공유하는 경우 쿼럼 교차를 즐긴다. 즉, 모든 쿼럼 과 에 대해 이다.

기존 Stellar 컨센서스 배치에 대한 Pi의 주요 기여는 Pi 기여자가 메인 Pi 네트워크에 연결하도록 구성을 설정할 때 Pi 노드가 사용할 수 있는 정보로 제공하는 신뢰 그래프의 개념을 도입하는 것이다.

쿼럼 조각을 선택할 때 이러한 노드는 자체 보안 원을 포함하여 기여자가 제공하는 신뢰 그래프를 고려해야 합니다. 이 결정을 돕기 위해 노드를 실행하는 사용자가 가능한 한 정보에 입각한 결정을 내릴 수 있도록 보조 그래프 분석 소프트웨어를 제공할 계획이다. 이 소프트웨어의 일일 출력에는 다음이 포함됩니다.

신뢰 그래프의 현재 노드와의 거리를 기준으로 정렬된 노드 순위 목록, 신뢰 그래프의 노드 호출기 순위 분석에 기반한 노드 순위 목록 네트워크에 가입하려는 새로운 노드 목록 중 어떤 방식으로든 결함이 있는 것으로 커뮤니티가 보고한 노드 목록 잘못된 Pi 노드라는 키워드에 있는 웹의 가장 최근의 기사 목록 및 기타 관련 키워드; StellarBeat 쿼럼 모니터에 표시된 것과 유사한 Pi 네트워크를 구성하는 노드의 시각적 표현[소스 코드]

QuorumExplorer.com [소스 코드]와 유사한 쿼럼 탐색기

StellarBeat 쿼럼 모니터에 있는 것과 같은 시뮬레이션 도구로서 현재 노드의 구성이 변경될 때 이 노드의 Pi 네트워크에 대한 연결성에 예상되는 영향을 보여줍니다.

향후 작업에 대한 흥미로운 연구 문제는 신뢰 그래프를 고려하고 각 노드에 최적의 구성을 제안하거나 구성을 자동으로 설정할 수 있는 알고리듬을 개발하는 것이다. Pi Network를 처음 배포할 때 노드를 실행하는 사용자는 언제든지 노드 구성을 업데이트할 수 있지만 매일 구성을 확인하라는 메시지가 표시되며 적합한지 여부를 업데이트하라는 메시지가 표시됩니다.

모바일 앱 사용자

파이오니아가 지정된 트랜잭션이 실행되었는지(예: Pi를 받았는지) 확인해야 할 경우 모바일 앱을 엽니다. 이 때 모바일 앱은 하나 이상의 노드에 연결하여 트랜잭션이 대장에 기록되었는지 여부를 조회하고 해당 블록의 최신 블록 번호와 해시 값을 가져옵니다. 해당 Pioneer가 Node도 실행 중이면 모바일 앱이 Pioneer의 자체 노드에 연결됩니다. Pioneer가 노드를 실행하고 있지 않으면 앱이 여러 노드에 연결하여 이 정보를 교차 확인합니다. 개척자들은 자신의 앱을 연결할 노드를 선택할 수 있습니다. 그러나 대부분의 사용자가 쉽게 사용할 수 있도록 하려면 앱에 신뢰할 수 있는 그래프에 기반한 사용자에게 가장 가까운 노드 수, 호출기 순위가 높은 노드의 무작위 선택 등 적절한 기본 노드 세트가 있어야 한다. 모바일 Pioneers의 기본 노드 세트를 선택하는 방법에 대한 피드백을 요청합니다.

채굴보상금

SCP 알고리즘의 아름다운 특성은 그것이 블록체인보다 더 일반적이라는 것이다. 분산 노드 시스템 전체에 대한 합의를 조정합니다. 이는 동일한 코어 알고리즘이 새로운 블록에서 새로운 트랜잭션을 기록하기 위해 몇 초마다 사용될 뿐만 아니라, 보다 복잡한 계산을 주기적으로 실행하기 위해 사용될 수 있다는 것을 의미한다. 예를 들어, 일주일에 한 번, 항성 네트워크는 이것을 사용하여 항성 네트워크의 인플레이션을 계산하고 모든 항성 동전 홀더에 비례하여 새로 주조된 토큰을 할당하고 있다(스텔라의 동전은 루멘스라고 불린다). 비슷한 방식으로 Pi 네트워크는 하루에 한 번씩 SCP를 사용하여 특정 날짜에 적극적으로 참여한 모든 Pi 채굴자(개척자, 기여자, 대사, 노드)에 걸친 네트워크 차원의 새로운 Pi 분포를 계산한다. 즉 파이밍 보상은 매일 한 번만 계산되고 모든 블록에서 계산되는 것이 아니다.

비교를 위해 비트코인은 모든 블록에 마이닝 보상을 할당하고 계산 집약적인 무작위 작업을 해결할 수 있을 만큼 충분히 운이 좋았던 채굴자에게 모든 보상을 준다. 이 보상은 현재 비트코인 12.5 비트코인(~40,000달러)으로 10분마다 한 명의 채굴자에게만 주어진다. 이것은 주어진 채굴자가 보상을 받는다는 것을 매우 불가능하게 만든다. 이에 대한 해결책으로, 비트코인 채굴자들은 중앙집중화된 채굴 풀에서 조직화 되고 있습니다. 이 풀들은 모두 처리 능력을 기여하고, 보상을 받을 가능성을 높이며, 결국 그에 비례하여 보상을 공유하고 있습니다. 채굴장은 중앙 집중화 지점일 뿐만 아니라 운영자들도 개별 채굴자들에게 돌아가는 양을 줄이면서 삭감당한다. 파이에서는 하루에 한 번 기여하는 모든 사람이 새로운 파이의 성과주의적인 분포를 받기 때문에 갱도를 채굴할 필요가 없다.

거래수수료

비트코인 거래와 마찬가지로 Pi 네트워크에서도 수수료는 선택 사항이다. 각 블록에는 포함할 수 있는 트랜잭션 수에 대한 특정 제한이 있습니다. 거래가 밀리지 않으면 거래가 자유로워지는 경향이 있다. 그러나 더 많은 거래가 있을 경우 노드들은 수수료로 그것들을 주문하며, 가장 높은 수수료의 거래를 상위에 두고 생산되는 블록에 포함될 상위 거래만 선택한다. 이것은 그것을 오픈 마켓으로 만든다.

구현: 요금은 하루에 한 번씩 노드 간에 비례적으로 분할됩니다. 각 블록에서 각 거래의 수수료는 그날의 활동적인 채굴자들에게 분배되는 하루의 끝에서 임시 지갑으로 옮겨진다. 이 지갑에는 알 수 없는 개인 키가 있습니다. 이 지갑 내부 및 외부 트랜잭션은 모든 노드의 합의 하에 프로토콜 자체에 의해 강제되며, 합의는 또한 매일 새로운 Pi를 발생시킨다.

한계 및 향후 작업

SCP는 스텔라 네트워크의 일부로 몇 년 동안 광범위하게 테스트되었으며, 이 문서 작성 당시 세계 9위의 암호화폐이다. 이것은 우리에게 꽤 큰 자신감을 준다. Pi 프로젝트의 한 가지 목표는 더 많은 일상 사용자가 핵심 합의 알고리듬에 참여할 수 있도록 Pi 네트워크의 노드 수를 Stellar 네트워크의 노드 수보다 크게 확장하는 것이다. 노드 수를 늘리면 노드 간에 교환해야 하는 네트워크 메시지 수가 증가할 수밖에 없습니다. 이러한 메시지들은 이미지나 유튜브 동영상보다 훨씬 작고, 오늘날 인터넷은 동영상을 빠르게 전송할 수 있지만, 참여 노드 수에 따라 필요한 메시지 수가 증가하여 합의에 이르는 속도에 병목현상이 될 수 있다. 이렇게 하면 궁극적으로 새로운 블록과 새 트랜잭션이 네트워크에 기록되는 속도가 느려집니다. 다행히 현재 Stellar는 비트코인보다 훨씬 빠르다. 현재 Stellar는 초당 수천 건의 트랜잭션을 지원할 수 있는 3~5초마다 새 블록을 생성하도록 보정됩니다. 이에 비해 비트코인은 10분마다 새로운 블록을 생산한다. 더구나 비트코인의 안전보장 미비로 인해 드문 경우 비트코인의 블록체인을 첫 1시간 이내에 덮어쓸 수 있다. 비트코인 이용자가 거래가 최종으로 간주될 수 있으려면 1시간 정도 기다려야 한다는 뜻이다. SCP는 안전을 보장하는데, 이는 3-5초 후 거래가 확실해진다는 것을 의미한다. 따라서 잠재적인 확장성 병목 현상에도 불구하고 Pi는 비트코인보다 빠르고 Stellar보다 느릴 수 있는 트랜잭션 최종성을 달성하고 비트코인보다 초당 더 많은 트랜잭션을 처리하고 Stellar보다 더 적은 트랜잭션을 처리할 수 있을 것으로 기대하고 있다.

SCP의 확장성은 여전히 미해결 연구 문제이다. 속도를 높일 수 있는 여러 가지 유망한 방법이 있다. 가능한 확장성 솔루션 중 하나는 bloXroute입니다. BloXroute는 네트워크 성능에 최적화된 서버의 글로벌 네트워크를 활용하는 블록체인 유통망(BDN)을 제안한다. 각 BDN은 하나의 조직에 의해 중앙에서 제어되지만, 그들은 입증할 수 있는 중립적인 메시지 전달 가속도를 제공한다. 즉, BDN은 메시지가 암호화될 때 차별 없이 모든 노드에만 공정하게 서비스를 제공할 수 있다. 이것은 BDN이 메시지가 어디서 오는지, 어디로 가는지, 그리고 무엇이 안에 있는지 모른다는 것을 의미한다. 이렇게 하면 Pi 노드는 두 개의 메시지 전달 경로를 가질 수 있습니다. 대부분의 시간을 신뢰할 수 있을 것으로 예상되는 BDN을 통과하는 빠른 인터페이스와 완전히 분산되고 안정적이지만 속도가 느린 원래의 피어 투 피어 메시지 전달 인터페이스이다. 이 아이디어의 직관력은 캐싱과 거의 유사합니다. 캐시는 컴퓨터가 데이터에 매우 빠르게 액세스할 수 있는 곳으로, 평균 계산 속도를 높일 수 있지만, 필요한 모든 정보를 항상 가지고 있다고 보장하지는 않습니다. 캐시가 누락되면 컴퓨터 속도가 느려지지만 심각한 상황은 발생하지 않습니다. 또 다른 해결책은 열린 피어 투 피어 네트워크[Nicolosi and Mazieres 2004]에서 멀티캐스트 메시지의 안전한 수신확인을 사용하여 피어 간의 메시지 전파를 가속화하는 것이다.