区块链有各种各样的用例集,从金融到去中心化互联网。
但是,大多数区块链用例可以使用相对较少的模式来实现。例如,基于区块链的应用程序的模式集合提供了15种区块链模式的列表。
系统设计需要更高级别的抽象。拥有更多的粗粒度宏模式(我们称为架构模式)对我们更有利。
这篇文章描述了四种这样的架构模式。为了描述模式,我将使用亚历山德拉·特沙诺维奇在“什么是模式?”中描述的模板。
背景信息:IAM环境包括许多用户和服务提供商。IAM系统为每个用户提供一个帐户和一组功能,使用户可以前往服务提供商,展示其帐户所有权,然后根据其功能接收服务。
力量:需要实现一个分散的IAM环境,在该环境中,一个恶意用户或几个用户不会对系统造成重大影响。
解决方案:建议的模式候选者以以下方式使用万维网联合会(W3C)DID规范和W3C可验证声明规范。
图1:基于区块链的IAM架构模式
假设Alice需要一个身份(DID,这是一个唯一的标识符)。如创建新DID的图所示,Alice在区块链中创建了一个条目。该条目包括随机生成的标识符,带有其个人资料数据的存储库链接以及个人资料数据的哈希。用户个人资料包含一个公共密钥和一组可验证的声明。现在,生成的随机标识符将成为Alice的DID,因为只有她拥有与公钥相对应的私钥。
可验证的声明是由主管当局签名的授权令牌。创建者还以类似于DID的方式将它们与索赔的哈希一起记录在区块链中。
在质询-响应协议中,验证器生成一个随机种子,使用Alice的公钥对其进行加密,然后向Alice挑战以通过解密加密的种子来证明她具有私钥。由于Alice拥有私钥,因此她必须是DID的所有者。
要标识Alice的另一个用户或组织(验证者),Bob首先从Alice接收DID,从区块链中读取与该DID相关的所有条目,检索Alice的配置文件数据并进行验证。Bob可以使用质询-响应协议再次验证Alice的身份(标识)。然后,Bob可以确认可验证的主张,并可以确信关于Alice的主张是真实的。
我们可以在此架构模式之上分层大多数IAM用例。例如,我们可以通过发布我们要用户执行的操作的可验证声明,或者仅接受可验证声明中具有某些属性(例如年龄,工作描述,组成员身份)的用户来实现访问控制。一种实现可以选择将简档数据的相关子集缓存在数据库中以提高性能。
背景信息:两个或两个以上的各方执行交易或一起工作,其活动需要以无可争议的方式记录下来。
强制措施:需要实施一个分散的审核日志或一个工作区,在该工作区中,一个恶意用户或几个用户不会严重影响系统。
解决方案:提议的系统记录活动并在区块链中为这些记录创建条目。该条目包含活动记录的哈希,因此,以后不能对记录进行争议。
图2:基于区块链的可审核历史或工作区架构模式
例如,假设Alice想缴税。Tax Server接受付款应用程序,创建数字收据,将其哈希记录在区块链中,然后将收据发送给Alice。Alice可以通过计算哈希值并检查存储在区块链中的值来验证收据。此后,Bob无法拒绝收据,因为收据哈希值和时间记录在区块链中。
如果活动很多,可能需要解决区块链性能限制。因此,一些实现可以将多个活动记录的哈希记录作为块而不是单个活动记录。
上下文:注册表是可以在网络上搜索和检索的数据条目的集合。市场是一个注册表,允许用户购买数据条目代表的服务或产品。例如,注册表可以是可用API的目录。
力量:需要实现一个分散的环境,在该环境中,一个恶意用户或几个用户不会对系统造成重大影响。
解决方案:建议的模式如下。
图3:基于区块链的注册表体系结构模式
让我们首先考虑一个注册表。使用建议的体系结构,当用户发布注册表更新(以添加或修改条目)时,客户端会将更改记录在区块链中。如果更新中的数据很大,则区块链记录可能包含该数据的链接和该数据的哈希值。如果需要修改存储在注册表中的数据,则注册表客户端会将带有修改信息的新记录添加到区块链中。
在上图中,每个用户都有一个在本地计算机(例如,笔记本电脑或电话)中运行的注册表客户端。每个注册客户端都从区块链读取更新记录,根据记录中包含的哈希值验证更新数据,并从更新中重建记录的最新视图。
区块链可以很好地充当“服务市场”,因为同一服务可能会被多次出售。但是,由于性能限制,基于区块链的市场不适用于只能出售一次的商品。
在这种模式下,我们考虑两种情况。首先,我们考虑智能合约,其次,我们考虑智能合约的一种常见特殊情况:“托管物”。
4.1 智能合约模式
上下文:多个用户希望遵守合同,称为可执行程序。合同按照合同中定义的条件进行状态转换,并且在给定时间,每个人都可以就合同的当前状态达成一致。
强制措施:需要实现一个环境,在该环境中,一个恶意用户或几个用户不会严重影响系统。
解决方案:智能联系人是区块链技术的一部分,并受到以太坊等区块链实施的支持。使用智能合约语言描述合约并分发给所有参与者。当合同中定义的条件发生变化时,每个参与者都将执行合同并使用共识算法将当前状态记录在区块链中。
4.2 托管事物模式
上下文:我们需要跟踪现实世界中智能事物的所有权。在这里,智能事物是现实世界中的对象,能够在其中运行计算逻辑。允许所有者对现实世界中的事物进行控制和执行操作。同样,所有者可以将其所有权转让给其他人。
强制措施:需要实现一个环境,在该环境中,一个恶意用户或几个用户不会严重影响系统。
解决方案:下面以Car作为被管理对象来描述模式的实现。
图4:基于区块链的Managed Things体系结构模式
我们可以分两步为托管物品(在本例中为汽车)实现区块链。首先,制造商记录汽车所有者的DID和公共密钥。当所有权更改时,所有者在区块链中添加一条新记录,指定新所有者。其次,在检查所有权时,汽车首先检索区块链中的所有记录,并验证所有者当时是否添加了每条记录。这是通过对照先前所有权记录中包含的公共密钥检查编写记录的用户的公共密钥来完成的。此有效链中的最后一个所有者是当前所有者。
确定所有者后,汽车将通过检索她的公钥并使用具有Alice私钥的Alice手机进行基于质询-响应-协议的登录来登录当前所有者Alice。
这样的系统降低了与远程控制伪像相关的风险。
但是,很难阻止有权访问“事物”的人实际更改内部运行的逻辑。解决此问题的一种方法是构建某种形式的自毁,该自毁在检测到篡改伪像时触发。