区块链是构建耦合信任系统的最佳选择
扫描二维码
随时随地手机看文章
耦合的四个方面
我们构建的系统会发生变化。一个积极使用的系统会必须跟上不断变化的世界。体系结构的主要目标是构建能够简化此更改过程的系统。
为了缓和这种变化,我们分而治之。我们将系统分解为松耦合的部分,以便尽可能独立地开发、分析、理解和更改每个部分。模块、函数、对象、组件、服务和微服务都是将系统分成这些独立部分的例子。
我们希望将耦合系统减少为多个部分。然而,不同的部分必须协同工作。因此,完全解耦一个系统是不可能的。所以我们努力实现松耦合。其程度可以从四个方面来衡量(自主性越强越好):
1. 时间自主性——它允许一个成员在不可预测的时间点做出反应。例如,因为组成部分会意识到工作量的改变;或者它崩溃了就必须恢复,等等。
2. 引用自治——请求不会发送到特定的组件。例如,因为多个组件实现了重叠的功能;或者因为安装了新版本的组件实现了某一功能,等等。
3. 格式自治——它允许信息的发送方和接收方不必事先就信息的确切语法达成一致。例如,由于不同版本的发送者或接收者产生或期望不同种类的信息;或者因为使用了不同的信息表示(CSV vs 。 JSON,…)等等
4. 平台自治——它允许不同的技术实现交互组件。例如,因为成分是在不同的时间点开发的,当时的技术很流行;或成分是基于最适合其用途的技术而开发的,等等。
在本文中,我们认为信任也可以看作是耦合的另一种形式,即耦合的第五个方面。
理解信任
分布式系统的组成部分通过一个潜在的不可信网络进行通信。因此,每一次这样的通信都是不可信的。交流可能发生在信任建立之前:每个参与者可能在收到另一个参与者的消息后决定是否信任对方。每个参与者之间的信任是根据需要建立的。
“信任”是什么?《牛津词典》将信任定义为“对某人或某事的可靠性、真实性或能力的坚定信念”。“在系统中,坚定地相信系统、子系统或系统中的参与者将根据其/他/她的角色行事。
信任基于经过身份验证的标识。这种身份是授权的基础;授权是广义上的授权,例如授权借记我的账户并将相应的钱寄给其他人。授权包括一个强有力的假设,即被授权的主体将按照既定的规则行事,例如,在基金转让中,借记的金额和贷记的金额是相同的。
我们的大多数系统通过带外方式建立信任。在某些情况下,设计人员确保系统中的每个人都被防火墙的使用所信任。在其他情况下,DevOps人员将凭据配置为使用。在第二种情况下,不是每个人都是可信的,但是已经建立了一些信任链接。值得注意的是,凭证并不代表已建立的信任,而是传递信任的机制。信任是在共享凭据时建立的。
第五个耦合
今天的企业集成解决方案假设系统中已经有一组具有正确凭证的参与者。一旦他们进入系统,他们就可以广泛地访问系统,并且他们的信任水平基本上保持不变。通过假设这种“受信任的参与者”,得到的集成解决方案非常灵活:人们可以交换、演进、添加组件,而不必担心信任。因此,我们可以说信任是松耦合的“隐藏”自治方面。因为参与者之间的信任已经建立,我们认为他们是耦合的。例如,他们不能在互动过程中改变他们的信任行为。
今天的集成解决方案在某种意义上大多是“封闭的”,即交互的组成部分是预先知道的。因此,信任不是显式的关注,而是隐式的假设(否则不会向系统添加组件)。必须显式处理其他自治方面,例如必须添加中介以采用新组件的格式要求。
相反,在“开放”环境中,信任不能是隐式的,它必须显式地折叠进来,以支持在向系统添加未知的新组件时的灵活性。我们可以设想不假定信任关系的系统,并将信任作为操作的一部分来建立。例如,像区块链这样的技术使实现这样的用例成为可能。使用分散化的标识,系统可以在不需要人工参与的情况下作为事务的一部分验证用户的某些属性。
一个例子
让我们举个例子。如果你考虑一家银行来作为系统的一部分,你需要通过一个注册流程,他们会收集你的信息,得到你的签名,检查你的文件。在这些检查之后,如果您通过了,信任就建立起来了,您就可以参与系统了。但是,只要涉及到软件系统,信任就由一个独立的过程而不是系统来建立。我们认为,在这种情况下,参与者是由预先建立的信任所耦合的。由于需要复杂的脱机进程,耦合通常很昂贵。
相反,与“区块链可验证索赔”这样的系统相比,该系统可以与不可信的个人交互,并按需建立信任。此外,系统可以根据可能的信任级别提供不同级别的功能。在这种情况下,信任是一个动态实体,而不是预先在系统中建立的静态条目。例如,如果参与者没有偿还贷款,这可能是一个信号,表明他的信任水平应该调整。
结论
总之,我们认为信任也是一个耦合维度。在这个维度中具有自治权的系统可以与不受信任的方一起工作,并随着时间发展信任。