본문 바로가기

■ 산업/블록체인

[징둥JD] 京东JD 징둥 블록체인 백서 번역 -3

京东区块链(징둥 블록체인) 

http://ledger.jd.com/


*의역이나 오역이 있을 수 있다 


3. 京东区块链架构体系 징둥 블록체인 구조 시스템


  京东区块链的目标是打造面向企业级应用的区块链基础设施,为企业提供能够切实解决业务痛点的区块链技术方案。

  为解决区块链在企业级场景下的一些突出问题,包括系统性能、功能完备性、系统扩展性、监管审计支持、易用性等,京东区块链采用分层架构设计、标准化账本数据协议、优化共识算法、引入微服务架构与可伸缩的分布式存储技术、灵活的多级授权策略等一系列的创新技术方案。

징둥 블록체인의 목표는 기업 활용의 블록체인 기초 인프라를 만들고, 블록체인 기술방안을 제공하여 기업 업무의 골칫거리를 해결하는 것이다. 

블록체인으로 기업의 시스템 성능, 기능 완전성, 시스템 확장성, 감독 감사 지지, 활용성 등을 포함한 돌발문제를 해결하기 위해 징둥 블록체인은 계층구조 설계, 표준화 장부 데이터 협의, 합의 알고리즘 최적화, 마이크로(微) 서비스 구조 및 신축 가능한 분산식 저장기술 도입, 원활한 다단식 권한 전략 등 일련의 혁신적인 기술 방안을 채택한다. 

  京东区块链的总体架构分为 3 个层次:区块链协议、组件框架、服务平台。采用自顶而下的设计方法,首先聚焦区块链协议的设计,解决企业级应用中的数据标准化和多链互通的问题;其次是定义一个通用的区块链系统的组件模型,实现具体功能组件松耦合和可插拔,解决企业级应用中可根据具体情况自定义扩展的需求;最后,我们基于标准化的区块链协议和组件模型,提供一个具体的区块链平台实现以及相关的工具和开发包,为快速实现企业级区块链应用提供平台和工具。

징둥 블록체인의 전체 구조는 블록체인 프로토콜(协议), 모듈 프레임, 서비스플랫폼 이 세 가지로 나뉜다. 상하수직으로 내려오는 설계방법을 채택하여, 먼저 블록체인 프로토콜의 설계에 초점을 맞추어 기업활용 중의 데이터 표준화와 다중 연결 교환 문제를 해결한다; 다음, 범용 된 블록체인 시스템의 모듈 모델을 정의하고, 모듈의 자유로운 결합과 삽입의 구체적 기능을 실현시켜 기업활용 중 구체적인 상황에 따라 자체적 확장의 수요를 해결한다; 마지막으로, 우리는 표준화된 블록체인 프로토콜과 모듈 프레임에 기초하여 구체적인 블록체인 플랫폼을 실현 및 관련된 툴과 개발키트를 제공하고, 기업 블록체인 활용의 빠른 실현을 위해 플랫폼과 툴을 제공한다. 

 

그림 징둥 블록체인 시스템 구조

(그림은 나중에..)

  • 区块链协议 블록체인 프로토콜

  京东区块链协议作为最顶层的架构设计,定义了区块链的数据格式标准,包括账本状态、历史证明、账本操作集、合约指令集 4 个方面的数据标准。

징둥 블록체인 프로토콜은 제일 상단 층 구조 설계를 맡고 있으며, 장부 상태, 히스토리 증명, 장부 작업 집합, 계약 명령 집합 4가지 방면의 데이터 표준을 포함한 블록체인의 데이터 격식 표준을 정의한다. 

  • 组件模型 모듈 모델

  “组件模型”是区块链逻辑组件的框架模型,是对京东区块链协议的实现框架。包括了共识网络、账本、持久化引擎、合约引擎四个组件。

“모듈 모델”은 블록체인 로직 모듈의 구조로, 징둥 블록체인 프로토콜의 실행 프레임워크이다. 합의 네트워크, 장부, 지속적 엔진, 계약 엔진 네 개의 모듈이 포함된다. 

  • 服务平台 서비스 플랫폼

  “服务平台”是对上层的区块链协议和组件模型的具体实现,由网关、服务、节点网络、SDK 和一套工具集组成。

“서비스 플랫폼”은 상부의 블록체인 프로토콜과 모듈 모델의 구체적인 실현에 대하여 네트워크, 서비스, 노트 네트워크, SDK 그리고 툴들로 구성한다. 



3.1. 设计原则 설계 원칙

  京东区块链在架构和实现上遵循以下的几个设计原则。

징둥 블록체인의 구조와 실현은 아래 몇 가지 설계 원칙을 준수한다. 

  • 面向业务 업무 지향

  企业场景的特点是需求非常多样,性能要求高。京东区块链在设计上首先从分析企业应用的典型用例出发,设计京区块链协议和系统功能特性,确保系统的实现能够最终适应广泛的企业需求。

기업에서는 수요가 매우 다양하고 높은 성능을 요구하는 특징이 있다. 징둥 블록체인은 설계를 하기에 앞서, 기업 활용의 전형적인 사례를 분석하여, 징둥 블록체인 프로토콜과 시스템 기능 특성을 설계하고, 시스템이 광범위한 기업의 수요에 적응하는 것을 실현할 수 있도록 보장한다. 

  • 标准化 표준화

  由于区块链应用场景是一种跨主体的有多方参与和协作的场景,京东区块链从顶层开始设计了标准化的协议和数据结构,解决企业间数据的交互问题,避免多链并存的区块链技术演进过程中形成数据孤岛,使区块链真正地成为一种标准化的互联网价值交换和信任传递的基础协议。

블록체인 활용은 다자간 참여와 협조를 필요로 하기 때문에, 징둥 블록체인은 위쪽부터 시작해 표준화된 프로토콜과 데이터 구조를 설계하여, 기업간 데이터 교환의 문제를 해결하고, 여러 체인에 얽힌 블록체인이 만들어지는 과정에서의 단독 데이터 형성을 막으며, 블록체인이 진정으로 표준화된 인터넷 가치교환과 신뢰 전달의 기초적인 프로토콜이 될 수 있게 한다. 

  • 松耦合与模块化 자유로운 결합(loose coupling)과 모듈화

  京东区块链采用模块化设计,通过定义模块间清晰的接口实现模块之间的松耦合,以此获得整个系统的良好扩展性,系统可以根据不同用户和场景的需要,采用不同的可插拔的模块组件。

징둥 블록체인은 모듈화 설계를 사용해, 모듈 간의 명확한 인터페이스를 정의하면서 모듈 간의 자유로운 결합을 실현시켰고, 이것은 전체 시스템의 양호한 확장성을 얻게 되며, 시스템은 각 사용자와 상황의 필요에 따라 다른 삽입 가능한 모듈을 채택한다. 

  • 简洁与高效 간결함과 고효율

  京东区块链的遵循“简洁”的系统设计原则,尽可能地定义更简洁的系统概念模型,使用户的学习成本更低,采用更高效简洁的Go语言进行系统编码实现以及更简单实用的算法设计,减少实现复杂分布式系统过程中编码的缺陷风险。

징둥 블록체인은 “간결한” 시스템 설계 원칙에 따라, 가능한 한 더 간결한 시스템 개념 모형을 정의하고, 사용자의 학습비용을 더 낮게 한다. 또한, 보다 간결하고 고효율의 Go언어로 시스템 코드를 구현하고 더 간단하고 실용적인 알고리즘 설계를 진행해 복잡한 분산식 시스템 과정 중 코드의 결함 리스크를 감소한다. 



3.2. 应用模型 활용 모델

  区块链是一种全新的架构形式,使跨主体的业务协作变得简单、高效和安全。与传统的互联网协议不同(如 TCP/IP,HTTP 等),传统协议都是面向通讯过程的,而区块链是面向业务过程的。区块链作为一种分布式状态机,“智能合约”是实现分布式业务状态转移的核心功能,使得基于区块链的应用架构模型产生了全新的变革。

블록체인은 새로운 구조 형식으로, 많은 주체의 업무 프로토콜을 간단하고, 효율적이고, 안전하게 변화시킨다. 통신 과정을 지향하는 전통적인 인터넷 프로토콜(ex. TCP/IP, HTTP 등)과 달리, 블록체인은 업무 과정을 지향한다. 블록체인은 일종의 분산식 상태 기계(state machine)이며, “스마트 컨트랙트”는 분산식 업무 상태 이전(移轉)의 핵심 기능으로 블록체인에 기반하는 활용 아키텍처 모델을 새롭게 변화시켰다. 

  以应用开发者的视角来观察一下基于区块链的应用开发过程,会更清楚地察觉这种巨大的差异。

  假设要开发一个商品贸易系统,业务的参与者包括贸易买卖双方和物流企业,这个系统要帮助买卖双方建立交易合同、跟踪货物运输过程、交付结算。基于区块链实现该应用通常需要以下几个步骤:

앱 개발자의 블록체인의 활용 개발 과정의 시각으로 이를 본다면, 이런 거대한 차이를 더 분명하게 알 수 있을 것이다. 

만약 상품 무역 시스템을 개발해야 한다면, 업무의 참여자는 무역거래 쌍방과 물류 업체를 포함하며, 이 시스템은 거래 쌍방의 거래 계약, 물건 운송 과정 추적, 결제를 도와줄 것이다. 블록체인은 아래 몇 가지 단계에 기초하여 이를 활용하는 것을 실현시킬 것이다:


(1) 定义参与业务的各个主体的身份账户 참여 업무와 각 주체의 ID 계정 정의

  为参与者注册登记一个由公钥私钥对(证书)表示的身份账户。由符合国家标准的证书所表示的身份账户是能够代表一个特定的法人,由该账户签发的数据可以在法律上被认为是该法人做出的确认。

  传统的架构方案通常是SOA:各个参与方的系统发布各自的SOA 接口,相互间通过SOA 接口调用实现系统对接。在这种架构下,开发者实现任何一个特定参与方的业务角色的功能,都需要把该参与方的身份与其公布的SOA服务接口的通讯地址建立对应关系,开发者对业务功能的实现是体现为对通讯接口的调用和处理。然而,这种方式调用获得的数据难以具备防篡改能力(尤其是大量数据量情况下),也难具有对方法人签名确权的效力(若对每条数据记录都进行签名则技术实现成本很高)。

참여자를 등록하기 위해서 퍼블릭키와 프라이버시키(증서)가 표시한 ID 계정을 등록한다. 국가 표준에 부합하는 증서로 표시되는 ID 계정은 특정 법인을 대표할 수 있으며, 해당 계정에서 발급한 데이터는 법적으로 해당 법인이 확인했다는 것을 인정받을 수 있다. 

일반적으로 전통적 구조방안인 SOA는: 각 참여자의 시스템은 각자의 SOA 인터페이스를 발표하며, 상호 간 SOA인터페이스를 통한 시스템 연결(docking)을 실현한다. 이런 구조에서 개발자는 어느 특정 참여자의 업무 역할 기능을 실현시키고, 해당 참여자 ID와 참여자가 발표한 SOA서비스 인터페이스 통신 주소의 대응관계를 만들고, 개발자의 업무 기능은 통신 인터페이스에 대한 전용(轉用)과 처리로 실현된다. 반면, 이런 방식으로 전용되어 얻은 데이터(특히 대용량 데이터의 경우)는 수정 방지를 갖추기 어렵고, 상대방 법인의 서명 권리 확립 효력도 갖기 힘들다. (만약 모든 데이터 기록에 서명을 한다면 기술 실현 원가가 매우 높다)


(2) 编写智能合约对业务过程做出定义 스마트 컨트랙트 작성으로 업무 과정 정의

  把参与者之间达成的商业协议以智能合约代码的形式进行定义,以数字化形式约定贸易的商品属性、数量、交付价格、交付期限、交付条件、运输方式、交割检验标准、货款计算方式、货款支付时限等等。

  在智能合约的编写过程中,需要关注的内容通常有:在账本中保存的业务信息的格式;业务过程中产生的业务状态;改变业务状态需要满足的条件;业务状态变更的触发方式;业务状态变更涉及更新的业务信息。

  智能合约代码的编写过程是完全不需要关注非业务功能的处理,比如:业务数据在参与者之间网络结构、寻址方式、通讯协议、传输格式、响应线程、处理资源。

참여자 간의 상업 프로토콜을 스마트 컨트랙트 코드 형식으로 정의하며, 디지털 방식으로 무역의 상품 속성, 수량, 거래 가격, 거래 기한, 거래 조건, 운송 방식, 결제 검사 기준, 대금 결제 방식, 대금 지불 기한 등을 약정한다. 

스마트 컨트랙트의 작성 과정에서 주목해야 할 내용은 이와 같다: 장부에 저장된 업무 내용의 형식; 업무 과정 중 발생하는 업무 상황; 업무상황 변경에 만족해야 하는 조건; 업무상황 변경의 트리거 방식; 업무상황 변경에 따른 업데이트 정보.

스마트 컨트랙트 코드의 작성 과정은 비(非)업무 기능 처리를 완전히 신경 쓸 필요가 없다. 예로, 참여자 간의 네트워크 구조의 업무 데이터, 주소 지정 방식(addressing mode), 통신 프로토콜, 전송 격식, 스레드(thread) 반응, 자원 처리가 있다. 


  智能合约虽然也表现为某种形式的编程语言,但是其编写逻辑是完全直接面向业务的,可以形式化地概括为 3 个方面:

a) 定义多主体间的业务数据格式;

b) 定义业务过程包含的业务状态表;

c) 定义各个业务状态的转换条件和触发方式。

스마트 컨트랙트는 어느 프로그래밍 언어의 형식을 보여주지만, 로직 작성은 완전히 업무 지향적이다. 대략 세 가지 방면으로 나타낼 수 있다: 

a) 다 주체간의 업무 데이터 격식 정의;

b) 업무 상태표를 포함한 업무 과정 정의;

c) 각 업무 상태의 전환 조건과 트리거 방식 정의.


(3) 联合签署智能合约并触发业务初始条件 스마트 컨트랙트 공동 체결 및 업무 초기 조건 작동

  智能合约最后需要经过参与者以各自的身份账户做出签署,之后每一方参与者只需要根据自己业务范围内的业务进程做出相应的操作,便触发了智能合约的执行。

  在这个过程中,区块链系统以客观的技术手段提供以下几个方面的保证:

  • 确保合约在每一个参与业务主体的节点上被一致的执行,并得到一致的结果;
  • 确保合约执行过程的每一个步骤都被准确地记录下来;
  • 确保合约执行过程的记录以及最终结果都无法被篡改;
  • 确保参与的主体对合约执行过程的记录以及结果进行签名,确保合约被执行的事实在今后都不可抵赖。

스마트 컨트랙트는 마지막에 참여자들이 각자의 ID 계정을 통해 서명을 해 체결해야 한다. 이후 각 참여자는 자신의 업무 범위 내의 진행에 따라 상응하는 조작이 필요하며, 편리하게 스마트 컨트랙트의 이행을 시작한다. 

이 과정에서 블록체인 시스템은 객관적인 기술 수단을 통해 아래의 몇 가지 방면의 보증을 제공한다:

  • 업무에 참여하는 각 주체의 노드와 일치하는 계약을 이행하는 것을 보증하고, 일치하는 결과를 얻는다;
  • 계약 이행 과정에서 매 단계가 정확하게 기록되는 것을 보증한다;
  • 계약 집행 과정의 기록과 최종 결과가 수정되지 않는 것을 보증한다;
  • 참여 주체가 계약 이행 과정의 기록과 결과에 대해 서명하는 것과, 이후 아무도 계약 집행을 막을 수 없는 것을 보증한다. 


  建立灵活、实用的企业级智能合约系统是京东区块链在系统实现上的核心目标之一。我们在技术路线上通过以下几点来实现:

  • 定义标准化和良好可读性的合约中间语言指令集,使合约能够以人类可读的形式进行最终签署,有助于体现智能合约的法律效力;
  • 支持 Java、Go 等主流开发语言作为合约的编程语言,降低合约的学习成本;
  • 支持智能合约的模拟、调试功能,解决合约的可测试问题;
  • 支持灵活的合约间调用和数据访问控制策略,更容易开发复杂的企业智能合约。

원활하고 실용적인 기업의 스마트 컨트랙트 시스템을 만드는 것이 징둥 블록체인 실현의 핵심 목표 중 하나이다. 우리는 기술 노선에서 다음과 같은 몇 가지를 통해 실현할 것이다:

  • 표준화와 좋은 가독성을 가진 계약서의 중급 언어 명령 집합 정의를 통해, 인류가 읽을 수 있는 형식으로 계약이 최종 서명될 수 있도록 하여 스마트 계약의 법적 효력을 구현하는데 도움을 준다;
  • Java, Go등 주류 개발 언어를 계약의 프로그래밍 언어로 지지하고, 계약의 학습 비용을 낮춘다;
  • 스마트 계약의 시뮬레이션, 기능 조절을 지원하여, 계약의 검사할 수 있는 문제를 해결한다;
  • 원활한 계약 간 조정과 데이터 접근 제어 전략을 지원하여, 복잡한 기업 스마트 컨트랙트를 쉽게 개발한다. 



3.3. 账本协议 장부 프로토콜

  账本协议是从数据的角度定义的一个标准模型,包含两个方面的定义:

    • 账本数据的标准格式

由两部分构成:

a) “账本状态”表示当前实时的数据内容;

b) “历史证明”表示账本数据的特征以及数据变更历史的特征。

    • 读写账本数据的指令的标准格式

由两部分构成:

a) “账本操作集”定义了对账本数据的写入操作类型的标准表述以及参数的标准格式;

b) “合约指令集”定义了标准化的合约语言指令格式。

  定义账本协议的目的是让链上的数据可以被标准化地进行交换、验证、存储和使用,能够跨越不同技术实现的区块链网络,无关特定的数据存储实现。

장부 합의는 데이터의 시각에서 정의한 표준 모델이다.  두 가지 방면의 정의를 포함한다:

  • 장부 데이터의 표준 양식

두 부분으로 구성된다:

a) “장부상태”는 실시간 데이터 내용을 표시한다;

b) “히스토리 증명”은 장부 데이터의 특징과 데이터가 변화한 히스토리의 특징을 표시한다.

  • 장부 데이터 지시의 표준 양식을 읽고 씀

두 부분으로 구성된다:

a) “장부 작업집합”은 장부 데이터의 입력 조작 유형의 표준과 표준 양식의 파라미터를 정의한다;

b) “계약 명령집합”은 표준화된 계약 언어 지시 양식을 정의한다. 

  장부 프로토콜을 정의하는 목적은 체인 위의 데이터를 표준화하여 교환, 검증, 저장과 사용할 수 있도록 하고, 특정한 데이터 저장과 상관없이 서로 다른 기술로 실현한 블록체인 망을 넘는 것을 실현시키는 것이다. 


3.3.1. 账本状态 장부 상태

  “状态”一词在此是一个计算机领域的概念,在此表示区块链系统在某一时刻所处的状况,由系统保存的业务数据以及系统运行的控制属性构成。

  京东区块链的“账本状态”由“身份”、“KV 数据”、“权限”、“合约代码”组成。

“상태”는 IT분야에서 사용하는 개념으로, 여기서 블록체인 시스템이 어느 시점에서 위치하는 곳의 상태이며, 시스템 보존의 업무 데이터와 시스템 실행의 제어 속성으로 구성된다. 

징둥 블록체인의 “장부 상태”는 “신분”, “KV 데이터”, “권한”, “계약 코드”로 구성된다. 


사진. 징둥 블록체인 장부 상태



  • “身份”由一个“区块链地址(Address)”和相应的非对称密钥对/证书表示;
  • “KV  数据”是账本数据表示形式,通过键(Key)唯一标识,通过值(Value)记录内容;
  • “合约代码”表示状态变更的逻辑,以合约指令序列表示;
  • “权限”是“身份”对“KV 数据”和“合约代码”的访问控制码。
  • “신분”은 하나의 “블록체인 주소(Address)”와 상응하는 비대칭적 키/증서로 표시된다;
  • “KV데이터”는 장부 데이터 표시 형식이며, 단일 식별자인 key와 value를 통해 내용을 기록한다;
  • “계약 코드”는 상태 변경의 로직을 표시하며, 계약 명령어 시퀀스(instruction sequence)로 표시한다;
  • “권한”은 “신분”의 “KV 데이터”와 “계약 코드”의 방문 제어 부호(control code)이다. 


3.3.2. 账本操作集 장부 작업집합(operation set)

  “账本操作集”是为了实现跨链互操作而定义一个通用的标准,包含“类型”的标准码,“参数”的标准格式。

  典型的操作包括:

    • 身份注册
    • 状态数据读写
    • 合约部署
    • 合约调用
    • 权限设置

“장부 작업집합”은 체인의 상호 조작과 “유형”의 표준코드, “파라미터”의 표준 양식을 포함한 통용되는 표준을 정의를 실현하기 위해 있다. 

전형적인 작업에 포함되는 것:

  • 신분 등록
  • 상태 데이터 읽고/쓰기
  • 계약 배치
  • 계약 조정
  • 권한 설정


3.3.3. 合约指令集 계약 명령집합

  区块链以合约语言的形式定义业务状态的控制和转换逻辑。

  通过设计一个标准化的合约语言指令集,可以用一种通用的方式来表述各种复杂的业务逻辑,从而与具体的编程语言无关。

  一方面,遵循标准的合约指令集,区块链系统能具备良好的通用性;另一方面,开发者可以用不同编程语言编写智能合约,降低了学习使用门槛,满足不同企业的团队技术栈要求。

블록체인은 계약 언어의 형식으로 업무 상태의 통제와 로직 전환을 정의한다.

표준화된 계약 언어 명령집합의 설계를 통해, 구체적인 프로그래밍 언어와는 상관없이 각종 복잡한 업무 로직을 통용된 방식을 사용하여 표현할 수 있다.

표준화된 계약명령집합을 준수해 블록체인 시스템은 우수한 보편성을 가질 수 있다; 한편으로 개발자는 서로 다른 프로그래밍 언어를 사용해 스마트 컨트랙트를 작성하여, 학습의 문턱을 낮추고, 각기 다른 기업의 기술 요구 사항을 만족할 수 있다. 



3.4. 组件模型 모듈 모델

그림 블록체인 모듈 모델




  “组件模型”是一个逻辑上的功能模块设计,是实现账本协议的逻辑框架。定义了组件的标准化接口,使得遵循组件模型的区块链系统实现具备松耦合、可插拔的特性。

“모듈 모델”은 로직상의 기능 모듈 설계로, 장부 프로토콜의 로직 프레임을 실현시킨다. 모듈의 표준화 인터페이스를 정의하여, 모듈 모델의 블록체인 시스템을 준수하고 완벽한 자유로운 결합, 삽입 가능의 특징을 실현시킨다. 


3.4.1. 共识网络 합의 네트워크

  目前典型的共识算法主要有 PoW、PoS、PBFT[각주:1]、Raft、Paxos[각주:2]等。通过对比发现,这些算法在运行过程都可以抽象下面几个阶段:

(1)交易扩散;

(2)交易排序;

(3)调用交易执行程序;

(4)对交易执行结果进行共识;

(5)提交共识结果。

현재 전형적인 합의 알고리즘은 주로 PoW, PoS, PBFT, Raft, Paxos등이 있다. 비교해보면 이런 알고리즘은 처리 과정 중에 다음 몇 단계를 추상해 볼 수 있다. 

(1) 거래 확산;

(2) 거래 순서;

(3) 거래 이행 절차 전용(轉用);

(4) 거래 이행 결과에 대해 합의 진행;

(5) 합의 결과 제시.


  各种共识算法的差异体现在不同阶段采取了不同实现策略。

  • PoW、PoS 算法在交易扩散和排序时,不采用原子广播协议,同时以随机化的方式选择出leader 节点执行排序,因此会导致交易可能被随机丢弃。
  • Raft、Paxos 算法对全部交易进行原子广播和排序,但在共识的过程并不处理拜占庭错误。
  • PBFT 算法对全部交易进行原子广播和排序,同时在共识阶段处理拜占庭错误,不支持动态调整节点。

  我们从面向企业级应用场景的特点出发,选择类 BFT 的算法进行优化,提供了确定性交易执行、拜占庭容错、动态调整节点的特性。

  京东区块链的共识网络组件按照模块化的思路设计,基于以上几个通用阶段进行封装,抽象出可扩展的标准接口。

각종 합의 알고리즘이 서로 다른 단계마다 다른 실현 전략을 구현했다. 

  • PoW, PoS 알고리즘은 거래 확산 및 순위를 매길 때, 원자(原子) 방송 프로토콜을 채택하지 않음과 동시에, 랜덤한 방식으로 leader 노드의 이행 순서를 채택해서 거래가 랜덤하게 파기될 수도 있다. 
  • Raft, Paxos 알고리즘은 전체 거래에 대해 원자 방송과 순위를 매기지만, 합의 과정에 있어서는 비잔틴 장군 문제(拜占庭错误)를 처리하지 않을 수도 있다. 
  • PBFT 알고리즘은 전체 거래에 대해 원자 방송과 순서를 매김과 동시에, 합의 단계에서 비잔틴 장군 문제를 처리하고, 동적 조정 노드는 지원하지 않는다. 

우리는 기업 활용 시나리오의 특성에서 BFT 유형의 알고리즘을 최적화하여 확실한 거래 이행, 비잔틴 장군 문제, 동적 조정 노드의 특징을 제공한다. 

징둥 블록체인의 합의 네트워크 모듈은 모듈화된 사상 설계에 따라, 위의 몇 가지 범용 단계를 기초로 공정 되고, 확장 가능한 표준 인터페이스를 추상화한다. 


3.4.2. 账本 장부 

  账本状态与合约分离,使用基于身份的访问控制协议约束合约对状态的访问,这种将数据与逻辑分离的设计模式是典型的贫血模型,可为上层业务逻辑提供无状态的逻辑抽象。

장부 상태와 계약은 분리되고, 신분에 기초한 방문 통제 프로토콜을 방문 상태에 관한 제약 계약(Constraint contract)을 사용한다. 이런 데이터와 로직 분리의 설계 모델은 전형적인 빈혈모델(Anemia model)로, 상부 업무 로직에 무상태의 로직 추상체를 제공한다. 


3.4.3. 持久化存储 영구 저장소

  将账本信息的持久化格式定义为更简洁的KV格式数据,使得可以利用成熟的NoSQL数据库来实现持久化存储。基于目前在NoSQL数据库上成熟的海量数据存储方案,使得区块链系统能支持海量的交易。

장부 정보의 영구적 형식은 깔끔한 KV 형식 데이터로 정의하여, 숙련된 NoSQL 데이터베이스를 이용해 영구 저장을 실현할 수 있다. 현재 NoSQL 데이터베이스에서 숙련된 대용량 데이터 저장 방안을 기초하여, 블록체인 시스템이 대용량 거래를 지원할 수 있도록 한다. 


3.4.4. 合约引擎 계약 엔진

  合约引擎包含两大部分,前端包括合约高级语言规范及其工具链,后端是一个轻量级的合约中间代码的执行环境。所有对账本的操作通过账本组件提供的 API 实现。

계약 엔진은 두 개 부분을 포함하는데, 프론트에는 계약 고급 언어 규범과 툴이며, 백엔드에는 비교적 가벼운 계약 중급 코드의 이행 환경이 포함된다. 모든 장부의 조작은 장부 모듈이 제공하는 API가 실현한다. 



3.5. 服务平台 서비스 플랫폼

功能模块分为区块链网关、区块链节点服务、区块链共识网络、配套工具四个部分。

기능 모듈은 블록체인 네트워크, 블록체인 노드 서비스, 블록체인 합의 네트워크, 툴 세트 네 가지로 구성된다. 


그림 징둥 블록체인 서비스 플랫폼




3.5.1. 区块链网关 블록체인 게이트웨이

  “区块链网关”被设计为一种轻量的网关系统,通常是部署在参与者的网络环境中,提供功能包括:

a) 私钥管理:提供完全本地化的私钥保管功能;

b) 隐私保护:采用端到端加密手段实现隐私保护;

c) 协议转换:提供轻量化的HTTP Restful Service,适配 TCP 协议的区块链节点API。

“블록체인 게이트웨이”는 가벼운 게이트웨이(gateway) 시스템을 설계하며, 일반적으로 참여자는 인터넷 환경에 배치되며, 제공되는 기능은 다음과 같다:

a) 키(key) 관리: 완전히 현지화 된 키 보관 기능 제공;

b) 프라이버시 보호: end-to-end 암호화 수법으로 프라이버시 보호 실현;

c) 프로토콜 전환: 경량화 된 HTTP Restful Service 제공, TCP 프로토콜의 블록체인 노드 API와 잘 맞는다.



3.5.2. 区块链节点服务 블록체인 노드 서비스

在区块链基础网络的基础上提供的面向应用的通用的功能组件,目的是提供通用功能的复用,包括:

a) 面向应用的账户管理;

b) 账户的认证授权;

c) 面向对象的账本数据访问框架;

d) 事件通知机制;

e) 智能合约管理。

블록체인 기반 네트워크의 제공된 앱 범용 기능 모듈의 목적은 통용 기능의 다중 활용이며, 다음을 포함한다: 

a) 활용 계좌 관리;

b) 장부의 인증 권한;

c) 대상의 장부 데이터 방문 프레임;

d) 사건 알림 장치;

e) 스마트 컨트랙트 관리.


3.5.3. 区块链共识网络 블록체인 합의 네트워크

  由共识节点组成的网络,基于P2P 网络和共识算法确保交易数据在节点之间保持一致。

합의 노드로 구성된 네트워크는 P2P 네트워크와 합의 알고리즘에 기초하여 노드 간의 거래 데이터가 일치함을 유지하는 것을 보장한다. 


3.5.4. 工具 툴

配套的工具集合,包含SDK、数据管理、安装部署工具、监控服务。

툴 집합의 세트는 SDK, 데이터 관리, 툴 배포 설치, 모니터링 서비스가 포함된다. 


3.5.5. 部署架构 배포 아키텍처

  京东区块链支持以下几种部署模式:

a) 参与主体维护完整的共识节点,好处是参与者可持有数据,但需要付出运维成本;

b) 参与主体仅维护网关节点,通过公共的共识节点接入区块链,好处是便于自行管理私钥,且维护成本低,但网关节点不持有数据;

c) 参与主体通过公共的网关节点接入,适用于 2C 场景,用户可以基于公共的网关节点托管私钥;

d) 监管方可以只部署“备份节点”,从其它节点同步数据作为备案;

e) 监管方还可以部署共识和网关节点,对公众开放查询,作为“存证公示”。

징둥 블록체인은 아래 몇 가지 배포 모델을 포함한다:

a) 참여 주체는 완전한 합의 노드를 유지하여, 데이터를 보유할 수 있지만, 운용 비용을 지불해야 한다;

b) 참여 주체는 게이트웨이 노드를 유지하며, 공공의 합의 노드가 블록체인에 연결되는 것을 통해 자체적으로 키를 관리할 수 있으며 유지 비용이 낮지만, 게이트웨이 노드는 데이터 보유를 지원하지 않는다;

c) 참여 주체는 공공의 게이트웨이 인터페이스를 통해 2C 환경에 적용 적용되며, 사용자는 공공의 게이트웨이 노드에 기초하여 프라이빗 키를 관리할 수 있다;

d) 감독자는 “예비 노드”만 배포하여 다른 노드의 동기식 데이터(synchronous data)를 등록한다;

e) 감독자는 대중 공개 조회에 대한 합의와 게이트웨이 노드를 배포하여, “공증 공시”를 낼 수 있다.


그림 징둥 블록체인의 배포 아키텍처





  1. PBFT(프랙티컬장애허용): Leslie Lamport가 1990년에 제시한 정보 전달 및 허용오차 특성에 기초한 일치성 알고리즘으로, 하으뒈어 고장, 인터넷 접속 지연, 정보 손실 등의 이상분포식 시스템 중 참여자가 어떻게 하면 어느 값(제안)에 eogks 일치된 의견을 나타낼수 있을 지에 대해 해결했다. [본문으로]
  2. Paxos: 비잔티움 허용오차 알고리즘으로, 1999년 Miguel Castro와 Barbara Liskov가 제안한 것이며, 원래의 비잔티움 허용오차 알고리즘의 효율이 높지 않다는 문제를, 알고리즘의 복잡도의 지수화를 통해 비잔티움 허용오차 알고리즘이 실제 시스템 활용에서 돌아가게 만들었다. [본문으로]