京东集团拥有全渠道零售和端到端供应链的高质量大数据,区块链技术天然可以解决京东业务场景中多个主体的信息记录与分享,可信数据交换与传递的业务诉求.。早在2016年,京东集团就全面启动了区块链技术在京东业务场景中的应用探索与研发实践,先后在数据交易、供应链管理、金融科技等领域落地了不同的区块链应用,过程中积累了大量的区块链部署经验与底层技术研发能力。
建立社会化共享的可信数据库,技术搭建一张社会化的共享数据存储网络,有机会以客观的技术手段来解决跨主体的信任问题。
提升交易效率,降低交易成本, 推动供应链创新
逐渐认知到区块链并不单纯是一种技术,而是一种社会化的“共识信任”理念
区块链本质上是一种健壮和安全的分布式状态机,典型的技术构成包括共识算法、P2P通讯、密码学、数据库技术和虚拟机。 存储数据,共有数据, 分布式, 防篡改与保护隐私, 数字化合约.
区块链有着去中心化、点对点传输、透明、可追踪、不可篡改、数据安全等特点
业务开展需要进行跨主体协作
业务开展需要参与方之间建立低成本信任, 数据可信, 合约履行, 历史可证明
业务过程存在长交易、长周期链条
高并发交易能力, 共识算法是制约性能的重要 方面,制约性能的另一个重要因素是账本结构,单链.
数据存储能力, 典型的实现是基于文件系统或者简 单的 KV 数据库存储, 需要探索有效的大数据存储方式。
通用性方面 区块链需要适应多样化的业务需求,区块链对数据的记录方式要有足够的通用和标准.
目前市面上的区块链系统大多采用特定的共识算法,加密算法,账户模型,账本模型,存储类型,缺少可插拔能力,无法适应不同场景要求.
真的可插拔好吗? 安全稳定如何保证?
功能完备性,
易用性
不适用的、不可持续的场景,无法解决业务痛点,案例缺少价值
错误的实施方法,没有合理技术方案
技术不成熟
人才稀缺
供应链、金融、 政务及公共服务等领域, 其实还有社交网络
面向业务,需要适用广泛的企业场景,在设计上首先从定义企业场景的核心用例出发,设计京东 区块链的协议、数据结构和功能特性。
标准化 设计了标准化的协议和数据结构,目标是使区块链真正地成为一种标准化的互联网基础协 议。
松耦合与模块化, 京东区块链采用模块化设计,通过定义模块间清晰的接口实现模块之间的松耦合,采用不同的可插拔的模 块组件
安全可审计,
简洁与效率
假设要开发一个商品贸易系统,业务的参与者包括贸易买卖双方和物流企业,这个系统 要帮助买卖双方建立交易合同、跟踪货物运输过程、交付结算。基于区块链实现该应用通常 需要以下几个步骤:
(1) 定义参与业务的各个主体的身份账户
为参与者注册登记一个由公私钥对(证书)表示的身份账户。由符合国家标准的证书所 表示的身份账户是能够代表一个特定的法人,由该账户签发的数据可以在法律上被认为是该法人做出的确认。
(2) 编写智能合约对业务过程做出定义
把参与者之间达成的商业协议以智能合约代码的形式进行定义,以数字化形式约定贸易 的商品属性、数量、交付价格、交付期限、交付条件、运输方式、交割检验标准、货款计算 方式、货款支付时限等等,
在智能合约的编写过程中,需要关注的内容通常有:在账本中保存的业务信息的格式; 业务过程中产生的业务状态;改变业务状态需要满足的条件;业务状态变更的触发方式;业 务状态变更涉及更新的业务信息
智能合约代码的编写过程是完全不需要关注非业务功能的处理,比如:业务数据在参与 者之间网络结构、寻址方式、通讯协议、传输格式、响应线程、处理资源。
智能合约虽然也表现为某种形式的编程语言,但是其编写逻辑是完全直接面向业务的, 可以形式化地概括为 3 个方面,定义多主体间的业务数据格式, 定义业务过程包含的业务状态表, 定义各个业务状态的转换条件和触发方式
(3) 联合签署智能合约并触发业务初始条件
智能合约最后需要经过参与者以各自的身份账户做出签署,之后每一方参与者只需要根据自己业务范围内的业务进程做出相应的操作,便触发了智能合约的执行.
确保合约在每一个参与业务的主体的节点上被一致的执行,并得到一致的结果, 确保合约执行过程的每一个步骤都被准确地记录下来, 确保合约执行过程的记录以及最终结果都无法被篡改, 确保参与的主体对合约执行过程的记录以及结果进行签名,确保合约被执行的事实 在今后都不可抵赖
分模块介绍:
账本协议是从数据的角度定义的一个标准模型,包含两个方面的定义:
账本数据的标准格式
由两部分构成:
a) “账本状态”表示当前实时的数据内容;
b) “历史证明”表示账本数据的特征以及数据变更历史的特征。
读写账本数据的指令的标准格式
由两部分构成:
a) “账本操作集”定义了对账本数据的写入操作类型的标准表述以及参数的标准格式。 b) “合约指令集”定义了标准化的合约语言指令格式。 定义账本协议的目的是让链上的数据可以被标准化地进行交换、验证、存储和使用,能够跨越不同技术实现的区块链网络,无关特定的数据存储实现
京东区块链的 “账本状态”由“身份”、“KV 数据”、“权限”、“合约代码”组 成.
身份”由一个“区块链地址(Address)”和相应的非对称密钥对/证书表示,
KV 数据”是账本数据表示形式,通过键(Key)唯一标识,通过值(Value)记 录内容,
“合约代码”表示状态变更的逻辑,以合约指令序列表示,
“权限”是“身份”对“KV 数据”和“合约代码”的访问控制码.
类似于zookeeper的节点 .
账本操作集”是为了实现跨链互操作而定义一个通用的标准,包含“类型”的标准 码,“参数”的标准格式。
典型的操作包括:
身份注册
状态数据读写
合约部署
合约调用
权限设置
合约指令集
通过设计一个标准化的合约语言指令集,可以用一种通用的方式来表述各种复杂的业务逻辑,从而与具体的编程语言无关
共识算法主要有 PoW、PoS、PBFT、Raft、Paxos 等
这些 算法在运行过程都可以抽象下面几个阶段:
(1)交易扩散;
(2)交易排序;
(3)调用交易执行程序;
(4)对交易执行结果进行共识;
(5)提交共识结果。
各种共识算法的差异体现在不同阶段采取了不同实现策略。
PoW、PoS 算法在交易扩散和排序时,不采用原子广播协议,同时以随机化的方式选择出 leader 节点执行排序,因此会导致交易可能被随机丢弃。
Raft、Paxos 算法对全部交易进行原子广播和排序,但在共识的过程并不处理拜占庭错误
PBFT 算法对全部交易进行原子广播和排序,同时在共识阶段处理拜占庭错误,不支 持动态调整节点。
我们从面向企业级应用场景的特点出发,选择类 BFT 的算法进行优化,提供了确定性交 易执行、拜占庭容错、动态调整节点的特性。
账本状态与合约分离,使用基于身份的访问控制协议约束合约对状态的访问,这种将数 据与逻辑分离的设计模式是典型的贫血模型,可为上层业务逻辑提供无状态的逻辑抽象。
将账本信息的持久化格式定义为更简洁的 KV 格式数据,使得可以利用成熟的 NoSQL 数据库来实现持久化存储。基于目前在 NoSQL 数据库上成熟的海量数据存储方案,使得区 块链系统能支持海量的交易。
目前参考宇信科技 的 使用的是 CounchDB
合约引擎包含两大部分,前端包括合约高级语言规范及其工具链,后端是一个轻量级的 合约中间代码的执行环境。所有对账本的操作通过账本组件提供的 API 实现。
功能模块分为区块链网关、区块链节点服务、区块链基础网络、配套工具四个部分
“区块链网关”被设计为一种轻量的网关系统,通常是部署在参与者的网络环境中,提 供功能包括:
a) 私钥管理:提供完全本地化的私钥保管功能;
b) 隐私保护:采用端到端加密手段实现隐私保护;
c) 协议转换:提供轻量化的 HTTP Restful Service ,适配 TCP 协议的区块链节点API
在区块链基础网络的基础上提供的面向应用的通用的功能组件,目的是提供通用功能的 复用,包括:
a) 面向应用的账户管理;
b) 账户的认证授权;
c) 面向对象的账本数据访问框架;
d) 事件通知机制;
e) 智能合约管理。
由共识节点组成的网络,基于 P2P 网络和共识算法确保交易数据在节点之间保持一致
配套的工具集合,包含 SDK、数据管理、安装部署工具、监控服务。
其实个人理解这个监控特别重要,未来节点多,系统性能如何,如何测试,如何监控?如何查找问题?都需要监控.
京东区块链支持以下几种部署模式:
a、 参与主体维护完整的共识节点,好处是参与者可持有数据,但需要付出运维成本;
b、 参与主体仅维护网关节点,通过公共的共识节点接入区块链,好处是便于自行管理 私钥,且维护成本低,但网关节点不持有数据;
c、 参与主体通过公共的网关节点接入,适用于 2C 场景,用户可以基于公共的网关节 点托管私钥;
d、 监管方可以只部署“备份节点”,从其它节点同步数据作为备案;
e、 监管方还可以部署共识和网关节点,对公众开放查询,作为“存证公示”。
采用优化的 BFT 共识协议和 P2P 通讯,支持多链并行共识;
采用面向消息的高并发处理架构,支持横向伸缩,并行处理海量交易。
支持横向伸缩存储和在线动态扩容,以实现海量数据;
采用灵活的数据存储结构,支持冷热数据分离;
支持节点动态加入和退出,实现系统的高可用性,保证业务不间断运行。
支持用户实名与认证;支持企业数据治理;支持事件驱动的业务协作模型;支持多账本以实现按业务维度管理链上数据。
可插拔的密码算法,可以灵活的制定相应的密码体系;
平台默认实现多套密码算法,包括国密算法和硬件加密设备。
支持可复用的智能合约;支持智能合约语言的调试功能。
支持基于 CA 的账户认证;支持监管节点的接入,支持数据备案。