QQ登录

只需一步,快速开始

微信登录,快人一步

扫码登录更安全

登录 | 注册帐号 | 找回密码

茂名论坛

  • 关注抖音号
  • 关注公众号
  • 下载APP
  • 扫码关注抖音号
  • 扫码关注公众号
  • 扫码关注APP
快捷导航
查看: 5115|回复: 0

区块链开发

[复制链接]
发表于 2020-11-10 14:01 | 显示全部楼层 |阅读模式 | 来自湖北
分布式系统一个非常重要的作用就是资源共享(Resources sharing)。当然广义上的资源包括了计算、存储资源和数据等等,我们不考虑未来区块链开发是否能演变成计算资源共享的技术(毕竟现阶段以太坊也只是高度冗余的图灵完备计算机),但数据共享这一点确实是区块链和传统分布式系统的相同之处。
进一步地,区块工程院甚至做到了极致:所有节点都共享全量数据。某些定义里面提到的“分布式账本”,其实就是指的这个意思。需要指出,还有些说法谈到区块链实现了“数据共享”和“价值传递”,后者其实本质上也是在互信场景下的某种特殊数据共享,作为比特币每个节点所共享的数据单位,每个区块实际上就可以看做是转账记录的集合(加上一些附加信息)。当然如何保证在不可信场景下的数据共享,这就是区块链的不同之处了,后面会提到。
如果仅仅是为了数据共享,尤其是单个业务主体内部的数据共享,大可不必采用区块链,传统分布式架构的实现有更好的性能更低的开销,至于数据安全问题,也可以用一些灾备技术。
首先,传统数据库仍然存在一个管理员的概念,无论是分布式架构还是集中式架构。而区块链中对数据的操作则不由单一主体控制,理论上来说区块链就是一个任何节点都能写入的数据库(这里我们先忽略联盟链中的CA等元素),至于写入能否成功当然也受共识机制的影响(不管能不能成功,至少它有写入的权限了)。
从每个节点的写入操作来看,不同于传统数据库具有增加、删除、更改和查找四个操作,区块链放弃了“删改”,仅保留了“增查”两个操作(实际上删和改是通过增来实现的),这样的好处是除了查找之外的所有操作都能留下记录,并且通过哈希函数保证了所有历史数据严格按照时间顺序记录(多节点数据写入的时序由共识机制保证),这就是我们经常提到的可溯源特性。
说到共识,由于多方写入操作的存在,整个系统的共识机制也变得更为复杂。同时多个节点操作变得更加难以控制,类似于Raft(Paxos)这样的经典共识机制并不能满足拜占庭容错(Byzantine-Fault Tolerant )。一些区块链(主要是联盟链)受到传统共识机制的启发,采用了基于领袖的策略(Leader-based):先选出一个领袖,再由领袖来提出区块,剩下的人达成一致,这类算法以PBFT为代表;而比特币的做法则另辟蹊径:干脆不要领袖,所有人都能出块,也别指望马上就能达成一致,最后最长的那个链就算是大家达成一致的结果。实际上这种机制是放弃了强一致性,仅仅保证最终一致性(听起来好像很弱的样子,但可怕的是这个系统已经运行了十一年还没出过什么大问题)。共识就不展开讲了,这里只是想强调由于多方维护的原因,区块链共识机制也和传统分布式系统有了一些区别。
简单地总结一下,多方维护的意思是,区块链中所有的参与方(或者叫节点,注意这里我们还将节点和参与方等价)都能查找和写入数据,并且写入操作只能以增加新记录的方式进行,这样的特性传统分布式系统并不能完全满足(或者需要一些改动)。

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

友情链接:
返回顶部
返回列表 快速回复