我在区块链底层架构领域已经做了五年时间了,这个叫作“区块链三围链”的概念实际上的意思并不难理解, 它指的是数据这一层、逻辑这一层以及应用这一层各自形成单独的链条进行运行,并且它们互相之间要进行账目的比对和核对。

许多朋友被这三个字给弄糊涂了, 搞不清究竟怎么回事, 其实这件事本质上就是把整个链给分成不同的层次去处理, 然后再把这些分离的部分重新连接并固定在一起, 并没有大家所想像的那样那么高深莫测和复杂难懂。

区块链三围链是什么

数据层负责把事实记录下来, 逻辑层负责去运行那些定好的规则, 应用层则是对外提供服务。这三层各自都要维护一个独立的链式结构。真正有含金量的部分在于定期交叉验证。

三层之间并不是那种单方向的传递关系, 而是像经营一家店铺一样, 采购、销售、库存这三本账在每个月末必须要把数字核对整齐, 哪怕只差了一块钱, 也都得想办法把它追回来。

我见到过很多项目都在喊所谓的三围概念, 可是实际上他们只不过是把智能合约还有共识机制以及前端交互这些东西随便地堆砌在一块儿而已, 在那些不同的层级之间根本就没有校验回路这种东西来连接, 这种情况跟单体架构其实并没有太大的实质性区别。

区块链三围链到底是个啥 把数据逻辑应用三层拆开就全明白了

区块链三围链怎么落地

最大的坑其实是性能这个问题。因为三层是各自独立出块的, 所以吞吐量直接降低了一半多, 变成了原来的三分之一, 延迟还翻了一倍。在具体的项目实践当中, 我通常会把数据层的出块操作给合并起来。

同时让逻辑层保持那种高频次的小规模验证模式。而应用层仅仅只做读取操作时的缓存工作。通过这种方式, 可以稍微牺牲一点去中心化程度的特性, 以此换来更高的运行速度。

还有一个点, 就是经常被大家给遗漏掉的密钥管理这事儿。因为这三层结构里, 每一层都各自保管着自己的一套密钥, 所以万一有哪一层被坏人给攻破了, 那么剩下那两层数据能不能保全本就完蛋了, 完整性的问题是悬而未决的。我是怎么做处理这个情况的呢?

我的办法就是用一种分层方式来操作不同阈值的签名, 具体来说是在数据层面上需要五个人签字才能生效, 在逻辑层面上需要三个人签字才能生效,而在应用层面上则需要两个人签字才能生效, 这样一来就把整个攻击的范围给切成了三大块独立的部分。

说实话, 区块链那个所谓的三围链它并不是一种全新的发明, 它其实就是把过去的那个老架构按照三个不同的维度重新进行了一次切割工作。如果切得比较好, 那么整个系统将表现得非常干净、利落;但如果切得不好, 那就纯粹是多维护了两套没有任何必要的工作负担。