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

前言

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

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

分布式

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

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

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

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

拜占庭将军

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

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

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

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

去中心化网络

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

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

分布式账本

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

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

共识机制

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

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

去中心化存储

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

推荐阅读

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

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

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

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

深入了解异地多活 - 掘金

02.K8S架构详解 - 掘金

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

相关推荐
桦说编程5 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
舒一笑6 小时前
大模型时代的程序员成长悖论:如何在AI辅助下不失去竞争力
后端·程序员·掘金技术征文
lang201509286 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
小羊在睡觉6 小时前
golang定时器
开发语言·后端·golang
用户21411832636027 小时前
手把手教你在魔搭跑通 DeepSeek-OCR!光学压缩 + MoE 解码,97% 精度还省 10-20 倍 token
后端
追逐时光者7 小时前
一个基于 .NET 开源、功能强大的分布式微服务开发框架
后端·.net
刘一说7 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端
壹佰大多7 小时前
【spring如何扫描一个路径下被注解修饰的类】
java·后端·spring
间彧8 小时前
Java双亲委派模型的具体实现原理是什么?
后端
间彧8 小时前
Java类的加载过程
后端