区块链与CAP原理

微软首席架构师Yaron Goland最近发表了一篇文章,讲述了一个区块链客户端如何可以被实现为AP的或CP的,这取决于它的实现方式。具体是要可以配置在一个事务结束之后必须有多少个区块收到这个事务,才认为它可以被接受了。在事务之后接收到它的区块越多,它就越可能获得系统范围内的共识,即一致性。

一个区块链就是一套点对点的分布式数据库,没有中心节点可以决定数据正确与否。Goland讲述到在诸如比特币之类的数字货币等场景下,这个问题尤其会造成巨大的困扰。可能用户以为他已经用真实的货币换到了比特币,可是等了一会他去查看自己的钱包时,却发现比特币不翼而飞了。

可是区块链只是一系列的不可变的数据块,而且非常可能每个节点都各自构建起一套不同的事务历史链。这样的背离叫做分枝,也是Goland的例子中一致性问题的根源所在。他解释了区块链是如何用一致性算法解决这个问题的,最终会有绝大多数达成一致,抛弃掉某些分枝。

“这是最终一致性的一个非常经典的例子。两个相互冲突的值被记录下来,系统在内部各节点之间进行通信,最终使用一种冲突解决协议来选出优胜者。”

Goland指出,选择是否等待区块链最终变成一致的,这决定了客户端是AP的还是CP的。要成为AP的,一旦事个事务被加入到区块链中,客户端就要马上接受它。这样,就没有对其它节点的依赖,并且可以使数据可用,但这里有个风险,就是别的节点有可能会拒绝这个事务,因而这样做牺牲了一致性。如果想要成为CP的,客户端就应该在区块链针对某个事务达成了一致决议之后,才接受它。这样做的负面影响在于,数据的确一致了,但在有网络分区问题存在时却可能会阻碍一致性的达成,从而使数据不可用。

关于如何等待一个事务达成系统内一致性的问题,Goland,总结起来就是:“直到至少有X个区块同意之后,才能认为某件事发生了”。这就意味着一个事务发生之后,客户端必须等待,直到再有X个区块也收到了,才能接受它。

Yanos还强调,让客户端在这个方面成为可配置的,这样做并不违反CAP原理。因为这样的配置方法是在可用性和一致性之间做出的权衡——是不可能同时拥有这两种特性的:

“所以我们上面解释的并不是在说比特币如何能既是AP的又是CP的。我们上面只是在讲述如何通过完全不同的CAP权衡来构建两种完全不同的系统,方法就是除了客户端之外,让比特币的所有部分都保持相同。”

总之,Goland证明了尽管区块链是一种点对点的模型,强一致性的需求仍然是可以被满足的。这对于比特币之类的数字货币来说尤其重要,因为这种权衡意味着用户可以信任事务的结果。

本文转自d1net(转载)

时间: 2024-08-02 11:48:02

区块链与CAP原理的相关文章

《Node.js区块链开发》导读

Preface 前 言 本书原名<Nodejs开发加密货币>,大部分已经通过网络免费分享(网络上仍有原文),正式出版的时候改成了现在的名字,部分章节也做了调整.写作本书的时候,"区块链"这个称呼并不流行,但讨论的内容实际上就是区块链技术.就在本书整理出版的时候,国家发布了<中国区块链技术和应用发展白皮书>,整个社区也接纳了"区块链"这个称谓,因此改为现在的名字. "每一件与众不同的绝世好东西,其实都是以无比寂寞的勤奋为前提的,要么是

《Node.js区块链开发》一导读

前 言 本书原名<Nodejs开发加密货币>,大部分已经通过网络免费分享(网络上仍有原文),正式出版的时候改成了现在的名字,部分章节也做了调整.写作本书的时候,"区块链"这个称呼并不流行,但讨论的内容实际上就是区块链技术.就在本书整理出版的时候,国家发布了<中国区块链技术和应用发展白皮书>,整个社区也接纳了"区块链"这个称谓,因此改为现在的名字. "每一件与众不同的绝世好东西,其实都是以无比寂寞的勤奋为前提的,要么是血,要么是汗,要

火币网徐宝龙谈大数据网络攻防与区块链

文章讲的是火币网徐宝龙谈大数据网络攻防与区块链,2017年5月11日-13日,2017中国数据库技术大会于北京国际会议中心盛大开幕.作为国内最受关注的数据库技术大会,本届大会以"数据驱动·价值发现"为主题,汇集多个领域的百余位专家,与大家共同打造一场以数据为驱动力,为企业进行价值创造的技术盛会. 在13日下午的区块链与大数据专场中,来自火币网的区块链投研中心的负责人徐宝龙为大家带来了主题演讲<大数据.网络攻防与区块链>. ▲火币网区块链研究中心负责人 徐宝龙 日前近百个国家

潜心研究密码学二十年,“新愚公”揭秘区块链密码

区块链的数学原理来源于拜占庭将军问题,但其实这在中国古代军事中,一道虎符即可解决.但目前即使火热朝天的区块链,就交易结算而言,要建立这样安全且高效的信任机制,还需克服许多成本和效率的问题. 为什么现在区块链每秒只能解决几笔交易? 中国密码学学会会员.前海梦创产业合伙人孙海东表示,我们知道区块链技术是2009年发明的比特币的底层技术,但更深一层地说,区块链技术是因为密码学的成长才会产生的."换句话说,今天区块链技术所用的密码学是二十年前的密码学成果,在信息技术.软件技术和密码技术经过二十年的演进后

解构区块链:这是对区块链及其技术应用最详尽的解说 | 硬创公开课

随着某些领域的应用陆续浮出,区块链技术的发展又有了新的进展.但本行业的许多细节并未为社区外的人有较多的了解,包括开发进展和应用情况.这一期公开课,雷锋网邀请到众安保险旗下众安科技CTO李雪峰来讲解! 李雪峰,众安科技CTO,曾就职于摩根大通.亚马逊.东南融通.阿里巴巴,英属哥伦比亚大学计算机软件.金融学和工商管理硕士. 以下是公开课实录: 雷锋网:众安科技将针对金融这一大领域进行技术输出,那么整个金融领域的区块链应用场景来说,主要是应用了区块链的哪些技术? 李雪峰:区块链的技术特点我认为是:数据

《区块链原理、设计与应用》一导读

前 言 区块链和机器学习被誉为未来十年内最有可能提高人类社会生产力的两大创新科技.如果说机器学习的兴起依赖于新型芯片技术的发展,那么区块链技术的出现,则是来自商业.金融.信息.安全等多个领域众多科技成果和业务创新的共同推动. 比特币网络自横空出世,以前所未有的新型理念支持了前所未有的交易模式:以太坊项目站在前人肩膀上,引入图灵完备的智能合约机制,进一步释放了区块链技术的应用威力:众多商业.科技巨头,集合来自大型企业的应用需求和最先进的技术成果,打造出支持权限管理的联盟式分布式账本平台--超级账本

ICO与区块链:剖析ICO的金融与技术原理

技术推动金融创新:ICO的来龙去脉 在讲ICO之前,我先讲这样一个故事. 有一个人开了一间赌场,每个赌徒要来赌场玩,必须先换一些筹码,才能参与赌场内的赌局.赌场内所有赌局都是实时利用筹码结算的.这间赌场服务特别好,赌具特别好,入场费收得也非常低,总之一切都特别好,于是越来越多的赌徒都慕名而来,跑到这间赌场来玩,赌局额度也越来越大.自然,这就需要更多的筹码来确保赌场的顺利运营.但是,这间赌场的筹码是用一种特殊的金属.特殊的工艺制造的,这些赌具只能用这种筹码玩.赌场一开始的时候造了一万个,以后再也造

《区块链原理、设计与应用》一第2章 核心技术概览

第2章 核心技术概览 运用之妙夺造化,存乎一心胜天工. 有人可能会遇到这样的问题: 跨境商贸合作中签订的合同,怎么确保对方能严格遵守和及时执行? 酒店宣称刚打捞上来的三文鱼,怎么追踪捕捞和运输过程中的时间和卫生? 现代数字世界里,怎么证明你是谁?怎么证明某个资产属于你? 经典囚徒困境中的两个人,怎样才能达成利益的最大化? 宇宙不同文明之间的"黑暗森林"猜疑链,有没有可能被彻底打破? 这些看似很难解决的问题,在区块链的世界里已经有了初步的答案.本章将带领大家探索区块链的核心技术,包括其定

《区块链原理、设计与应用》一2.1 定义与原理

2.1 定义与原理 1.?定义 公认的最早关于区块链的描述性文献是中本聪所撰写的文章<Bitcoin:A Peer-to Peer Electronic Cach System>,但该文献重点在于讨论比特币系统,实际上并没有明确提出区块链的定义和概念,在其中指出,区块链是用于记录比特币交易账目历史的数据结构. 另外,Wikipedia 上给出的定义中,将区块链类比为一种分布式数据库技术,通过维护数据块的链式结构,可以维持持续增长的.不可篡改的数据记录. 区块链技术最早的应用出现在比特币项目中.