主页 > imtoken最新版官网 > 1小时看懂比特币系统——账本和链式存储 | 区块链速读(三)

1小时看懂比特币系统——账本和链式存储 | 区块链速读(三)

imtoken最新版官网 2023-02-20 07:26:23

上一个链接:

1 账本和链​​式存储

接下来说说第二个概念组,账本和链式存储。 首先,我们需要明确一个重要的概念,即比特币体系中不存在货币实体。 它只有账本,不像现金。 我们是的,每个现金上都有现金编号,但是比特币只有一个账本,这个设计其实很合理,因为区块链是分布式的,所以说是在这个节点上进行计算,它消耗了一个大量的计算资源,链上的资源非常宝贵,所以我们只会将最需要的数据记录在链上,用于最需要的计算。

比特币如何存储到硬盘_比特币存储形式_马斯克叫停比特币买车 比特币跳水

所以它只记录链上的账本,连余额都不记录。 那么我们每个人的账户里有多少余额呢,其实这件事情是在链下完成的。 如这张PPT所示,左边是记录在链上的数据,是一笔交易。 比如第一个是小王获得了100元的区块奖励。 现在100块钱的区块奖励就不用愁了。 什么意思,这个后面会解释。 下面我们看小王转5元给小张,小王转6元给小李,小张转3元给小丁,以此类推。 那么有了这样一笔交易的如此完整的记录,我们就可以算出链下每个人的余额了。

比特币如何存储到硬盘_马斯克叫停比特币买车 比特币跳水_比特币存储形式

比如小王先收到100元,然后转出5元,再转出6元,所以是100-5-6,即它的余额是89元。 我们可以通过这个账本计算出他们每一个人的余额,但是这么简单的记账其实是有缺点的,主要有两个缺点,第一个缺点容易被篡改,第二个缺点就是追溯的工作量大。

什么是防篡改? 假设现在我们账本的数据库里有1亿条交易记录,对吧? 然后他偷偷去会计系统调了一个记录,比如小王调到小李柳园,把6改成了8,所以这件事其实很难查到。

也就是说,如果我们简单地这样记录交易,那么第二个就是追溯的繁重工作量。 比如我想查看一笔钱从诞生之初到现在这一刻的轨迹,如果左边只有这么一笔交易记录的话,也不是不可以,但是问题来了就是需要大量的计算。

那么如何解决这两个问题呢? 我们通过一种叫做链式结构的数据结构来解决这两个问题。

马斯克叫停比特币买车 比特币跳水_比特币如何存储到硬盘_比特币存储形式

但是在讲链式结构之前,我们先介绍一个新的概念,这个概念叫做哈希值,我们可以把它理解为任何数据的数据指纹,比如我们可以用Hello world字符串生成一个数据指纹,对于例如 0x06113366。

那么,散列函数具有三个特点。 第一个特点是hash值是定长的,也就是说无论原始数据有多长,都可能是600字节,1M,或者1G,但是得到的hash值的长度通过哈希函数后是固定的。

第二个特点是单向的。 其实我们之前讲私钥和公钥这个概念的时候,其实是把单项也包括进来的,但是当时并没有对这样一个东西的定义。 那我们现在给它一个明确的定义,什么是单向? 也就是说,我们可以用左边的数据推导出右边这样的哈希值,但不能说用右边的哈希值就可以推导出原始数据。 这是一个单一的项目。

第三个特点是,如果原文稍有改动,hash 就会发生变化。 例如,如果我们将 hello world 感叹号更改为句点,那么它会得到一个完全不同的哈希值。 那么这个hash值就因为它的三个特点而有两个作用。 第一个功能是验证,也就是说我们现在得到哈希值,后面我们得到原始数据,然后我们就可以验证这个哈希值是否真的是由数据的原始文本生成的。 第二个是索引,也就是说我们把这个数据传过去之后,生成一个定长的hash,这个hash自然适合做数据索引。 有了hash函数和hash值,我们就可以对比上面有两个漏洞的交易记录方式如何升级?

马斯克叫停比特币买车 比特币跳水_比特币存储形式_比特币如何存储到硬盘

很简单,我们把上一笔交易的hash放在每笔交易中,这样就可以构建一个交易相互关联的交易链,从而解决以上两个问题。

马斯克叫停比特币买车 比特币跳水_比特币如何存储到硬盘_比特币存储形式

首先,因为有了交易链,我们的交易更容易被追溯。 我们可以把哈希作为一个索引,追溯之前的流向,直到钱诞生的那一刻。

其次,我们也解决了容易被篡改的问题。 如果我们在交易链中没有某笔交易的情况下修改某笔交易,那么它的哈希值就会发生变化。 所以当我们追溯整个交易链时,这个被篡改的交易很容易被我们发现。 例如,假设我们这里有三笔交易,它们通过我刚才提到的方式连接起来。 那么如果我们在左边最左边的事务中修改某个数据,它产生的希望会不会不一样呢? 当我们追链时,很容易发现本次交易的内容与下一次交易产生的价值不匹配,很容易判断出这笔交易被篡改了。 通过。

下面我们更直观地看一下链式结构是如何升级刚才提到的简单交易记录方式的。 如图所示,我们将左侧的简单交易记录方式升级为右侧。 这个就是把这个事情考虑进去,让它变成权利的样子,然后它有easy traceability和Tampering difficulty随着这两个属性的增加。我们可以具体看一下。 首先我们给出第一笔交易,即小王获得了100元的区块奖励,交易产生了数据指纹

就是Hash A,我们接下来的交易就是小王给小张转了5块钱,因为这关系到这个小王得到块奖励100块钱。

所以它在交易中有hash a,它连同hash a和交易的原始内容一起生成hash b然后小张转给小丁三元,所以这时候他这个交易的前一笔交易就是交易由我们的哈希b表示,所以他把哈希b放在他的交易中,最后生成一个哈希c。

这样我们要追溯小丁的三元是怎么来的,看hash就可以根据索引找到对应的交易对不对? 然后我们去找上一笔交易的hash值比特币存储形式,然后根据hash b找到交易。

这笔交易之后,然后我们看这笔交易的内容,从中找到hash a,最后我们找到了这笔交易的一个来源,对比左边的交易记录方式,比如右边的显然更容易追踪整个交易链。

比特币如何存储到硬盘_比特币存储形式_马斯克叫停比特币买车 比特币跳水

好了,既然说完了账本和链式存储,我们再回顾一下我们之前说的,比特币对地图的理解,可以看出我们已经经历了这么基本的三个要素,首先我们来说说比特币是什么是硬币吗? 核心要把握的一点是世界银行只有发行货币和记账两个功能。 那么我们先抛开level2分布的概念,把它看成一个只有单节点的记账系统。 我们要知道记账系统有哪些要素,既然是世界银行,首先要知道它的账户系统是怎么样的,所以我们讲了第一组的概念,也是一个很一套简单的账户体系由三个私钥公钥地址组成。 那么其次,作为世界银行,它的数据存储结构是怎样的? 所以我们介绍了账本和链式存储的含义和它的样子。

2 传统单节点记账体系存在的问题

现在,在我们搭建的单节点记账系统的基础上,我们继续向前发展,从单节点记账系统向分布式记账系统演进。 首先我们来看一下传统的单节点记账系统存在的问题。

首先是数据丢失的可能性。 在术语上,我们称之为单点故障,这很容易理解。 比如我们的网站在一台服务器上,对吧? 然后由于各种原因服务器崩溃或硬盘被擦除,我们网站上的数据也丢失了。

第二点技术上是会计系统的数据,它有被篡改的可能,因为它的数据是单一主体控制的,就像我们可以随意修改我们电脑硬盘上的数据,那么维护人员整个系统,以及它对应的一些运维人员,那么他也有权限去修改系统中数据库中的数据,所以从技术上来说,是有被篡改的可能的。

三是整个会计制度的生命周期受制于控制主体的生命周期。 这也很好理解。 我们可以看到有的公司推出了一款产品,早期是风生水起,后来随着公司的衰落,产品也随之衰落,所以一般来说,这个产品的生命周期是不会说的超过公司的生命周期,或者是控制实体的生命周期。

因为这些问题,我们想出了一个解决方案,解决方案就是一句话——

实现自由加入的节点共同维护一个账本。

这句话包含了很多信息,因为它可以拆解为包含五个元素。 第一个要素是目的比特币存储形式,维护一个共同的账本并保证账本的唯一性。 别看后面的内容多复杂,其实就一个目的。 也就是说大家一定要保证有账本,账本是大家认可的。

然后第二个是激励,也就是说像我这样自由加入的节点为什么要参与账本的维护,他能得到什么好处?

第三点是公平性,如何保证参与节点的公平性,也就是说,我付出多少,也许我就会有相应的回报,对吧?

第四点是共识,就是如何保证这个节点必须遵守规则。 因为据说有的节点可能是坏节点,他进来就是要毁掉你整个系统,然后怎么建立一个机制,即使这些坏节点进来作恶,那他们也无法得逞,他们最终必须遵守这一规则。 第五点是可扩展性,就是如何保证记账系统的运行速度与节点无关。

运行速度 这里其实有两点。 第一个是它不能跑得太慢。 比如我有两个节点,那么我必须有100个节点一样的速度,但是不能跑得太快。 一点其实是一个很反人类的东西,但是我后面会讲到,反人类的意思就是,违背我们常识的东西不能跑得太快,也就是说有一万个节点,但是它的运行速度会相当于100个节点的运行速度。 我将在下一讲中更详细地解释这一点。

比特币如何存储到硬盘_马斯克叫停比特币买车 比特币跳水_比特币存储形式

马斯克叫停比特币买车 比特币跳水_比特币如何存储到硬盘_比特币存储形式