当前位置: 首页 > 科技观察

基于区块链的去中心化应用程序的四种架构模式

时间:2023-03-16 02:14:17 科技观察

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