区块链下合同协同管理系统的设计研究
2022-05-12李广桥乔运华周文坤班玉荣张应刚
李广桥,乔运华,周文坤,班玉荣,张应刚
(1.北京机械工业自动化研究所,北京 100120;2.北京机械工业自动化研究所有限公司,北京 100120;3.中国机械科学研究总院集团有限公司,北京 100044)
0 引言
传统的合同管理采用手工管理的形式,审批签订过程也需要人员携带合同给相应的上级以及合同方;信息化合同管理系统采用了高度集中的管理方式来管理合同数据,以此来改变传统企业信息分布离散化的状况,提高合同信息查询的效率,也避免过多的提取和翻阅原合同文档。信息化合同管理系统还具有根据合同要素快速生成合同模板、直接线上发起内部审批流程等优势。
合同管理系统在业务上是多方参与的,但是不管是传统的还是信息化后的合同管理系统在系统层面上仍然是独立操作。故存在以下几个问题:
1)合同在录入的过程也缺少合同方的监管与参与,无法建立起信任。
2)合同方如果需要审阅核查并签订合同内容,仍然是人员携带纸质版合同给合同方。
3)有效且合法的仍然是纸质合同。纸质合同容易丢失,被篡改,不宜长期保存。
区块链是一个众多技术集合而成的新兴技术体——分布式账本,具有去中心化、数据难篡改,可追溯等特点。对解决跨机构信任问题,增加数据的安全性和可靠性有着天然的优势。结合区块链的合同管理系统,能够真正实现业务和系统操作上的多方参与,即解决了信任问题,又可以促进机构之间更好的协同;同时完全数字化的合同,也更安全,易保存。
1 不同时期合同管理系统的特点
1.1 传统的合同管理系统的特点
1)合同纸质化,合同与相关文件封存到一个档案袋里。
2)合同易丢失、风化。
3)合同内容依靠线下集中讨论商议,合同变更则需要再次集中讨论商议。
4)合同审批流程:依靠人员携带文件寻找相应审批人签审。
5)合同的有效性、合法性:依靠参与各方的手写签名以及相关部门的印章来校验。
1.2 现代信息化的合同管理系统的特点
1)合同信息化成多个要素组成的数据集。
2)合同数据存在被篡改的风险。
3)合同的录入、审批由单机构实行。
4)合同的有效性、合法性:依靠参与各方的手写签名以及相关部门的印章来校验。
5)系统的只用于单机构对已签订的合同进行审批管理或者生成未签订的合同。
6)合同签订仍然是依靠纸质版来签订。
信息化合同管理系统的主要业务流程如图1所示:
图1
2 区块链特点的总结与分析
根据文献[1~6]的分析,区块链有以下主要的特点:
1)去中心化:区块链数据由组成区块链网络的所有节点共同维护,每个节点都有着链上数据的全集。
2)数据安全可靠:区块链网络上的节点会通过达到共识保证数据的一致性。共识机制取决于该区块链系统使用的共识算法。例如:比特币的pow共识,通过投入算力解决数学难提来达成共识,攻击者必须投入超过全网节点51%的算力,才能篡改结果;实用拜占庭共识,状态机副本复制算法,具有拜占庭容错即满足n=3*f+1的条件下(n为全节点数,f为作恶或者故障节点)能保证数据的安全性和活性。
3)数据公开可追溯且唯一:数据链上的数据是公开可见的,用户通过链上交易的地址,可以追溯并查阅交易信息;区块链通过在数据结构加入时间戳来保证其唯一性。
4)匿名性、不可逆性:节点之间作信息交互时,只会涉及到交易用户的公钥地址信息,节点的信息并不会出现,故节点在区块链上具有匿名性;用户一旦发起链上交易,交易记录会被存到每个区块上,不可逆性主要就是指交易的痕迹是不可抹灭的。
从区块链本身的特点来看,区块链适用于多方参与的交易、开放可追溯和安全可靠数据的共享等应用场景。而合同管理恰恰是一个多方参与拟定的过程,并且合同信息对参与各方开放,区块链技术的融入,有利于进一步的提高合同数据的易保存性、可塑性、可靠性和安全性。例如:利用区块链去中心化的特点,可以有效解决多方拟定合同时,因各方信息不对称而导致的信任问题;利用链上数据安全可靠的特点,可以保证合同信息的安全性(篡改合同信息难度大)、可靠性(合法性、有效性可进行链上验证);利用链上数据公开可追溯以及不可逆性的特点,各方可以有效跟踪合同,监督从拟定到生效整个周期等。
3 区块链下的合同协同管理系统设计
合同管理系统从业务上满足多方参与的条件;合同拟定到签署的过程需要参与方公开一定的数据,且要求数据尽可能的客观真实,数据校验依赖第三方;参与各方都希望能把控过程避免暗箱;只有参与的公司或者机构能看到合同信息,即要求信息对内公开,对外保密。综上所述,满足区块链的适用场景,结合了区块链的合同管理系统应该具有以下特点:
1)合同数字化,可以是由合同要素组成的数据集,也可以是一个合同文件或者合同图片。数字合同具有易保存、好维护以及查询验证方便等特点。
2)部分去中心化,多方协同。合同拟定、合同审批到合同的监控维护,从业务和系统操作上都是一个多方参与的过程。多方协同,简化了合同拟定和签审流程,效率得到了有效的提高。
3)合同数据更安全可靠。每一份合同数据在链上都会有相应且唯一的电子凭证。存于链上的电子凭证,由链上节点共同维护,在满足拜占庭容错的前提下,篡改数据十分困难,进一步保证了数据的安全性。
4)合同可追溯。只要业务操作触发了链上的交易,交易的数据就会存到区块中。
5)合同数据内部公开,对外部保密。即只有加入了该业务群组的节点(节点归属机构,同机构可能有多个节点)才能看到业务数据。例如:采购合同群组的合同数据只有加入了该群组的节点才能看到公开的采购数据。同样不在同一个链上的节点是看不到该业务数据的。
3.1 区块链底层开源平台:Fisco bcos区块链底层开源平台
3.1.1 Fisco bcos区块链底层开源平台介绍
FISCO BCOS是一个开源工作组研发的区块链底层技术平台。这个开源工作组是由众多金融类机构以及科技企业(“金链盟”)组建的。旨在大力推动中国在区块链领域的发展,加速区块链技术在各行各业的应用落地,努力研发自主可控的区块链技术[7]。
3.1.2 Fisco bcos区块链的特征
根据文献[7]的分析Fisco bcos区块链有以下特征:
1)高性能
FISCO BCOS通过交易并行模型和c++编写合约的预编译框架大幅提升了系统的效率和链上区块的处理速度。
FISCO BCOS还支持多群组架构。传统的区块链是一条链一个账本。与传统链不同的是,多群组架构是一条链维护多个账本,一个群组相当于一个逻辑链(区分物理链和逻辑链的区别),对应一个账本。群组划分是按节点划分,只有加入到这个群组的节点才有这个区块的数据,所以群组中的区块数据是物理上隔离的,一笔交易只能发往一个群组。物理上单链(区块链网络),逻辑上多账本。每个群组独立运行各自的共识算法,不同群组可使用不同的共识算法(同时支持PBFT、Raft等多种共识)。
2)高安全
FISCO BCOS从4个维度来维护数据的高度安全。
(1)节点层面,利用节点准入机制、ca黑名机制及时剔除作恶节点。
(2)外部用户的权限,通过分布式存储权限来控制。
(3)节点允许对本地数据进行加密保护,防止数据被迁移,如若被迁移,节点失效,数据永久加密。
(4)支持多种类加密算法和签名算法。
3)高可用
FISCO BCOS各属性支持全局配置,同时支持多种环境下的部署。
4)易用性
提供了链上各种操作的接口,以及各种主流编程语言(例如Java、python、go)的sdk。
3.1.3 WeIdentity基于区块链的实体身份标识及可信数据交换解决方案
WeIdentity秉承多中心、开源开放、隐私保护、可移植性、互操作性和可扩展性的设计理念,给予实体一个数字身份,区块链提供这个数字身份的安全性和可靠性,同时保证实体对象之间数据交换、访问授权的安全。WeIdentity作为链接多个垂直行业领域的分布式商业基础设施,以及解决跨机构的信任问题上,具有很大的潜力[8]。
3.2 系统设计以及业务流程
3.2.1 系统架构
区块链合同管理系统的架构如图2,主要分为5层:
图2 区块链合同管理系统的架构
1)合同数据来源
合同的类型有很多,在协同制造业中,主要分为采购合同、销售合同等等,故根据数据源的不同,相应的合同模板也不同。得益于Fisco bcos的多群组架构,可以根据合同的业务类型划分群组。有效的把将不同业务的数据隔离,既便于维护,又能防止数据污染。
2)应用层
主要包括合同录入、合同变更、合同审批和合同作废等核心业务操作。合同录入,主要是合同要素数据的录入比如:合同内容、合同类型、有效时间等;合同变更,主要是合同要素的变更;合同审批,包括定义审批人和发起审批流程等操作;合同作废主要是取消合同有效性。
3)接口服务层
主要包括单签服务、溯源服务、多签服务和合同管理等为应用层造作服务的接口。单签服务主要是针对一级审批流程的接口服务;多签服务针对多级审批(多方参与)的接口服务;溯源服务是根据合同号提供对该合同从拟定到生效过程的信息追踪服务;合同管理,主要有合同的查询、录入、变更和失效以及审批流程发起等业务接口服务。
4)链数据交互层
主要智能合约包括模板合约集、凭证合约集,以及WeIdentity、Fisco bcos提供的Java sdk。这一层主要是weidentity的智能合约集包括WeIdContract、CptController、Evidence等重要合约,通过weidentity提供的sdk来触发。
5)区块链层
主要负责区块链网络的搭建部署和管理。管理主要包括交易审计、节点管理、合约管理、私钥管理以及系统权限的管理。Webase中间件提供了区块链可视化的管理平台以及接口,大大的降低区块链的维护和监控的难度。
(1)交易审计,记录着链上的交易信息、异常信息和异常合约。
(2)节点管理,管理着节点的信息,允许修改节点的类型、增加节点前置。
(3)合约管理,管理着智能合约,包括开发、部署和交易等等。
(4)私钥管理,管理链上用户的导入导出。
3.2.2 基于WeIdentity sdk下的多签算法流程图
基于WeIdentity的底层实现多方签名的流程描述:
1)公司A、B、C临时组成一个组织union。
2)为公司A、B、C以及组织union分别创建对应weid。
3)创建并注册凭证模板(根据实际需要)。
4)为公司A、B、C根据同一个模板生成3份凭证(用户交互的时候相当于签名的过程)。
5)最后用组织union的私钥对3份凭证组成的List数据进行签名返回一个最终的凭证。(用户看到的应该是凭证的hash)。
6)用户用的是组织的数据来验证最终生成的合同凭证是否有效。
图3 多签算法流程图
3.2.3 基于WeIdentity和Fisco bcos sdk下的溯源算法流程图
溯源算法流程描述:
前提:建立合同与链上交易的关联关系并存到数据库中方便提取。
1)根据合同去数据查询相关的链上交易信息返回交易hash组成的List。
2)通过fisco bcos提供的sdk,获取交易信息和交易回执。
3)解析交易信息和交易回执,并获取交易类型,交易发起者和时间戳等重要信息。
4)将3)中获取的信息组合一个数据集合。
5)所有交易的数据集按交易的时间戳先后排序,按照时间顺序的发展,可以看到一份数字合同生命周期的经历的所有链上操作。
3.2.4 跨机构业务协同流程
合同从制定开始就不再是单方参与,而是是多方参与,例如公司A、B、C先商议合同内容,随机选举一个公司进行合同录入,假设为公司A,则有公司A通过合同系统客户端根据原商议内容,录入了一份合同,并向公司B、C发送审核流程,合同数据存在链上,通过区块链网络对节点的数据通步,公司B、C节点通过本地的系统客户端,很快能查看到合同信息,若同意则双方线上对合同数据进行签名存证。若不同意,可以驳回再商议,或者更新合同信息并反向发送审核流程如图5所示,合同数字凭证生成之后,各个公司可以通过系统的校验服务来校验合同的有效性、合法性,也可以通过追溯服务,去看合同的过往改动如图6所示。注意:
图4 溯源算法流程图
图5 跨机构业务协同流程
图6 合同追溯、校验服务
1)合同更新后,重新上链(相当于创建了新的合同模板代替原来的),区块链上的节点数据同步,所有参与者都能从链上查询到更新后的合同,最后合同更改方重新发起合同审批流程,所有参与者对新的合同进行签审。
2)官方机构的作用,即使是数字合同,也不能够脱离法律的约束和监管。所以整个区块链网络一定会需要一个或多个受到国家认可的机构加入作为共识节点,官方机构根据合同内容来判断合同的合法性,一旦签名,意味着合同具备了法律效应。
4 结语
本文通过对传统、信息化合同管理系统特点的分析,结合了区块链技术的特点以及适用场景,展开了区块链技术的合同协同管理系统的设计研究,以解决当下合同管理系统无法跨机构协同、建立各方的信任关系,以及合同数据易遭篡改、不同种类合同数据相互污染等问题。目前合同协同管理系统的进展情况,利用weIdentity和fisco bcos提供的sdk,实现核心业务算法(多签、溯源),其余的链上操作服务由fisco bcos提供的接口做支撑;在这些基础上提出了合同管理系统的跨机构进行合同拟定、更新、审批以及作废的协同流程。但是目前的系统设计仍存在以下主要问题:
1)大量的业务逻辑都放到了链上进行,会导致区块数量涨速快,长此以往,对内存的消耗增加,进而导致系统的性能下降。
2)多方参与去维护一份电子合同,业务流程中必然会存在并发问题。
3)系统涉及了大量的权限分配问题,包括节点准入机制、链上用户和合同系统用户权限等等,如何管理权限需要进一步的思考设计。
后续工作将进一步研究区块链技术以及合同管理的业务模型,通过技术的深入、优化原有合同管理的业务模型或者引入新的合同管理模型,来优化系统性能以及用户体验,合同协同系统才能离实际落地更近一步。