区块链有着去中心化、点对点传输、透明、可追踪、不可篡改、数据安全等特点,可以用来解决现有业务的一些痛点,实现业务模式的创新。下面将重点分析和介绍区块链在供应链、金融、政务及公共服务等领域的典型应用场景。这些场景的应用分析基于京东应用区块链技术的经验和京东自身对于区块链技术的应用规划,旨在通过经验分享引起领域内同行及合作伙伴的共鸣和交流。
1. 供应链领域
供应链由众多参与主体构成,存在大量交互协作,信息被离散地保存在各自环节各自系统中,缺乏透明度。信息的不流畅导致各参与主体难以准确了解相关事项的实时状况及存在的问题,影响供应链协同效率。当各主体间出现纠纷时,举证和追责耗时费力。未来企业市场范围越来越大,物流环节表现出多区域、长时间跨度的特征,需要智能高效的防伪追溯能力。
区块链技术通过提供完整流畅的信息流、不可篡改的签名认证机制,可以实现去中心化或多中心化的精准追溯和充分信任,天然地适用于供应链管理。
⚫ 商品防伪追溯
借助区块链技术,实现品牌商、渠道商、零售商、消费者、监管部门、第三方检测机构之间的信任共享,全面提升品牌、效率、体验、监管和供应链整体收益。将商品原材料过程、生产过程、流通过程、营销过程的信息进行整合并写入区块链,实现精细到一物一码的全流程正品追溯。
每一条信息都拥有自己特有的区块链 ID“身份证”,且每条信息都附有各主体的数字签名和时间戳,供消费者查询和校验。区块链的数据签名和加密技术让全链路信息实现了防篡改、标准统一和高效率交换。
⚫ 贸易融资
在供货商、进货商、银行等贸易融资参与主体间建立联盟链,通过区块链记录贸易主体资质、多频次交易、商品流转等信息,使贸易双方及银行间公开透明安全地共享真实可信的信息。
针对供应链中的大型企业,银行可以借此丰富融资风控模型,减少线下人工采集和确认信息真实性的工作量,开展动产评估下的融资服务。有融资困难的供应链上下游中小企业,可基于区块链提供的主体资质认证、与大型企业的多频次交易信息认证获得信用背书,缓解融资难题。
2. 金融领域
金融的核心是信用的建立和传递,区块链以其不可篡改、安全透明、去中心化或多中心化的特点,天然适用于多种金融场景。
国内外大多数区块链联盟均聚焦于金融领域,例如由 42 家国际银行组成的区块链联盟 R3致力于利用区块链技术,在解决互信的基础上,构建扁平化的全球一体化清算体系,以提高效率、降低成本。另外,据麦肯锡测算,区块链技术可以将跨国交易的成本从每笔 26 美元降低到 15 美元。高盛也在一份报告中指出,区块链技术将为资本市场每年节约 60 亿美元的成本。
⚫ 交易清结算
交易清结算的过程也是交易双方分别记账的过程,在传统的交易模式中,记账过程是交易双方分别进行的,不仅要耗费大量人力物力,而且容易出现对账不一致的情况,影响结算效率。
通过区块链系统,交易双方或多方可以共享一套可信、互认的账本,所有的交易清结算记录全部在链可查,安全透明、不可篡改、可追溯,极大提升对账准确度和效率。通过搭载智能合约,还可以实现自动执行的交易清结算,大大降低对账人员成本和差错率,特别是在跨境支付场景下,效果尤其明显。
⚫ 资产证券化 ABS
传统的资产证券化需要结算机构、交易所和证券公司等多重协调,通过搭载智能合约的联盟链,可以自动实现跨多主体间的证券产品交易。
基于区块链技术的资产证券化管理系统,能够确保消费金融服务公司底层资产数据的真实性,且不可篡改、可追溯,提高机构投资者信心,从而降低消费金融服务公司发行 ABS 的门槛和发行成本,同时还可以进行 ABS 全生命周期管理,及时识别和管控风险。
3. 政务及公共服务领域
政务及公共服务的工作核心在于行业标准的制定和有效监督管理,传统管理方式是通过立法和抽查进行监管,不能做到实时监控,涉及仲裁时往往还需要漫长的取证过程。通过搭建包含政府监管机构、第三方公共服务机构的联盟链,可以探索创新管理机制,实现政务实时监管,并借助区块链的不可篡改、可追溯特性,极大提高仲裁效率。
⚫ 合同及发票防伪
电子合同和电子发票的日益普及,为我们日常生活和商业活动带来很多便利的同时,也带来了合同造假、发票造假及重复报销等许多新的问题,而这些问题需要监管部门和企业共同探索有效的解决方案。在开具电子合同、电子发票的同时,通过联盟链完成向监管部门的备案,在发生造假、重复报销等情况时,通过核对已备案的电子合同、电子发票的区块链 ID“身份证”,可以快速判定造假事实,确定造假主体,实现实时监管。
⚫ 公益追溯
应用区块链技术支撑公益项目的阳光、透明和可追溯,爱心物资经由高效的物流体系直接配送到公益项目地,并由公益机构执行人员发放至受助人手中。捐赠人可通过客户端实时查询所捐赠物资的物流状态,直观地看到物资发放到受助人手中的全过程。
从选购爱心物资开始的全部过程信息、参与主体信息均使用区块链技术来防止篡改,确保公益透明性、可追溯,极大增加公益平台的权威性和可信度。
4. 其他领域
除了供应链、金融、政务及公共服务领域外,区块链还可以应用在很多其他领域,受篇幅所限,我们不便一一列出,仅举两个例子:
⚫ 保险防欺诈
区块链利用共识机制、防篡改机制和可追溯机制,可在保险代偿、追偿时提供有效证据支撑。以车险理赔为例,通常包含车主、4S 店或维修厂、保险公司、交管部门等多个主体,骗保等理赔欺诈问题时常发生。
依托区块链技术和车联网技术,在车辆上安装相应传感记录设备,保证信息的真实、准确和不可篡改,在出险时,实时或准实时地将车辆事故数据提交给应用区块链技术的“事故认证平台”系统,交警裁决数据、传感记录器数据、维修厂数据等都实时同步,从根本上解决车险理赔欺诈问题,同时提高保险理赔案件的效率和准确性。
⚫ 大数据安全
区块链可以解决大数据的安全性问题,保证数据的隐私性。区块链的可追溯特性使得数据从采集、交易、流通,以及计算分析的每一步记录都可以留存在区块链上,使得数据的质量获得前所未有的强信任背书,也保证了数据分析结果的正确性和数据挖掘的效果,并且能够进一步规范数据的使用,精细授权范围,追溯数据使用情况,全面保障数据使用的安全合规。
脱敏后的数据交易流通,则有利于突破信息孤岛,建立数据横向流通机制,逐步推动形成基于全球化的数据交易、数据资产保护等全新的应用场景。
京东区块链架构体系
京东区块链的目标是打造面向企业级应用的区块链基础设施,为企业提供能够切实解决业务痛点的区块链技术方案。
为解决区块链在企业级场景下的一些突出问题,包括系统性能、功能完备性、系统扩展性、监管审计支持、易用性等,京东区块链采用分层架构设计、标准化账本数据协议、优化共识算法、引入微服务架构与可伸缩的分布式存储技术、灵活的多级授权策略等一系列的创新技术方案。
京东区块链的总体架构分为 3 个层次:区块链协议、组件框架、服务平台。采用自顶而下的设计方法,首先聚焦区块链协议的设计,解决企业级应用中的数据标准化和多链互通的问题;其次是定义一个通用的区块链系统的组件模型,实现具体功能组件松耦合和可插拔,解决企业级应用中可根据具体情况自定义扩展的需求;最后,我们基于标准化的区块链协议和组件模型,提供一个具体的区块链平台实现以及相关的工具和开发包,为快速实现企业级区块链应用提供平台和工具。
⚫ 区块链协议
京东区块链协议作为最顶层的架构设计,定义了区块链的数据格式标准,包括账本状态、历史证明、账本操作集、合约指令集 4 个方面的数据标准。
⚫ 组件模型
“组件模型”是区块链逻辑组件的框架模型,是对京东区块链协议的实现框架。包括了共识网络、账本、持久化引擎、合约引擎四个组件。
⚫ 服务平台
“服务平台”是对上层的区块链协议和组件模型的具体实现,由网关、服务、节点网络、SDK 和一套工具集组成。
1. 设计原则
京东区块链在架构和实现上遵循以下的几个设计原则。
⚫ 面向业务
企业场景的特点是需求非常多样,性能要求高。京东区块链在设计上首先从分析企业应用的典型用例出发,设计京区块链协议和系统功能特性,确保系统的实现能够最终适应广泛的企业需求。
⚫ 标准化
由于区块链应用场景是一种跨主体的有多方参与和协作的场景,京东区块链从顶层开始设计了标准化的协议和数据结构,解决企业间数据的交互问题,避免多链并存的区块链技术演进过程中形成数据孤岛,使区块链真正地成为一种标准化的互联网价值交换和信任传递的基础协议。
⚫ 松耦合与模块化
京东区块链采用模块化设计,通过定义模块间清晰的接口实现模块之间的松耦合,以此获得整个系统的良好扩展性,系统可以根据不同用户和场景的需要,采用不同的可插拔的模块组件。
⚫ 简洁与高效
京东区块链的遵循“简洁”的系统设计原则,尽可能地定义更简洁的系统概念模型,使用户的学习成本更低,采用更高效简洁的 Go 语言进行系统编码实现以及更简单实用的算法设计,减少实现复杂分布式系统过程中编码的缺陷风险。
2. 应用模型
区块链是一种全新的架构形式,使跨主体的业务协作变得简单、高效和安全。与传统的互联网协议不同(如 TCP/IP,HTTP 等),传统协议都是面向通讯过程的,而区块链是面向业务过程的。区块链作为一种分布式状态机,“智能合约”是实现分布式业务状态转移的核心功能,使得基于区块链的应用架构模型产生了全新的变革。
以应用开发者的视角来观察一下基于区块链的应用开发过程,会更清楚地察觉这种巨大的差异。
假设要开发一个商品贸易系统,业务的参与者包括贸易买卖双方和物流企业,这个系统要帮助买卖双方建立交易合同、跟踪货物运输过程、交付结算。基于区块链实现该应用通常需要以下几个步骤:
(1) 定义参与业务的各个主体的身份账户
为参与者注册登记一个由公钥私钥对(证书)表示的身份账户。由符合国家标准的证书所表示的身份账户是能够代表一个特定的法人,由该账户签发的数据可以在法律上被认为是该法人做出的确认。
传统的架构方案通常是 SOA:各个参与方的系统发布各自的 SOA 接口,相互间通过SOA 接口调用实现系统对接。在这种架构下,开发者实现任何一个特定参与方的业务角色的功能,都需要把该参与方的身份与其公布的 SOA 服务接口的通讯地址建立对应关系,开发者对业务功能的实现是体现为对通讯接口的调用和处理。然而,这种方式调用获得的数据难以具备防篡改能力(尤其是大量数据量情况下),也难具有对方法人签名确权的效力(若对每条数据记录都进行签名则技术实现成本很高)。
(2) 编写智能合约对业务过程做出定义
把参与者之间达成的商业协议以智能合约代码的形式进行定义,以数字化形式约定贸易的商品属性、数量、交付价格、交付期限、交付条件、运输方式、交割检验标准、货款计算方式、货款支付时限等等。
在智能合约的编写过程中,需要关注的内容通常有:在账本中保存的业务信息的格式;业务过程中产生的业务状态;改变业务状态需要满足的条件;业务状态变更的触发方式;业务状态变更涉及更新的业务信息。
智能合约代码的编写过程是完全不需要关注非业务功能的处理,比如:业务数据在参与者之间网络结构、寻址方式、通讯协议、传输格式、响应线程、处理资源。
智能合约虽然也表现为某种形式的编程语言,但是其编写逻辑是完全直接面向业务的,可以形式化地概括为 3 个方面:
a) 定义多主体间的业务数据格式;
b) 定义业务过程包含的业务状态表;
c) 定义各个业务状态的转换条件和触发方式。
(3) 联合签署智能合约并触发业务初始条件
智能合约最后需要经过参与者以各自的身份账户做出签署,之后每一方参与者只需要根据自己业务范围内的业务进程做出相应的操作,便触发了智能合约的执行。
在这个过程中,区块链系统以客观的技术手段提供以下几个方面的保证:
⚫ 确保合约在每一个参与业务主体的节点上被一致的执行,并得到一致的结果;
⚫ 确保合约执行过程的每一个步骤都被准确地记录下来;
⚫ 确保合约执行过程的记录以及最终结果都无法被篡改;
⚫ 确保参与的主体对合约执行过程的记录以及结果进行签名,确保合约被执行的事实在今后都不可抵赖。
建立灵活、实用的企业级智能合约系统是京东区块链在系统实现上的核心目标之一。我们在技术路线上通过以下几点来实现:
⚫ 定义标准化和良好可读性的合约中间语言指令集,使合约能够以人类可读的形式进行最终签署,有助于体现智能合约的法律效力;
⚫ 支持 Java、Go 等主流开发语言作为合约的编程语言,降低合约的学习成本;
⚫ 支持智能合约的模拟、调试功能,解决合约的可测试问题;
⚫ 支持灵活的合约间调用和数据访问控制策略,更容易开发复杂的企业智能合约。
3. 账本协议
账本协议是从数据的角度定义的一个标准模型,包含两个方面的定义:
⚫ 账本数据的标准格式
由两部分构成:
a) “账本状态”表示当前实时的数据内容;
b) “历史证明”表示账本数据的特征以及数据变更历史的特征。
⚫ 读写账本数据的指令的标准格式
由两部分构成:
a) “账本操作集”定义了对账本数据的写入操作类型的标准表述以及参数的标准格式;
b) “合约指令集”定义了标准化的合约语言指令格式。
定义账本协议的目的是让链上的数据可以被标准化地进行交换、验证、存储和使用,能够跨越不同技术实现的区块链网络,无关特定的数据存储实现。
3.1. 账本状态
“状态”一词在此是一个计算机领域的概念,在此表示区块链系统在某一时刻所处的状况,由系统保存的业务数据以及系统运行的控制属性构成。
京东区块链的“账本状态”由“身份”、“KV 数据”、“权限”、“合约代码”组成。
⚫ “身份”由一个“区块链地址(Address)”和相应的非对称密钥对/证书表示;
⚫ “KV 数据”是账本数据表示形式,通过键(Key)唯一标识,通过值(Value)记录内容;
⚫ “合约代码”表示状态变更的逻辑,以合约指令序列表示;
⚫ “权限”是“身份”对“KV 数据”和“合约代码”的访问控制码。
3.2. 账本操作集
“账本操作集”是为了实现跨链互操作而定义一个通用的标准,包含“类型”的标准码,“参数”的标准格式。
典型的操作包括:
⚫ 身份注册
⚫ 状态数据读写
⚫ 合约部署
⚫ 合约调用
⚫ 权限设置
3.3. 合约指令集
区块链以合约语言的形式定义业务状态的控制和转换逻辑。
通过设计一个标准化的合约语言指令集,可以用一种通用的方式来表述各种复杂的业务逻辑,从而与具体的编程语言无关。
一方面,遵循标准的合约指令集,区块链系统能具备良好的通用性;另一方面,开发者可以用不同编程语言编写智能合约,降低了学习使用门槛,满足不同企业的团队技术栈要求。
4. 组件模型
“组件模型”是一个逻辑上的功能模块设计,是实现账本协议的逻辑框架。定义了组件的标准化接口,使得遵循组件模型的区块链系统实现具备松耦合、可插拔的特性。
4.1. 共识网络
目前典型的共识算法主要有 PoW、PoS、PBFT、Raft、Paxos 等。通过对比发现,这些算法在运行过程都可以抽象下面几个阶段:
(1)交易扩散;
(2)交易排序;
(3)调用交易执行程序;
(4)对交易执行结果进行共识;
(5)提交共识结果。
各种共识算法的差异体现在不同阶段采取了不同实现策略。
⚫ PoW、PoS 算法在交易扩散和排序时,不采用原子广播协议,同时以随机化的方式选择出 leader 节点执行排序,因此会导致交易可能被随机丢弃。
⚫ Raft、Paxos 算法对全部交易进行原子广播和排序,但在共识的过程并不处理拜占庭错误。
⚫ PBFT 算法对全部交易进行原子广播和排序,同时在共识阶段处理拜占庭错误,不支持动态调整节点。
我们从面向企业级应用场景的特点出发,选择类 BFT 的算法进行优化,提供了确定性交易执行、拜占庭容错、动态调整节点的特性。
京东区块链的共识网络组件按照模块化的思路设计,基于以上几个通用阶段进行封装,抽象出可扩展的标准接口。
4.2. 账本
账本状态与合约分离,使用基于身份的访问控制协议约束合约对状态的访问,这种将数据与逻辑分离的设计模式是典型的贫血模型,可为上层业务逻辑提供无状态的逻辑抽象。
4.3. 持久化存储
将账本信息的持久化格式定义为更简洁的 KV 格式数据,使得可以利用成熟的 NoSQL数据库来实现持久化存储。基于目前在 NoSQL 数据库上成熟的海量数据存储方案,使得区块链系统能支持海量的交易。
4.4. 合约引擎
合约引擎包含两大部分,前端包括合约高级语言规范及其工具链,后端是一个轻量级的合约中间代码的执行环境。所有对账本的操作通过账本组件提供的 API 实现。
5. 服务平台
功能模块分为区块链网关、区块链节点服务、区块链共识网络、配套工具四个部分。
5.1. 区块链网关
“区块链网关”被设计为一种轻量的网关系统,通常是部署在参与者的网络环境中,提供功能包括:
a) 私钥管理:提供完全本地化的私钥保管功能;
b) 隐私保护:采用端到端加密手段实现隐私保护;
c) 协议转换:提供轻量化的 HTTP Restful Service,适配 TCP 协议的区块链节点API。
5.2. 区块链节点服务
在区块链基础网络的基础上提供的面向应用的通用的功能组件,目的是提供通用功能的复用,包括:
a) 面向应用的账户管理;
b) 账户的认证授权;
c) 面向对象的账本数据访问框架;
d) 事件通知机制;
e) 智能合约管理。
5.3. 区块链共识网络
由共识节点组成的网络,基于 P2P 网络和共识算法确保交易数据在节点之间保持一致。
5.4. 工具
配套的工具集合,包含 SDK、数据管理、安装部署工具、监控服务。
5.5. 部署架构
京东区块链支持以下几种部署模式:
a) 参与主体维护完整的共识节点,好处是参与者可持有数据,但需要付出运维成本;
b) 参与主体仅维护网关节点,通过公共的共识节点接入区块链,好处是便于自行管理私钥,且维护成本低,但网关节点不持有数据;
c) 参与主体通过公共的网关节点接入,适用于 2C 场景,用户可以基于公共的网关节点托管私钥;
d) 监管方可以只部署“备份节点”,从其它节点同步数据作为备案;
e) 监管方还可以部署共识和网关节点,对公众开放查询,作为“存证公示”。