认识区块链(五):区块链的底层实现之分布式

前言

在认识区块链系列的前几篇中,我们已经介绍了区块链的作用、发展、解决了什么问题、以及底层实现之密码学等等,这篇博客主要围绕的是区块链的另一个底层技术--分布式。

分布式技术是区块链的核心之一,正是因为区块链分布式的多结点,才实现了去中心化、安全可靠等特性。

分布式

在传统的中心化系统中,分布式系统的控制权通常以一个结点或者几个结点掌控(Leader或者主),这种中心化架构容易称为攻击的目标,并且存在故障的风险(Leader挂掉了选出新的主也需要时间)。

而区块链的分布式技术则能够有效解决这个问题。因为区块链是分布式记账系统,并且每个结点之间的地位是等同的,具有更好的容错性,并且数据难以篡改,这是传统分布式系统无法媲美的地方。

关于传统的分布式系统特性,可以在笔者的这篇博客中你真的理解分布式理论吗? - 掘金窥见一斑,这里就不再赘述。

那么,区块链是如何实现分布式的呢?

拜占庭将军

传统的分布式系统在设计时,只会考虑系统中存在的故障,比如结点宕机、网络故障等等,但不存在恶意攻击情况。所以采用的都是非拜占庭的共识机制(Raft)。

"拜占庭将军"是一个解决分布式一致性问题的虚拟模型,拜占庭是罗马的首都,因为地域宽广,将军需要通过信使传递消息,达成一致的决定。但由于将军中可能存在叛徒,这些叛变的将军可能会将错误的信息发出去,以干扰大家的决策。拜占庭问题

这个故事映射到计算机中,将军就成了计算机,而信使则是网络通信系统。系统中的成员计算机可能出错二发送错误的信息,用于传递信息的通讯网络也可能导致信息损坏,使得最终得出的策略出错。

区块链在分布式设计上采用了拜占庭容错机制,在完全开放的环境下,也能够实现数据的一致性和安全性。

去中心化网络

区块链是建立在去中心化网络之上的。在这种网络中,不存在单一的中心节点,而是由众多的节点共同维护和管理整个系统,每个节点都有完整的数据副本,并且可以参与到网络的各项决策和操作中去。

比如比特币的网络就是一个典型的去中心化的网络,每个人都可以成为网络中的一个结点,参与到整个区块链的决策中。

分布式账本

区块链使用分布式账本来记录和存储所有的交易细节及具体数据,这个账本是由整个系统中的所有节点进行维护的,每个节点都会有一个完整的数据副本,这就使得想要篡改账本十分困难,每台机器都可以验证、访问这些账本中的数据。

以以太坊为例,每一个以太坊中的机器都有一个完整的占本。

共识机制

共识机制解决了分布式环境下数据一致性的问题,它确保网络中的节点就账本的状态达成一致意见。常见的共识机制包括工作量证明(Proof of Work,PoW)、权益证明(Proof of Stake,PoS)和权威共识等。共识机制的目标是确保网络的安全性、防止双重支付和保持账本的一致性。

例如比特币中为了减慢生成区块的速度,大约十分钟生成一个新的区块,就引入了工作量证明机制,矿工需要经过繁琐的运算来计算出具体的工作量,从而减慢了生成区块的速度。

去中心化存储

去中心化存储其实本质上是一种冗余的思想,通过将数据存多份(可能是哈希、切片、随机等等方式),来保证某些节点被攻击、或者发生故障的情况下,依旧可以正常提供服务。

推荐阅读

当说到云原生时,我们究竟在谈论什么? - 掘金

不太熟悉Git? 不妨看看这篇文章 - 掘金

一文搞定常见分布式事务实现 - 掘金

你真的理解分布式理论吗? - 掘金

深入了解异地多活 - 掘金

02.K8S架构详解 - 掘金

01.你为什么需要学习K8S - 掘金

相关推荐
未若君雅裁9 分钟前
Spring Boot 自动配置原理与常用注解
java·spring boot·后端
Xiacqi117 分钟前
Java数据库连接--JDBC--DRUID
数据库·后端
浮游本尊17 分钟前
用结构化 Prompt 让大模型「干活」:以数据库巡检告警建议生成为例
后端
snakeshe101022 分钟前
SpringBoot 多人协作平台实战(8):Cookie 与登录状态维持
后端
代码北人生30 分钟前
后端工程师开始用 Claude Code 了,Stripe 4天完成了本来要10个工程师周的迁移
后端·claude
AI绘画哇哒哒1 小时前
Agent三种思考模式深度解析:CoT/ReAct/Plan-and-Execute,小白程序员必看,助你轻松掌握大模型精髓(收藏版)
人工智能·学习·ai·程序员·大模型·产品经理·转行
小江的记录本1 小时前
【Java基础】核心关键字:final、static、volatile、synchronized、transient(附《思维导图》+《面试高频考点清单》)
java·前端·数据结构·后端·ai·面试·ai编程
fliter1 小时前
Rust 泛型 vs Java 泛型:它们看起来相似,但骨子里截然不同
后端
文心快码BaiduComate2 小时前
520,Comate Mission模式跨越界限,和你达成最「深」联动
前端·数据库·后端