写点什么

区块链与 CAP 原理

  • 2017-04-13
  • 本文字数:1078 字

    阅读完需:约 4 分钟

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

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

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

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

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

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

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

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

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

阅读英文原文 The Blockchain and the CAP Theorem

2017-04-13 19:007636
用户头像

发布了 152 篇内容, 共 77.6 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

内存占用与监控方式介绍

地平线开发者

自动驾驶 算法 算法工具链

[大厂实践] Odin:Uber 有状态平台实践

俞凡

大厂实践

详解指标体系建设的三大支柱:指标梳理、管理规范与平台建设

Aloudata

数据分析 指标体系 指标管理 指标平台 指标建设

从“弃用”到“好用”,天润融通AI重塑大型软件企业知识库价值

天润融通

人工智能

人工智能丨当DeepSeek重构软件测试:技术浪潮下的工程师进化论

测试人

人工智能 软件测试 DeepSeek

如何在WPS和Word/Excel中直接使用DeepSeek功能

不在线第一只蜗牛

DeepSeek

TikTok养号需要用什么IP?

Ogcloud

TikTok tiktok运营 tiktok直播 TikTok养号 tiktok矩阵

大数据助力青年创业就业,启信宝获中国青年创业就业基金会感谢信

合合技术团队

数据库 就业 创新创业 青少年 #大数据

2024 年全球 DDoS 攻击态势一图看懂

百度安全

为什么我喜欢在 CSS 中使用 RegEx

伤感汤姆布利柏

唯品会API接口实战指南:商品详情与关键词搜索功能深度解析

代码忍者

唯品会商品API接口

[大厂实践] The Accounter:扩展 Uber 有状态平台操作吞吐量

俞凡

架构 大厂实践

宋泽致“全体员工”的一封信——野火不惧寒风,山花终将灿烂

中烟创新

天润融通智能扩写工具如何让AI客服机器人更高效?

天润融通

人工智能

函数计算×百炼新春活动正式上线!三步赢取蛇年精美好礼

阿里巴巴云原生

阿里云 云原生

外贸企业使用SD-WAN专线的优势

Ogcloud

SD-WAN SD-WAN组网 SDWAN SD-WAN国际专线 国际专线

NocoBase 1.5.0 正式版发布

NocoBase

开源 低代码 零代码 无代码 版本更新

亚马逊API接口实战指南:商品评论与商品详情如何帮你提升运营效率?

代码忍者

亚马逊商品详情API

乐刻运动:基于 RocketMQ + MQTT 实现健身产业数字化升级

阿里巴巴云原生

阿里云 云原生 消息队列

使用Ollama和Botnow本地部署DeepSeek R1模型的对比分析

灵快科技

大语言模型 AI 智能体 ollama Botnow DeepSeek

DeepSeek-R1 来了,如何从 OpenAI 平滑迁移到 DeepSeek

阿里巴巴云原生

阿里云 云原生

无人机任务管理:用数字孪生打造稳定高效的MMC

DevOps和数字孪生

基于 API 网关践行 API First 开发实践

阿里巴巴云原生

阿里云 云原生 API

深入剖析DevOps于项目交付场景的专业应用策略

不在线第一只蜗牛

DevOps 运维 低代码

别了,代码拼接苦,一键完成接口开发

飞算JavaAI开发助手

飞算JavaAI 如何实现自动化细分接口,程序员从此告别繁琐,效率飙升!

飞算JavaAI开发助手

区块链与CAP原理_语言 & 开发_Andrew Morgan_InfoQ精选文章