巴比特专栏 | 如何基于区块链实现高质量协同?
目前我们所看到的区块链落地应用,无论是公有链还是所谓的“联盟链”,在区块链系统底层的数据视角来看,所有用户都是单一类型用户,节点具有高度的同一性。区块链系统对节点的区分,更多是从区块链系统运维的角度,而不是从业务逻辑运行的角度。
区块链系统基于单一类型用户和同一性质的节点实现的数据真实全网可验证,对于降低信息不透明、建设可信体系具有重要意义;对于优化业务流程、降低运营成本、提升协同效率,具有重大的革命性意义。
但现实社会中,大部分业务场景中的用户并非单一类型。优化业务流程、提升协同效率,一定是角色定位不同的双方或多方之间的事情,而不是同一类型用户内部的事情。 那么,如何基于区块链实现高质量协同呢?
一种解决方案 是在区块链系统底层技术架构不变的情况下,通过应用层的智能合约,在应用层对用户进行角色定义和行为检验,一旦用户角色和行为触发智能合约约定的条件,就执行智能合约规定的动作。
节点用户在系统底层不存在功能和定位上的差别,在应用层又被定义为不同的角色并执行不同的功能,这极有可能给系统架构设计带来逻辑的难以自恰,进而导致编程逻辑上的诸多困难,甚至有一些业务逻辑难以在区块链系统上建立起来。
协同的产生,意味着不同类型用户在业务逻辑定位方面存在差异。业务逻辑定位差异,一是体现在不同类型用户在业务流程中的位置不同,也就是时序方面的差异,这是业务逻辑层面或应用层面需要解决的。二是体现在不同类型用户在权限方面的差异。权限方面的差异首先源于用户所在的类型定义,其次是基于其类型定义之上的可执行动作集合或功能集合的差异。
用户类型定义和功能集合可以在应用层进行定义并执行,但如果用户类型较多、功能较丰富,其定义就会有相当大的难度,同时又涉及到用户权限的安全和系统的可靠性问题。如果能够在区块链系统底层就实现对用户业务角色的定义和区分,通过底层业务角色的定义支撑应用层业务角色功能的实现,则既能做到用户角色定义的安全和系统的可靠,又可以省去在应用层再对用户类型定义进行编码。
基于安全多方计算实现的密钥分片技术,是可以在区块链系统底层实现用户角色定义的基础性技术。传统的非对称密码算法要求一个私钥对应一个公钥,这对于定义个人身份以及权限是可行的,但难以处理多方协同问题。比如通过单一私钥来管理集体数字资产,将面临极大的风险。通常的解决办法是将这个私钥进行拆分,由多个人分别保管其中一个或几个私钥分片,在规定门限数量基础之上,可以实现集体数字资产的集体管理。但其弊端在于完整的私钥必须事先已经存在,否则无法进行私钥的拆分。由于完整的私钥已经存在,因此就无法保证该私钥没有被泄露,也就是无法解决源头信任的问题。
基于安全多方计算实现的密钥分片技术,是参与方分别独自生成自己的私钥分片,在所有参与方独自生成各自私钥分片的基础之上,由系统代码运算生成与这些私钥分片集合对应的公钥。在这个过程中,任何参与方都不会向其他人完整呈现自己的私钥分片,系统运算任何一个环节也不会出现任何参与方的私钥分片,当然更不会出现任何形式的完整私钥,从而在理论上和工程上保证了系统的安全。
传统区块链系统是用单一密钥对(私钥+公钥)来标识用户的身份,且这种标识贯穿于该区块链所有应用场景。基于安全多方计算实现的密钥分片技术,代之由一个私钥分片或一个私钥分片组来标识特定用户身份,且该用户身份仅存在于由该节点私钥分片所对应的公钥所标识的特定业务应用场景中。这种身份标识是所有交易发生的前提,是对交易内容所有权的确认基础,由此实现了用户身份与场景的结合,而不是像传统的区块链系统,用户身份与应用场景是分离的。
此外,依据不同节点的用户身份和掌握的私钥分片数量,在应用层还可以定义该节点用户在特定业务场景中的权限和可执行的功能集合,以及该用户节点在特定业务流程中的每一个时刻的功能子集合,这样就可以高效、完整地实现相关节点在特定业务场景和业务环节下的业务协同了。
由以上分析,我们认为, 基于安全多方计算的密钥分片技术实现,是区块链系统实现高质量业务协同的底层核心基础设施组件。