区块链设计模式系列二:本地优先

603 阅读4分钟

继上一篇《区块链设计模式系列之一:对等网络》后,志伟续写了系列第二篇:本地优先。本文将介绍区块链系统节点间的一种本地优先的关系。PS. 在上周五年会上,溪塔科技 CTO 志伟和 CIO Rain 共同表演了一曲琴笛合奏《笑傲江湖》,接下来我们将此系列定为“笑傲区块链江湖”系列,纪念溪塔科技 2020 年年会的高光时刻。希望大家喜欢~

国产自主开源项目 CITA-Cloud :GitHub 地址(感谢点赞❤️) & 指导文档

溪塔科技 CTO/CIO 琴笛合奏《笑傲江湖》

本地优先 (Local First),指的是类似 google doc 这样一种应用,网络连接正常的时候可以多人协同编辑一份文档;而网络中断的情况下,每个参与者还是可以正常编辑文档,软件的功能基本不受影响,只是期间看不到其他协作者的修改;等到网络连接恢复,会自动同步并合并多个参与者期间对文档的修改。

对于开发者来说,还有一个更熟悉的例子,那就是 git 。Local First 有很多优势:

  • 可用性高,离线状态也可以继续使用;
  • 安全,本地保存数据;
  • 隐私,只传递必要的交互数据;

更详细的描述可以参见: 不要在云上保存你的数据(一):本地优先的七个理念 不要在云上保存你的数据(二):未来软件发展途径

区块链系统的节点之间也是一种本地优先的关系。

  • 区块链设计模式系列(一)对等网络里提到,区块链的每个节点地位是对等的,每个节点都可以处理用户的请求,也都可以出块。因此,节点需要处理的内容,不管是交易,还是区块,都有两个来源:本地的,来自其他节点的。
  • 对于来自其他节点的内容,出于安全的考虑需要做严格的合法性检查。但是检查通过之后,后续处理过程,跟本地的数据处理是一样的。这里的检查可能是依赖本地状态的,跟本地状态有冲突的数据都会被抛弃。整体上有点 merge 操作的味道。
  • 节点间似断似连。在共识阶段之前,比如交易池和未确认的链,节点都是以本地状态为基础来操作的,可以说各个节点在不停的分叉。然后通过 merge 来自其他节点的内容,在一定的时间延迟之后,趋于一致。

架构示意图:

实现上主要难点在于交易和区块链管理系统需要进行类似 merge 的操作,来合并源自本地和源自其他节点的操作。因此要实现成一种类似版本控制软件的架构。

调研了现有的版本控制软件,但是其实现层次都比较低,无法感知到比较高层的应用语义,也无法简单的定制自动合并策略。

参见 rink1969.github.io/darcs-vs-gi…

原文地址:欢迎移步CITAHub 技术论坛讨论

国产自主云原生区块链 CITA-Cloud

以技术为先驱,100% 自研底层,国产自主云原生区块链 CITA-Cloud 是一个以区块链技术为基础,融合云原生技术的柔性集成开放平台。平台定位于可信连接不同的业务系统,包括传统应用,行业应用,云和物联网设备。 作为一个完整的解决方案,CITA-Cloud 系统架构除了区块链底层,还包括中间件层面的各种服务,以及上层的数字资产管理层。支撑企业用户在各种不同的基础设施上直接构建各种行业解决方案的能力。

技术文档: cita-cloud-docs.readthedocs.io

项目官网: www.citahub.com

交流论坛: talk.citahub.com

搜公众号 CITAHub 开发者社区,加微信技术交流群。

为国产自主项目点赞👇👇👇

github.com/cita-cloud/…

作者简介

宁志伟 溪塔科技首席架构师

首个微服务架构区块链 CITA 首席架构师,区块链+云原生框架 CITA-Cloud 设计者。前阿里巴巴、华为技术专家,超过 10 年分布式系统架构设计,编程语言和虚拟机方面工作经验。

GitHub : github.com/rink1969

Blog : rink1969.github.io/