主页 > 安卓版imtoken下载 > 从架构师的角度解读区块链技术?

从架构师的角度解读区块链技术?

安卓版imtoken下载 2023-03-29 07:44:24

问题指南

1、分布式存储要解决哪三个基本问题?

2、使用P2P协议进行节点间数据传输的两个主要作用是什么?

3、如果你是架构师,你会如何设计发行货币的系统?

4.1 交易是属于您自己的,没有被他人拿走吗? 作为架构师,您如何解决这个问题?

808比特币创始人颜万卫 炮制比特币风险大_比特币系统的强一致性_比特币期货对比特币影响

准备

区块链不是一种技术实现,而是一种系统架构设计,利用一系列的技术组合来完成去中心化的数据存储。 比特币融合了金融、钱币学、博弈学,甚至一定程度的区块链哲学思想,用于电子货币的发行、运营和交易。 在学习区块链之前,有一些基础知识是需要提前掌握的。 具体的技术我后面就不描述了,只是从这个技术解决什么问题,为什么用这个技术的角度来描述。

比特币要做什么?

如果你是架构师,要做系统架构,首先要搞清楚这个系统要做什么? 你想解决什么问题? 带着这个问题分析,设计系统的整体架构。 比特币也是如此。 首先搞清楚比特币要做什么,要解决什么问题? 然后带着这些问题来分析比特币的技术实现。

如果用一句话来形容比特币要做的事情,可以这样形容:做一个去中心化的电子货币发行和交易系统。 这里有三个关键字:

1.权力下放

2. 电子货币发行

3. 电子货币交易

分析与设计

本章针对比特币、去中心化、电子货币发行、货币交易这三个关键词进行分析设计。

分散的

当今世界上所有的货币交易都是由第三方信任的金融机构处理的。 任何人都无法访问这个第三方机构集中存储的数据。 从理论上讲,如果这个金融机构存在欺诈或破产,那么这个机构中存储的货币,以及所做的交易都会面临风险。 当然,比特币的去中心化并不是因为担心这个风险,而是因为根本不需要这个第三方机构。 这也是区块链的强大颠覆之一。 任何需要由第三方可信机构安全存储和处理的数据,都可以去中心化存储,所有人都可以访问。

从技术角度,如何实现去中心化?

集中对应分配,分散就是分配。 将原本存储在第三方机构和中心化存储的数据进行分布式存储。

分布式存储要解决的三个基本问题

一、网络结构

2.数据不可篡改

3. 最终一致性

网络结构

去中心化分布式存储是指整个发行的电子货币和货币交易数据由不同机构和个人的数千台计算机共同存储,共同维护同一份数据。 相同的数据被认为是最终正确的数据。 任何个人篡改自己的数据是没有意义的比特币系统的强一致性,存储的数据是所有人都可以访问的。

如果你是架构师,你会选择什么样的网络结构来实现这种分布式存储? 一种方式是使用类似于Hadoop中HDFS的方式,由一个中心节点NameNode协调访问,但这种方式会带来单点风险,破坏中心节点,整个系统将无法访问。 或者使用Cassandra的去中心化投票机制维护整个集群的状态,但是这种方式在全局开放部署中会导致完全不收敛。

因此,比特币采用更简单直接的方式,使用P2P协议来维护整个比特币网络集群。 它不需要中心节点来协调节点之间的通信,也不需要所有机器投票来维护集群状态。 取而代之的是,节点之间的数据传输是通过 P2P 协议进行的。 任何节点都可以在不影响比特币网络集群的情况下随时加入或离开比特币网络集群,也无需修复集群中的故障机器。

使用P2P协议在节点间传输数据主要有两个功能:

一种。 将要存储的数据广播到所有节点进行存储。

b. 查询全网集群所有节点的最新数据。 如果自己节点的数据与大部分节点的数据不一致,则更新自己的数据与大多数节点存储的数据一致。

比特币是去中心化存储,最大的风险是整个比特币网络集群被破坏,全网存储的​​数据被篡改。 但是上面的第二个功能点可以有效的防范这个风险。 由于系统会自动更新到整个集群中大多数节点存储的相同数据,要篡改数据,需要同时篡改全网一半以上的数据。 这不是做不到,而是比特币采用了区块链的方式和利益博弈机制。 当你有这个能力的时候,你就不需要在这么低的投入产出比上乱动了。 在数据不变性部分有详细描述。

通过一张图看一下比特币网络结构的运行:

1.png

Jack向服务器A提交某笔交易数据,服务器A验证数据的合法性并存入自己的数据库,同时将交易数据点对点传输给所有的B、C、D、E在节点上。 A 与所有其他 B、C、D 和 E 节点保持点对点通信,自动更新到集群中大多数节点维护的相同数据。 如果B、C、D三台服务器保存的数据相同,但与A、E不一致,则A、E自动更新为与B、C、D相同的数据。因此,Jack的交易需要等待比特币网络集群中的所有节点接收到并认为合法存储后,才认为交易成功完成。 当然,现实中不需要等待所有节点确认完成。 通常,只有少数服务器需要确认交易完成才能完成交易,因为每个服务器都维护着自己和整个网络集群的数据状态。 当整个簇一致时,此时概率一致。 在最终一致性部分,我们将继续描述这种网络结构下的数据存储。

数据不可篡改

在设计好比特币系统的网络结构后,需要考虑数据不可篡改的修改,因为这种数据存储是去中心化的,任何人都可以访问,所以很容易被篡改,如上一节。 在网络结构的运行机制下,为了篡改数据,必须同时更改网络集群上一半以上的节点数据。 如果每个节点没有安全保护机制,很容易同时修改网络集群一半以上节点的数据。

先想一想,如果你是架构师,你会如何设计这种保护机制来保证存储的数据不可篡改? 传统上,我们将交易数据逐条记录在数据库表中,数据库放在第三方机构的服务器上。 该第三方机构对服务器所在的网络、服务器、数据库设置了严格的访问权限。 限制用于数据安全。 但如何在没有组织或个人控制系统访问权限的去中心化环境中保护数据安全呢?

一种方式是每个人对插入的数据进行哈希处理并用自己的密钥签名比特币系统的强一致性,然后附上自己的公钥。 系统可以使用签名和公钥来验证插入的数据是否被修改。 如果将数据库表比作账本,表中的每条数据都被认为是账本中记录的每一笔交易。 这里还有两个问题。 首先,不能随意插入数据。 如果你没有比特币,但仍然向某人插入数据传输,系统需要发现它是非法的并拒绝插入请求。 其次,除了不能随意插入和修改外,还要防止数据被删除。 上述对每条记录的签名并不能防止恶意删除。 带着这些问题,如果你是架构师,你会做什么样的架构设计来达到这些要求?

这里开始引出区块链的设计。 上面将数据库表比作分类帐。 如果系统中只有一张表,即一个账本,那么这个账本中的数据是很容易被更改的。 如果系统每隔10分钟自动生成一张表,即生成一个新的账本,在新的账本中记录新的交易记录。 而创建这个新的账本需要一定的条件,使用当前账本的序号,上一个账本所有记录的hash值,系统时间戳(10分钟一个维度),然后找一个随机值,加上几个数据一起哈希后,满足一定的条件,比如开头有多少位是0,那么系统就会收到这个新的账本。 生成的新账本通过账本序号跟在上一个账本后面,形成链式结构的账本。 新账本依赖于上一个账本的数据和当前系统时间戳,所以新账本一旦生成后,历史账本的数据是不可篡改的,因为一旦被篡改,就不会再匹配到历史账本了。后续账本,账本将被销毁。 它将根据上一节描述的网络结构由网络集群中的大多数节点自动更新和维护。 同一个账本。

2.png

3.png

链式账本一旦形成,就无法更改某个历史账本中的数据。 如果某个历史账本发生变化,则后续的所有账本都需要进行修改,但是每个账本都是根据当前的系统时间戳在接收前验证哈希值是否满足条件,所以不可能篡改该账本的数据历史账本。 能做的就是投入非常高的成本再建一个比特币集群。 如果这个簇超过了当前簇,数据会自动以新构建的簇为准。 这意味着多个账本的相互保护机制比单个账本更难被篡改。 将在后续的货币发行和交易中进行说明。 当你有能力重建一个新的比特币网络集群来攻击和篡改数据时,你获得的收益将远低于你投入的成本。

为了防止前一个账本的数据被篡改,生成一个新的账本需要依赖前一个账本中所有交易记录的哈希值,这样一旦前一个账本的数据发生变化,就不会对应到新分类帐。 然而,计算账本中所有交易记录的哈希值是一项耗时的计算,因此比特币使用默克尔树对某个账本中的所有交易记录进行哈希计算。 主要解决账本中交易记录的哈希计算效率问题。 如下图所示,HA,HB...HP是具体的交易记录。 每两个相邻的交易记录向上形成一个哈希值,然后与相邻的节点形成一个哈希值,直到所有的交易记录都形成在树的根部。 唯一的哈希值。

4.png

上面描述的网络结构和本节描述的账本链结构本质上是用来解决去中心化数据安全存储的问题。

最终一致性

分布式存储绕不开CAP理论,比特币也一样。 比特币采用P2P协议进行节点间的数据传输,摒弃了CAP中的Consistency,采用了AP的两个维度。 如果放弃Consistency这个属性,那么拜占庭将军问题就出现了,那么多的节点如何实现数据的一致性。 拜占庭军队由小分队组成,每个小分队都有一名统帅。 将领们通过命令士兵传​​达了一系列的行动,但其中有一些叛徒,如果他们故意违反命令怎么办?

分布式存储系统同拜占庭将军问题()一样,很难做到一致性,尤其是在比特币系统集群的开放全球部署中。 因此,比特币放弃了强一致性,通过P2P点对点通信,没有中心节点,整个集群中的服务器故障、离开、加入集群都不会影响整个集群。

上一节描述了账本生成的基本机制,利用当前账本的序号,上一个账本所有记录的哈希值,系统时间戳(每个维度10分钟),然后找一个随机值,几个数据Hash相加后,满足一定的条件。 比如一开始有多少位是0,那么系统就会收到这个新的账本。 这是这个集群所有节点的共识。 所有节点只接收这样的账本,寻找这个随机值是需要巨大的计算能力的。 在比特币中,它被称为工作量证明(POW)挖掘。

当每 10 分钟找到这个值时,就会生成一个新的分类帐。 但是网络集群都是开放的,可能会同时发现两个值,在集群的少数节点中生成两个账本。 针对这种情况,比特币系统设计如下:整个网络集群采用少数服从多数的原则,集群中多数节点采用哪个账本,少数节点服从多数节点,以及未被多数人采纳的分类账将被丢弃以实现最终一致性。

电子货币发行

在去中心化方面,主要描述了一个去中心化的系统,如何实现数据的安全存储而不被篡改。 主要采用P2P网络结构+区块链结构来解决数据的安全存储。 但是对于一个货币来说,还需要解决一个货币的问题,怎么发,发给谁? 如何让比特币系统让所有人自发运行? 货币的发行需要公平、公开、公正,不能将货币发行给第三方机构。 任何满足一定条件的人都可以获得发行的货币。 想一想,如果你是架构师,你会如何设计一个发行货币的系统?

本质上,比特币系统本身可以找到一个随机值并生成一个新的账本。 但比特币结合了发行货币和寻找新账本背后的计算能力。 寻找新的账本需要计算能力。 谁找到一个满足新账本条件的随机值,谁就会消耗大量的算力。 一旦新分类账被系统接受,系统将自动在新分类账中记录一个条目。 给他转账一定数量的比特币,完成货币发行。

比特币的运行必须依赖于新账本的产生,谁找到新账本就可以获得系统自动生成的转账记录,即获得一定数量的比特币,这就是挖矿。 这也激励人们不断投入挖矿,不断挖掘新书,通过激励来维持比特币系统的运行。

这里体现设计天才的地方在于,比特币集金融、货币、博弈科学于一体,通过系统形成一定的运行机制,激励人们使系统自发运行。

电子货币交易

正如上一节电子货币发行所述,谁通过算力找到新的账本,系统就会自动记账,并向谁转出一定数量的比特币,谁也将获得比特币。 那么如何确认记录的交易是属于自己的,没有被他人拿走呢? 作为架构师,您如何解决这个问题?

比特币使用非对称加密技术来操作用户的账户。 公钥是用户的帐号。 谁发现了新账本,系统就会自动在新账本发现者的公钥账户中记录一笔特定数量的比特币。 . 当用户想要消费比特币时,需要用私钥进行签名。 系统会使用账号即公钥来验证签名是否正确,并根据用户的账号从历史交易中计算出当前账户中的真实金额,以确保用户操作的资金均在账户实际金额以内。 这里的设计有两个关键点:

5.png

这种机制可以保证只有自己的账户才能操作,结合P2P网络结构下的最终一致性原则,以及账本的链式结构,攻击者需要建立一个超过目前比特币网络的集群,并且算力超过当前集群下只能创建另一个账本,只能更改自己的账户,所以这种攻击的输入输出回报率极低,而对于比特币系统来说,你已经建立了一个庞大的集群和凭借强大的算力,即使攻击成功,也能获得一部分收益,进而让比特币系统更加健壮。

区块链应用

比特币系统解决了货币交易的去中心化安全存储、货币发行、账户安全等问题后,构建了当前的比特币电子虚拟货币体系。 比特币使用的区块链被认为是一种颠覆性的技术,一种革命性的技术,那么它的颠覆性体现在哪里呢? 这不是技术上的颠覆,而是思想和商业运作模式的革命。 例如,一个国家从中央集权到民主的转变,对于国家和社会来说都是一场革命性的变革。 区块链技术带来两个基本功能:

1. 去中心化数据存储

2.保证账户安全

理论上,可以革命性地改变原本需要第三方机构提供的数据服务,以去中心化的方式提供服务。 例如,比特币可以替代各国的法定货币。 区块链的这一特性也将导致各行业商业模式的颠覆性变化。

原版的: