아키텍처

아키텍처

개요

프라이버시 컴퓨팅 인프라

인터넷의 발전과 함께 FAANG과 BAT로 대표되는 인터넷은 대량의 사용자 데이터를 저장하기 위해 독점적 지위를 차용했으며,이를 기반으로 빅 데이터와 AI 컴퓨팅을 통해 데이터의 가치를 발견하고 즐길 수 있습니다. 하지만 사용자는 데이터의 이점을 즐기지 못할뿐만 아니라 개인 정보가 침해되고 개인 데이터가 남용 될 위험도 감수해야합니다.

차세대 인터넷은 탈 중앙화 네트워크인 서버리스 인터넷이어야합니다. 이 인터넷에서 사용자는 자신의 데이터에 대한 완전한 소유권을 가지며 어느 누구도 허가없이 다른 사람의 데이터를 사용할 수 없습니다. 그러나 다음과 같은 문제도 발생합니다.

  • 어느 단일 엔티티는 항상 데이터 수집의 일부만 마스터할 수 있으며 임의의 엔티티는 모든 글로벌 데이터를 얻을 수 없습니다. 모든 참가자는 “맹인”이며 그가 보유한 데이터는 전체 데이터 양을 반영하기에 충분하지 않습니다.
  • 참가자는 신뢰할 수 없으며 “신뢰할 수 있는 제 3 자”를 사용하여 데이터를 수집 및 컴퓨팅하고 데이터의 유효성을 확인하여 가치, 정보 및 자산을 공유 할 수 없습니다. 현재 진흥중인 클라우드 컴퓨팅 플랫폼은 전형적인 “신뢰할 수있는 제 3 자”입니다.

PlatON은 차세대 프라이버시 컴퓨팅 아키텍처 및 데이터 교환 네트워크를 구축하기 위해 최선을 다하고 있습니다. 현재 암호화 기술 및 블록 체인 기술을 기반으로 새로운 컴퓨팅 패러다임을 만듭니다. 사용자 데이터 프라이버시를 보장한다는 전제하에 제 3 자에 의존하지 않고도 협업 컴퓨팅을 수행 할 수 있으며 결과의 무결성을 확인할 수 있습니다.

아키텍처

확장 가능한 프라이버시 컴퓨팅 솔루션

블록 체인 : 합의 기반 컴퓨팅

아키텍처

기존 블록 체인 아키텍처는 합의 기반 컴퓨팅이며 간단한 컴퓨팅 (스마트 컨트랙트 형식) 프로토콜을 구현하기도합니다 : 컴퓨팅의 정확성을 보장하기 위해 각 컴퓨팅 작업을 완전히 제거해야합니다. 컴퓨팅의 정확성을 확인하기 위해 대부분의 노드를 처리하는 것은 블록 체인 시스템의 효율성과 신뢰성 사이에 본질적인 모순을 존재합니다.

실용적인 관점에서 볼 때 업계의 핵심은 여전히 ​​확장성과 프라이버시라는 두 가지 문제에 초점을 맞추고 있습니다.

확장성은 블록 체인의 가장 큰 문제로 인식되었습니다. 현재 주요 블록 체인의 초당 처리 트랜잭션은 높지 않으며, 이는 주요 금융 시장을 운영하는 데 필요한 처리 능력과 몇 배나 다릅니다. 업계도 다양한 솔루션을 적극적으로 구현하고 있지만 모두 분산화 또는 보안을 희생한다는 전제를 기반으로 “불가능한 삼각형”에 의해 제한됩니다. 블록 체인의 합의 기반 컴퓨팅 방법은 스마트 컨트랙트가 복잡한 컴퓨팅 논리를 지원할 수 없음을 제한합니다.

프라이버시는 블록 체인의 또 다른 주요 문제입니다. 위변조 불가, 탈 중앙화, 무 신뢰성 등 블록 체인의 장점은 매력적이지만 빅 데이터, AI 기술과 같은 데이터를 얻을 수 없다는 똑같은 딜레마에 직면 해 있습니다. 회사 든 개인이든 공개 원장에 개인 정보를 게시 할 의도가 없습니다.이러한 원장은 정부, 가족, 동료 및 비즈니스 경쟁자가 제한없이 자유롭게 읽을 수 있습니다.

PlatON:비대화형 증명의 프라이버시 컴퓨팅

PlatON은 제로 지식 증명 (ZKP), 검증 가능한 컴퓨팅 (VC), 동형 암호화 (HE), 안전한 다자간 컴퓨팅 (MPC), 비밀 공유 (SS) 등을 보함 또는이에 국한되지 않는 최신 암호화 알고리즘을 사용하여 비대화형 증명 컴퓨팅 확장 솔루션을 구현합니다.

확장성

기존 블록 체인 아키텍처의 문제는 두 가지 매우 중요한 부분에서 비롯됩니다. 합의와 컴퓨팅이 너무 밀접하게 결합되어 있습니다. PlatON은 본질적으로 두 문제를 분리하고,이 두 문제를 나누고 처리하며, 수학적으로 증명 가능한 암호화 알고리즘을 통해 내생적 연결 관계를 약화시킬 수 있는 검증 가능한 컴퓨팅 체계를 제안합니다.

아키텍처

체인에 대한 합의의 한계를 고려할 때 체인의 기능은 “컴퓨팅”이 아닌 “검증”이어야합니다.체인이 신뢰할 수 없는 환경으로 인식되었지만 오프 체인 솔루션의 구현은 새로운 불신 요소를 도입합니다.PlatON의 VC (Verifiable Computing) 암호화 알고리즘은 신뢰를 체인으로 이전합니다.검증 가능한 컴퓨팅을 통해 컨트랙트는 오프 체인에서 한 번만 컴퓨팅하면됩니다.모든 노드는 컴퓨팅의 정확성을 신속하게 확인할 수 있습니다.한편으로는 거래의 처리 성능을 향상시키고 다른 한편으로는 PlatON이 복잡한 컨트랙트의 Trustless 컴퓨팅을 지원하게합니다.

프라이버시

PlatON은 동형 암호화 (HE)와 안전한 다자간 컴퓨팅 (MPC)을 겹쳐 입력 데이터와 컴퓨팅 로직 자체의 프라이버시를 보장함으로써 진정한 프라이버시 컴퓨팅을 실현합니다. 컴퓨팅 무결성을 위해 타사 제조업체가 제공하는 신뢰할 수 있는 하드웨어 또는 TEE (예 : SGX)에 의존하는 신뢰할 수 있는 컴퓨팅과 비교할 때 PlatON의 신뢰할 수 있는 컴퓨팅은 위변조 가능한 암호화 가정에만 의존하므로 수명주기 동안 전례없는 개인 데이터 보안을 제공하며 신뢰 경계가 없습니다.

PlatON 전반적인 아키텍처

전반적인 논리적 구조

아키텍처

기본 체인을 제공하는 것 외에도 PlatON은 지갑, 블록 탐색기 및 노드 도구의 오픈 소스 구현도 제공합니다.:

  • ATON Wallet : Hot 및 Cold HD 지갑, 거래 관리, 위탁 관리를 지원하는 모바일 지갑입니다. 계정 개인 키는 클라이언트 측에서 관리하고 이후에 Keyshared (임계 서명 기반 키 관리 시스템)를 지원합니다.
  • PlatScan Explorer : PlatON 커뮤니티에서 제공하는 블록 탐색기
  • 노드 도구

기본 논리 구조

아키텍처

PlatON에서 Layer1 합의 네트워크는 Ethereum의 기술 프레임 워크에서 수정되고 핵심 구성 요소가 다시 작성되며 일부 새로운 구성 요소가 확장됩니다.

  • 암호화 알고리즘 : 비트코인 시대부터 사용된 SHA256Hash 알고리즘 및 ECDSA 서명 알고리즘 외에도 PlatON은 BLS를 합의 집계 서명으로 사용합니다.VRF는 PPoS에 대한 검증자를 무작위로 선택하고 ZKP 및 HE는 프라이버시 체계를 만듭니다.
  • P2P 네트워크 : PlatON은 주요 블록 체인 프로젝트에서 일반적으로 사용되는 libp2p 및 devp2p를 사용하지 않습니다.RFC 표준 RFC6940의 RELOAD (REsource LOcation And Discovery)에서 정의한 P2P 프로토콜과 RFC7374의 ReDiR (Recursive Distributed Rendezvous)에서 정의한 서비스 발견 메커니즘을 실현합니다.
  • 계정 모델 및 데이터 저장 : 이더리움 계정 모델에 따라 상태 데이터는 Patricia 트리에 저장됩니다. PPoS 관련 데이터는 대용량 데이터로 인해 Patricia 트리에 저장시 성능이 저하되기 때문에 Patricia 트리에 저장되지 않고 히스토리 상태를 저장하지 않는 다른 SNAPDB에 별도로 저장됩니다.
  • 합의 메커니즘 : BFT 스타일 PoS 합의 메커니즘을 사용합니다.PPoS는 VRF를 사용하는 DPoS 메커니즘입니다. VRF가 도입 한 임의성은 내생적으로 마이닝 풀의 확장을 억제할 수 있으며 이는 PlatON의 분산화 및 보안에 매우 중요합니다.또한 PlatON의 BFT는 부분 동기화 가정을 기반으로하는 병렬 Byzantine 프로토콜 CBFT (Concurrent Byzantine Fault Tolerance)입니다. CBFT는 PBFT, Tendermint 및 Hotstaff와 같은 합의 프로토콜을 참고하여 배치 블록의 생성 및 확인은 pipeline을 통해 병렬로 완료되므로 합의 효율성이 향상됩니다.
  • 스마트 컨트랙트 : EVM 및 WASM 엔진을 모두 지원하고 특정 트랜잭션에 따라 컨트랙트를 실행할 해당 가상 머신을 자동으로 선택하며 Solidity, C ++, Java 및 Python과 같은 주요 프로그래밍 언어를 지원합니다. WASM 컴파일러는 LLVM을 기반으로 구현되며 해당 CommandLine IDE 및 그래픽 IDE는 Truffle를 기반으로 수정되며 동시에 프라이버시 컨트랙트 및 검증 가능한 컨트랙트를 지원합니다.
  • DAPP SDK : 이더리움의 WEB3 (Javascript, Java, Python, Swift 언어 지원) 및 JSON RPC를 기반으로 PlatON의 기능에 따라 수정됩니다. 또한보다 효율적인 GRPC 인터페이스를 추가해야합니다.

Layer2는 복잡한 컴퓨팅을 오프체인으로 확장하고 오프체인 보안 다자간 컴퓨팅을 통해 프라이버시 컴퓨팅 프로토콜을 구현합니다.

  • 암호화 알고리즘 : VC (Verifiable Computing) 알고리즘은 비대화형 증명의 오프체인 컴퓨팅 확장 체계를 실현할 수 있습니다. MPC (Secure Multi-Party Computing)는 비밀 공유 (SS)와 동형 암호화 (HE)를 결합하여 프라이버시 컴퓨팅 프로토콜을 구현합니다.
  • MPC 가상 머신 : 프라이버시 컨트랙트는  LLVM 컴파일러를 통해 LLVM IR로 컴파일됩니다. MPC VM은 LLVM JIT를 기반으로 구현되며 LLVM IR 코드를 실행할 수 있습니다. MPC VM에는 MPC, SS, HE 등과 같은 프라이버시 컴퓨팅 프로토콜이 내장되어 있습니다.  프라이버시 컨트랙트가 컴파일된 후 LLVM IR 코드를 축소합니다.
  • 전용 컴퓨팅 하드웨어 : FPGA / ASIC 기반 전용 컴퓨팅 하드웨어의 개발을 통해 컴퓨팅 성능을 크게 향상시키고 전력 소비 / 비용을 줄일 수 있습니다.
  • 프라이버시 컴퓨팅 및 데이터 교환 프로토콜 : 원본 데이터를 공개하지 않고 협업 컴퓨팅 및 결과 확인을 수행할 수 있는 컴퓨팅 프로토콜입니다.
  • 프라이버시 컴퓨팅 프레임 워크 : 프라이빗 컴퓨팅 프로토콜을 기반으로하는 프라이버시 AI 개발 프레임 워크를 포함하여 프라이버시 컴퓨팅 및 데이터 교환 프로토콜을 포장하는 개발 프레임 워크입니다.

네트워크 구조

아키텍처

기본 네트워크

PlatON의 기본 블록 체인 네트워크는 주로 P2P를 통해 연결되는 다음 유형의 노드로 구성됩니다:

  • 라이트 노드(Light Nodes)
    라이트 노드는 모든 블록 또는 트랜잭션을 확인하지 않으며 현재 블록 체인 상태의 사본이 없을 수 있습니다. 누락 된 세부 정보를 제공하기 위해 전체 노드에 의존합니다.라이트 노드는 트랜잭션 및 블록 정보의 전체 네트워크 브로드 캐스트에 참여합니다.
  • 풀노드(Full Nodes)
    풀 노드는 네트워크에 브로드 캐스트되는 블록을 확인합니다. 즉, 블록 (및 블록 자체)에 포함 된 트랜잭션이 PlatON 사양에 정의 된 규칙을 따르도록합니다. 풀 전체 노드는 모든 트랜잭션을 재생하여 블록 체인의 다음 상태에 올바르고 합의 된 상태에 도달하도록 해야합니다.
  • 아카이브 노드(Archive Nodes)
    모든 블록의 히스토리 상태를 저장하는 노드, 히스토리의 모든 블록에 해당하는 월드 상태가 노드에 저장되고 아카이브 노드는 특별한 종류의 풀 노드입니다.
  • 부트 스트랩 노드(Bootstrap Nodes)
    새 노드는 PlatON 네트워크에 가입하고 먼저 부트 스트랩 노드에 연결하고 다른 노드를 검색합니다.
  • 검증 노드(Validator Nodes)
    트랜잭션 실행 및 트랜잭션 데이터를 블록으로 패키징하는 역할을하며, 검증 노드는 PPoS + VRF를 통해 무작위로 선택되며 CBFT 프로토콜은 합의를 위해 실행됩니다.

탈 중앙화 애플리케이션

DAPP 애플리케이션 (블록 체인 포함)을 배포하려면 인트라넷 환경에 다음 서버를 배포해야합니다.

  • 풀 노드
    PlatON 네트워크에 액세스하는 데 사용되는 모든 노드는 공용 네트워크 P2P 포트를 외부로 오픈할 수 있지만 노드 RPC 포트를 오픈하는 것은 권장하지 않습니다.
  • DAPP서버
    로컬 전체 노드 RPC 포트에 연결하고 전체 노드를 통해 체인의 트랜잭션, 이벤트 및 블록을 모니터링하면 트랜잭션이 발생합니다. 동시에 DAPP 서버는 기업의 원래 비즈니스 시스템에도 연결됩니다.

검증노드 풀(Pool)

검증노드 풀은 여러 개의 검증노드를 배포합니다. 공개 풀 노드를 통해 외부 네트워크에 연결하는 것이 좋습니다. 구체적인 보안 배치 방법은 검증 노드 배치 구조 다이어그램을 참조하십시오.

운영 및 유지 플랫폼 모니터링

모니터링 운영 및 유지 플랫폼은 전체 노드를 통해 모든 블록, 트랜잭션 및 이벤트를 동기화하고 지표 모니터링을 수행합니다.

PlatScan블록 탐색기

PlatScan 블록 탐색기는 전체 노드를 통해 모든 블록, 트랜잭션 및 이벤트를 동기화하고 블록 및 트랜잭션과 같은 데이터를 표시합니다. PlatScan 블록 탐색기는 다음 서버를 배포해야합니다.

  • 풀 노드 : RPC 포트는 내부 데이터 처리 서버에만 열려 있습니다.
  • 데이터 처리 서버
  • 데이터베이스 서버
  • 웹서버
  • 푸시 서버

ATON지갑 서버

ATON은 모바일 지갑으로, 개인 키는 클라이언트에서 관리하며, 클라이언트는 이체, 스테이킹 등을 서명하고 ATON 서버를 통해 체인으로 전달합니다.체인의 트랜잭션, 블록, 검증자를 포함한 데이터는 풀 노드를 통해 ATON 서버에 의해 동기화되어 모바일 클라이언트로 푸시됩니다. ATON 지갑 서버는 다음 서버를 배포해야합니다.

  • 풀 노드 : RPC 포트는 내부 데이터 처리 서버에만 열려 있습니다.
  • 데이터 처리 서버
  • 데이터베이스 서버
  • 웹서버
  • 푸시 서버

검증 노드 배포 구조

검증 노드의 정상적인 통신 및 운영을 보호하고 블록을 안정적으로 생성하려면 노드를 보호해야합니다.

  • 풀 노드 및 검증 노드의 RPC 포트가 닫힙니다.
  • 검증 노드는 공용 네트워크에 노출되지 않으며 합의되지 않은 풀 노드를 통해 통신합니다.
  • 각 검증 노드는 적어도 2 개의 공개 풀 노드와 2 개의 비 공개 풀 노드를 준비해야하며, 공개 풀 노드의 IP는 메인 네트워크와의 정상적인 통신을 위해 외부에 공개 될 수 있습니다. 다른 두 개의 비공개 풀 노드의 IP는 신뢰할 수 있는 다른 검증 노드에만 통지되며 동시 DDoS 공격을 피하기 위해 외부에 공개되지 않습니다.
  • 네트워크 전반에 걸친 검사를 방지하여 방어 수준이 높은 서버를 찾습니다. 동기화 포트 9876 (RPC의 8888과 유사)을 전체 네트워크에서 남아있는 최대 포트 80, 443 또는 22로 수정하여 공격자 포지셔닝 비용을 효과적으로 증가시킬 수 있습니다.

PlatON핵심모듈

P2P네트워크

PlatON은 RELOAD (REsource LOcation And Discovery) 표준 [RFC6940]의 P2P 기본 프로토콜과 Kademlia 프로토콜을 완벽하게 구현합니다. 아래 그림은 PlatON 네트워크의 전체 계층 구조를 표시됩니다.

아키텍처

링크 레이어

링크 레이어는 도청, 변조 및 메시지 위조를 방지하기위한 다양한 전송 프로토콜을 제공하고, 안전하고 검증 가능한 연결을 제공하며, 메시지 소스의 인증과 메시지 데이터의 무결성을 보장하여 데이터의 안전한 전송을 실현하도록 배치됩니다. 이 레이어는 보안 전송 레이어 프로토콜 (TLS) 및 데이터 패킷 전송 레이어 보안 프로토콜 (DTLS)을 구현합니다.

전달 및 연결 관리

전달 및 연결 관리 계층은 노드간에 패킷 전달 서비스를 제공하여 라우팅 테이블을 저장하고 구현합니다. 또한 노드간에 새 링크를 설정하고 ICE를 사용하여 NAT에서 오버레이 링크에 대한 연결을 설정하는 작업도 처리합니다.

토폴로지 플러그인

RELOAD는 완전 분산된 비 구조화 토폴로지 또는 완전 분산된 구조화 토폴로지 네트워크를 구현하기 위한 다양한 토폴로지 알고리즘의 개발을 지원하는 P2P 네트워크 프레임 워크입니다.

토폴로지 플러그인은 사용중인 특정 오버레이 알고리즘을 구현합니다. 메시지 전송 구성 요소를 사용하여 오버레이 관리 메시지를 송수신하고, 스토리지 구성 요소를 사용하여 데이터 저장을 관리할 수있습니다.

토폴로지 플러그인을 사용하면 RELOAD가 다양한 오버레이 알고리즘을 지원할 수 있습니다. PlatON은 Kademlia 알고리즘을 기반으로 DHT를 구현합니다.

데이터 저장

토폴로지 플러그인과의 협력을 통해 데이터 저장, 완전한 데이터 복제, 마이그레이션 및 기타 조치를 담당하는 동시에 메시지 전송 구성 요소와 협력하여 데이터 메시지의 전송 및 수신을 합니다. RELOAD는 문자열, 배열 및 dictionary를 지원합니다.

메시지 전송

애플리케이션에 안정적인 메시지 전송 서비스를 제공합니다. PlatON은 RELOAD를 기반으로 파티션 플러딩 알고리즘을 확장하여 메시지의 전체 네트워크 브로드 캐스트를 빠르게 수행합니다.

응용 레이어

RELOAD의 기본 통신 및 스토리지 기능을 사용하여 서비스를 구축하고 확장하여, 또는 TURN 서비스, 컴퓨팅 서비스, 데이터 서비스, 스토리지 서비스, 블록 체인 서비스 등의 서비스를 발견합니다.

서비스 발견

PlatON은 ReDiR (Recursive Distributed Rendezvous) [RFC7374]를 사용하여 서비스 발견 메커니즘을 구현하고 있으며, ReDiR은 수만 개의 서비스 제공 노드와 서비스 조회 노드를 지원할 수 있습니다.

ReDiR 트리

ReDiR은 트리 구조를 사용하여 P2P 서비스 검색 메커니즘을 구현합니다. 동시에 RELOAD 오버레이 네트워크의 저장 용량은 데이터를 저장하는 데 사용되며, 각 서비스 유형은 ReDiR 트리로 저장되며 트리 노드는 서비스 제공자 노드의 정보를 저장합니다. 노드가 지정된 서비스의 제공자 찾기를 요청하면 ReDiR 트리에서 제한된 수의 검색으로 요청하는 노드와 가장 일치하는 서비스 제공자 노드를 찾을 수 있습니다. ReDiR 트리 노드는 저장 서비스를 위한 노드를 제공하기 위해 RELOAD의 사전 구조를 사용합니다. 각 ReDiR 트리 노드는 ReDiR 트리의 특정 수준에 속합니다. ReDiR 트리의 루트 노드는 0 레벨고 루트의 하위 노드입니다. 노드는 첫 번째 레벨에 있으며 한 레벨의 자식 노드는 두 번째 레벨에 있습니다.

ReDiR 트리의 각 레이어에 포함 된 노드의 수는 분기 계수 b에 따라 달라지며 각 계층에는 최대 blevel 노드가 포함될 수 있으며 각 노드는(level, j)로 고유하게 식별됩니다. 여기서 level은 노드가 위치한 레이어의 수, j노드가 해당 레이어의 j번째 노드임을 나타냅니다. 각 level에서 blevel 트리 노드는 level레이어를 blevelblevel KEY 공간으로 나눕니다.

모든 서비스 노드는 해당 KEY 공간에 매핑되어 저장됩니다. 각 KEY 공간은 트리 노드에 의해 저장됩니다. 트리 노드 (level, j)에 포함 된 KEY 범위는 아키텍처입니다.

0 ≤ b’ < b 인 경우 트리 노드 (level, j) 에 저장된 리소스 ID는 값 ID = hash (service, level, j) 입니다.

서비스 발표

RELOAD 오버레이 네트워크에서 KEY가 kk 인 노드 nn에 대한 서비스를 게시하는 단계는 다음과 같습니다.

  • 1 단계 : 초기 계층 l = lstart, 일반적으로 2를 선택합니다.
  • 2 단계 : 노드 n은 KEY 공간 I (l, k)를 담당하는 트리 노드에 쿼리 요청을 보내고 트리 노드에 저장된 서비스 노드 목록을 가져옵니다.
  • 3 단계 : 노드 n은 KEY 공간 I (l, k)를 담당하는 트리 노드에 자체 정보를 저장하기 위해 스토리지 요청을 보냅니다.
  • 4 단계 : 첫 번째 단계에서 반환 된 결과를 확인합니다. n 노드의 KEY 값 k가 그중 가장 크거나 작은 경우 현재 레이어 번호를 1로 줄이고 노드 n의 KEY 값이 될 때까지 혹은 루트 노드에 도달 할 때까지 2-3 단계를 반복합니다. 

같은 방식으로 노드 n은 다음 조건이 충족 될 때까지 계층l = lstart에서 하위 레이어로 이동합니다. 키 공간 I (l, k) , 노드 n을 담당하는 트리 노드 중 유일한 서비스 노드입니다.

서비스 업데이트

ReDiR에 가입된 서비스 상태는 동적이며 서비스 노드는 서비스 상태를 업데이트하기 위해 주기적으로 서비스 게시 프로세스를 반복해야합니다. 시간 초과가 업데이트되지 않으면 스토리지를 담당하는 트리 노드를 스토리지에서 삭제해야합니다.

서비스 조회

서비스 조회 프로세스는 초기 레이어l = lstart에서 시작하는 서비스 발표와 유사합니다. 각 단계에서 현재 KEY 공간 I (l, k)의 서비스 노드 목록을 가져옵니다. 프로세스는 다음과 같이 처리됩니다.

  • 1 단계 : 서비스 노드가 반환되지 않으면 KEY (k)에 해당하는 서비스 노드가 더 큰 KEY 공간을 가지고 있음을 나타냅니다. 레이어 수를 1만큼 줄이고 조회를 반복합니다. 현재 level이 0이면 조회가 실패합니다. 
  • 2 단계 : kk가 반환 된 서비스 노드 중 가장 크거나 작지 않은 경우 해당 서비스 노드가 부분 공간에 존재해야 함을 나타내고 레이어 수를 1 늘린 다음 조회를 반복합니다.
  • 3 단계 : 그렇지 않으면 반환된 결과는 KEY (k)에 가장 가까운 서비스 노드이고 조회가 성공합니다.

계정모델

계정 모델에 비해 UTXO는 스마트 컨트랙트를 지원하지 않으며 많은 DAG 프로젝트가 스마트 컨트랙트를 적극적으로 모색하고 있지만 아직 성숙하고 안정적인 솔루션이 없기 때문에 PlatON은 스마트 컨트랙트를 지원하는 성숙하고 안정적인 계정 모델을 선택합니다. PlatON에서 각 계정에는 상태(state)와 관련된 20 바이트 주소(address)가 있습니다. 두 가지 유형의 계정이 있습니다:

  • 일반 계정
    프라이빗 키에 의해 제어되는 사용자는 지갑 클라이언트 또는 command line을 통해 생성 할 수 있습니다. PlatON에서 일반 계정은 거래를 생성하고 프라이빗 키를 사용하여 거래에 서명 할 수 있습니다.
  • 컨트랙트 계정
    프라이빗 키가 없고 코드로 제어되며 컨트랙트에 배포 될 때 컨트랙트 계정 주소가 생성됩니다. 일반 계정과 달리 컨트랙트 계정은 자체적으로 새로운 거래를 시작할 수 없습니다. 컨트랙트 계정이 메시지를 수신 할 때마다 컨트랙트 내부의 코드가 활성화되어 내부 스토리지를 읽고 쓸 수 있을뿐만 아니라 다른 메시지를 보내거나 컨트랙트를 생성 할 수 있습니다.

데이터 저장

원래의 비트 코인 블록 체인에서는 일반 이체 거래 만 저장하면됩니다. 비트 코인은 UTXO 모델을 기반으로하므로 체인에 저장된 모든 블록 관련 정보 (hash、nonce 등)가 UTXO입니다. 이더리움이 대표하는 퍼블릭 체인은 일반적으로 스마트 컨트랙트 (Smart Contract)를 지원합니다. 컨트랙트에 저장된 콘텐츠는 임의적 일 수 있습니다. 계정 관련 정보 (예 : 토큰) 외에도 사용자는 텍스트 및 사진, 비디오 등을 온 체인에 저장될 수 있습니다.

일부 체인 (예 : 이더리움)에서 데이터 무결성을 보장하기 위해 일반적으로 일부 상태 데이터 (또는 historical data)를 체인에 저장해야합니다. 이러한 데이터는 해당 블록 (height)에서만 유용하며 아무것도 없습니다. 다른 height에서 유용합니다. 이것의 장점은 언제라도 원장의 전체 그림을 역사상 특정 ​​height에서 추적 할 수 있다는 것입니다. 그러나 단점도 분명합니다. 즉, 저장 비용이 높다는 것입니다. 따라서 EOS와 유사한 퍼블릭 체인 스토리지 솔루션이 있으며, EOS는 최신 상태 데이터 만 저장하는 것 외에도 스타 파일 시스템을 사용하여 스토리지에 대한 부담을 공유합니다.

PlatON은 온 체인 저장 비용을 충분히 고려해야한다고 생각합니다. 모든 리더에 대한 합의가 필요하고 가치가 있는 정보 만 퍼블릭 리더에 저장되어야합니다. 가치가 있는  정보에는 블록, 거래 및 계정 데이터가 포함됩니다. 현재 컨센서스 라운드의 검증자 목록, 후보 목록, 각 노드의 현재 블록 생성률 등과 같은 경제 모델의 일부 정보에 대해서는 현재 최신 데이터 만 저장하면됩니다.

PlatON의 스토리지는 계정 데이터 스토리지 (statedb)와 스냅 샷 스토리지 (snapshotdb)로 나뉩니다.

계정 데이터 스토리지(statedb)

PlatON의 계정 데이터 저장은 아래와 같이 Ethereum의 MPT 트리 저장 모델을 나타냅니다.

区块和交易存储结构

PlatON에서는 계정과 관련된 모든 상태 정보가 StateDB를 통해 저장되고 획득됩니다. 빠른 데이터 조회 및 블록 롤백 작업을 지원하기 위해 StateDB는 MPT 구조를 기본 저장 방법으로 사용합니다. MPT의 모든 노드는 마지막으로 key – value 형식으로 디스크 데이터베이스에 저장됩니다.

StateDB

최상위 레이어는 StateDB입니다. StateDB는 데이터의 가장 예비 기록을 작성하는 책임이 있습니다. 다음 레이어는 Trie 이며 Trie는 후속 스토리지 조회 롤백 작업을 용이하게하기 위해 모든 데이터를 구조화하는 역할을 합니다. Trie에는 State Trie와 Storage Trie의 두 가지 유형이 있습니다. 전자는 모든 계정의 잔액 임시 값과 같은 기본 정보를 기록하는 상태 트리입니다. 후자는 다양한 계약 저장 데이터를 기록하는 데 사용됩니다. 각 컨트랙트에는 자체 스토리지 트리가 있기 때문에 하나의 상태 트리와 많은 스토리지 트리가 있습니다. Trie 다음에 TrieDB가 나오고 TrieDB는 Trie의 노드를 직렬화하여 메모리에 저장합니다. TrieDB의 주요 기능은 데이터가 최종적으로 하드 디스크에 삽입되기 전에 캐시 레이어 역할을하는 것입니다. 전체 구조의 마지막 링크는 하드 디스크의 최종 데이터베이스 leveldb입니다.

스냅 샷 데이터 스토리지(snapshotdb)

저장 비용 및 읽기 성능을 고려하면 PlatON의 일부 데이터는 최종 상태만 유지하고 snapshotdb를 통해 저장 및 조회합니다. snapshotdb의 데이터는 결국 key-value 형태로 디스크 데이터베이스에 저장됩니다.

snapshotdb

그들 중:

  • unRecognizedBlockData : 인식되지 않는 데이터 집합입니다. 각 DB 작성 요청은 데이터 집합을 업데이트합니다.
  • RecognizedBlockData : 확인 된 블록 데이터, BlockData는 Flush 후 RecognizedBlockData가 됩니다. RecognizedBlockData는 블록 해시 및 번호와 해당 관련이 있습니다. 동일한 블록 높이는 여러 RecognizedBlockData를 가질 수 있습니다. 커밋 후 동일한 블록 height 이하의 다른 RecognizedBlockData를 삭제합니다.
  • CommitedBlockData : Compaction 대기중인 블록 데이터입니다. 단 하나의 경로 (블록 연결) 만 있습니다.
  • WAL : 로그 파일, 모든 데이터가 기록되기 전에 log를 먼저 작성합니다. k, v, hash 데이터 저장, hash = hash (k + v + hash)
  • current : 현재 제출된 가장 높은 블록 (highest)과 가장 높은 병합된 블록 (기본) 블록의 height를 저장하는 데 사용됩니다.

합의 메커니즘

Scalability trilemma posits는 모든 노드가 모든 계산을 처리하고 모든 노드가 이러한 계산 순서에 대해 합의하는 블록 체인이 블록 생산의 안전, 확장성 및 분산화라는 세 가지 속성 중 두 가지를 가질 수 있다고 가정합니다.확장 성의 정량적 지표는 TPS 또는 처리량이고, 보안의 정량적 지표는 경제적 비용입니다. 이러한 정량적 지표를 평가한 후 PlatON은 BFT 유형의 PoS 메커니즘을 채택합니다.

아키텍처

PlatON 합의 작업은 3 단계로 나뉩니다.

1. 후보 노드 선택

2. VRF를 사용하여 후보 노드에서 검증 노드를 선택

3. 검증 노드는 블록에서 차례대로 비잔틴 프로토콜 CBFT를 실행

  • 1 단계 : 후보 노드 선거

모든 LAT 소지자는 선거에 참여할 수 있습니다.

LAT 보유자가 검증 노드가 되고 싶다면 후보 노드 후보가 되려면 미리 정해진 최소 개수 이상의 LAT를 락업해야합니다. 1 LAT의 각 락업은 1 표에 해당합니다. 후보 노드는 서로 투표 할 수 없습니다.

후보 노드 선출에 참여하고자하는 다른 LAT 보유자도 LAT를 락업해야하며 락업된 LAT의 수는 10 LAT 이상이어야합니다.1 개의 LAT가 1 표를 얻을 수 있고 지원하는 모든 후보 노드에게 투표 할 수 있습니다.

모든 투표가 완료된 후 후보 노드는 투표에 따라 정렬됩니다. 가장 높은 표를 얻은 명의 후보자가 검증 노드가 되고 검증자의 수량도 미리 결정된 것입니다. 검증 노드와 그 지지자에 의해 락업된 LAT는 미리 결정된 락업 기간이 끝날 때까지 계속 락업 상태로 유지됩니다. 선택되지 않은 후보자 및 지지자에 의해 락업된 LAT는 선거 후 락업 해제 될 수 있으며, 이번 합의에 참여하지 않으며 어떠한 보상도 받지 않습니다.

  • 2 단계 : VRF를 사용하여 검증 노드 선택

VRF는 모든 후보 노드에서 특정 수량의 검증 노드를 선택하고 검증 노드의 수량은 미리 결정됩니다.

수학적으로 득표 수가 많은 후보 노드 일수록 VRF에서 검증 노드로 선정 될 확률이 높다는 것을 증명할 수 있습니다. 그러나 VRF에 의해 도입된 임의성 때문에 최종 검증 노드는 가장 높은 투표를 받은 후보 노드가 아닐 수 있습니다.

  • 3 단계 : 검증 노드가 CBFT를 실행

CBFT에서 각 검증 노드에는 블록이 지속적으로 생성되는 시간 창이 할당됩니다. 시간 창에서 각 검증 노드에 의해 생성 된 블록 수는 미리 결정됩니다. 그 후 모든 검증 노드는 합의에 도달 할 때까지 후보 블록에서 CBFT를 실행합니다.

스마트 컨트랙트


기술적 관점에서 PlatON 컴퓨팅 네트워크는 본질적으로 탈 중앙화 된 FaaS (Functions as a Service) 플랫폼입니다. 따라서 스마트 컨트랙트는 FaaS의 기능으로 간주 될 수 있습니다. PlatON의 스마트 컨트랙트는 네 가지 종류로 나뉩니다.

智能合约

Solidity컨트랙트(Solidity Contract)

Solidity 컨트랙트는 실행을 위해 solc bin으로 컴파일 된 solidity 언어 개발 사용을 지원합니다. Solidity 컨트랙트는 트리거하는 트랜잭션은 합의 노드에 의해 패키징되고 전체 네트워크 노드가 검증을 반복합니다. Solidity 컨트랙트 상태는 공공 리더에 저장됩니다.

WASM컨트랙트(WASM Contract)

Wasm 컨트랙트는 높은 수준의 언어 개발을 지원하며 실행을 위해 wasm으로 컴파일됩니다. Wasm 컨트랙트를 트리거하는 트랜잭션은 합의 노드에 의해 패키징되고 전체 네트워크 노드가 검증을 반복합니다. Wasm 컨트랙트의 상태는 공공 리더에 저장됩니다.

WASM가상 머신

PlatON은 wagon을 PlatON 가상 머신으로 사용합니다. PlatON의 가상 머신으로서 변환되어야합니다. 체인의 외부 기능과 GAS의 계산 방법을 실현합니다.

도구체인(Toolchain)

PlatON은 먼저 스마트 컨트랙트의 작성 언어로 C ++를 지원한 다음 Rust 및 Go와 같은 주요 고급 개발 언어를 점진적으로 제공하고 다음과 같은 C ++ 용 도구 체인을 제공합니다.

  • platon-cpp : C ++ 컴파일러는 WASM 개체 코드 및 ABI 파일 생성을 담당합니다.
WASM 컨트랙트 실행 프로세스
wasm_compile_pub_tx
WASM컨트랙트GAS Billing

WASM 컨트랙트의 실행은 호출된 WASM 명령어에 따라 GAS Billing를 수행합니다. WASM instructions마다 GAS가 다르며 특정 WASM instruction의 GAS 값은 추후 보완될 것입니다.

프라이버시 컨트랙트(Privacy Contract)

프라이버시 컨트랙트 체계

프라이버시 컨트랙트는 실행을 고급 언어 개발도 지원합니다, llvm ir 중급 언어로 컴파일됩니다. 프라이버시 컨트랙트의 입력 데이터는 데이터 노드에 로컬로 저장되며, 데이터 노드는 데이터 노드가 다자간 컴퓨팅 노드와 비밀 공유합니다.컴퓨팅 노드는 체인 아래에서 안전한 다자간 계산 방법으로 개인 계산을 수행하고 계산 결과를 체인에 제출합니다.

아키텍처
프라이버시 컨트랙트 실행 절차
아키텍처

검증 가능한 컨트랙트(VC Contract)

검증 가능한 컨트랙트의 개발 및 릴리스는 Wasm 컨트랙트와 다르지 않으며 결국 실행을 위해 wasm으로 컴파일됩니다. 검증 가능한 컨트랙트의 상태 전환은 체인 외부의 컴퓨팅 노드에 의해 비동기적으로 실행됩니다.컴퓨팅이 완료되면 새 상태 및 상태 전환 증명이 온 체인에 제출되고 전체 네트워크 노드가 신속하게 정확성을 확인하고 새 상태를 공개 원장에 업데이트할 수 있습니다. 검증 가능한 컨트랙트는 전체 체인의 성능에 영향을주지 않고 복잡하고 무거운 계산 논리를 지원할 수 있습니다.

검증 가능한 컨트랙트 솔루션

PlatON의 검증 가능한 솔루션은 일시적으로 zk-SNARK 알고리즘을 기반으로하며 점차 최적화 된 알고리즘으로 대체 될 것입니다.

可验证合约
  • vc-contract template:사용자는 제공된 템플릿에 따라 vc 컨트랙트를 작성하고 주로 세 가지 인터페이스를 구현하는 모든 계산 모델을 입력 할 수 있습니다.
    • compute():계산 요청
    • real_compute() :계산 결과 및 증명 생성
    • set_result():계산 결과 및 증명 검증
  • vclang:사용자가 작성한 vc 컨트랙트를 컴파일하고 wasm vm이 지원하는 실행 파일을 생성합니다. 컨트랙트 개발자는 libsnark api의 사용방법에 대해 신경 쓸 필요가 없으며 자신의 계산 모델 코드를 작성하기 만하면됩니다.
  • vcc-reslover:가상 머신에서 libcsnark에 대한 액세스를 지원하는 인터페이스 레이어를 내장되며 c-go 모드에서 libcsnark 인터페이스를 호출합니다.
  • libcsnark:libsnark API를 포장합니다.C ++로 구현 된 libsnark는 c 인터페이스에서 액세스 할 수 있습니다.
  • vc_pool:vc 트랜잭션 처리를 담당하고, vc 계산 작업을 배포하고, 계산 결과 및 증명을 온 체인에 업로드합니다.
검증 가능한 컨트랙트 실행 프로세스
아키텍처
  • 컨트랙트가 컴파일 된 후 pk와 vk가 생성되었습니다 .PlatON 네트워크에 배포 한 후 pk와 vk는 체인에 저장되어 조작 할 수 없으며 노드에서 쉽게 액세스 할 수 있습니다.
  • vc 컴퓨팅 트랜잭션이 실행되면 vc 작업이 생성되고 taskid는 tx의 nonce로 구성되며 taskid는 입력 매개 변수 x를 저장하는 키로 사용됩니다.
  • compute 트랜잭션이 블록에 기록 된 후 vc_pool을 트리거하여 트랜잭션 이벤트를 구문 분석하여 작업을 vc_pool 대기열에 추가할지 여부를 결정합니다.
  • 블록이 확인되면 real_compute를 실행할 수 있으며 오프 체인 계산이므로 거래 수수료가 발생하지 않습니다. real_compute의 과정은 먼저 이전 컴파일에서 생성 된 gadget 시퀀스 연산을 기반으로 s (witness)를 생성하는 것입니다 .s가 계산되면 pk에 따라 증명을 계산할 수 있습니다.
  • set_result (증명, 결과)는 계산 결과와 증명을 온 체인에 올리는 것으로, 주로 검증 (vk, proof, input) 과정을 거치며 검증이 통과되면 거래 개시자가 계산 보상을 받을 수 있습니다. zk-SNARK의 검증 시간은 증명이 생성되는 단계에 비해 상대적으로 짧지 만 입력 매개 변수의 길이와도 관련이 있습니다.따라서 거래의 가스 수수료가 너무 높고 검증 자의 비용이 증가하지 않도록 입력 매개 변수의 길이를 제한하는 데주의를 기울여야합니다.
인센티브 모델

컴퓨팅 아웃소싱이 필요한 사용자는 먼저 컨트랙트 계정에 적절한 비용을 스테이킹해야합니다. 각 컴퓨팅 노드는 자체적으로 컴퓨팅 작업을 위해 경쟁 할 수 있습니다 (결과적으로 주문 잡기 모드가 랜덤 디스패치 모드로 변경됩니다). 계산이 성공하면 , 결과와 증명이 생성되고 set_result 트랜젝션 요청이 시작됩니다. 컴퓨팅 노드는 트랜잭션에 대한 채굴자 수수료를 지불해야합니다. 노드는 요청을 받고 set_result를 실행합니다. 검증이 트랜잭션에 포함 된 proof 및 result 매개 변수를 통과하면거래 요청자가 성공적으로 결과를 계산하고 컨트랙트 계정 스테이킹 비용을 요청자의 계정으로 이체 한 것으로 간주되며, 실패시 인센티브가 제공되지 않습니다.

출판사 : PlatONWorld-KR, 재 인쇄 소스를 지정하십시오 :https://platonworld.org/kr/platon/%ec%95%84%ed%82%a4%ed%85%8d%ec%b2%98/

Like (1)
Previous 6월 30, 2021 16:43
Next 7월 13, 2021 10:00

相关推荐

답글 남기기

Please Login to Comment