主页 > imtoken苹果版教程 > 比特币和区块链原理学习

比特币和区块链原理学习

imtoken苹果版教程 2023-06-12 05:52:17

2018年春节过后,区块链技术一下子火了起来。 我对这项技术也很感兴趣,所以想研究一下区块链技术的原理,看看区块链背后有哪些技术值得研究。 由于本人缺乏实际的开发经验和使用经验,文章中难免会有一些看不懂的地方。 这篇文章的主要目的是总结一下最近的学习。

一、概述

比特币是一种存储在计算机中的货币,而计算机存储的本质就是一串数字,那么为什么比特币中存储的这串数字就可以等同于真实的货币呢? 而比特币让人感觉很像黄金。 不管黄金是如何获得的(从沙子里,或者自己购买),人类都会认可它的财富价值。

说到比特币,很多文章都总结了它的特点,比如:去中心化、记账体系、安全性好。 它不同于现实社会中各国央行发行的法定货币。 法定货币的重要特征之一是需要权威机构(一般指代表国家的中央银行)发行货币。 法币的价值得到人们的认可。 国家的权威体现出来了。 不管怎样,法定货币是一种中心化的货币发行机制,法定货币将受到国家中央的控制和约束。 比特币的设计理念不同。 它想以不受任何权威中心影响的方式发行货币,使货币只包含经济价值的本质属性。

比特币的价值是通过交易的记账过程体现出来的。 具体过程如下图所示:

比特币交易原理_比特币挖矿机原理_实体比特币的原理

支付交易自始至终成功写入区块链,使支付交易真正得到确认。 比特币的币值体现在这个过程中,公司币的发行也在这个过程中进行。

这个流程图可能会让很多人感到困惑。 为什么说它反映了比特币的币值呢? 我之所以做这样的归纳,主要有以下理解:

实体比特币的原理_比特币交易原理_比特币挖矿机原理

这个过程包括比特币发行、流通、交易的全过程; 这个过程是在没有中央机构参与的情况下进行的,但这个过程与真实货币的价值一样具有权威性和有效性。 完整理解这个过程可以让你理解为什么比特币可以等同于实际的法定货币。

下面我将一步步解释这个过程。

2.支付交易

如何用比特币完成支付交易,下图是中本聪论文中的交易流程图,如下:

比特币挖矿机原理_实体比特币的原理_比特币交易原理

谈到支付交易,就涉及到比特币原理之一的非对称加密和数字签名技术。 在比特币的知识领域,有一个钱包的概念。 钱包的本质是一对非对称加密的公钥和私钥。 如果我们把比特币的使用映射到实际的用户,也就是一个人,那么公钥就是这个人对外的唯一身份,而私钥就是用户打开钱包的钥匙和使用比特币。 公钥对公众开放。 在比特币规则中,公钥代表钱包用户在网络中的地址。

根据比特币规则的定义,公钥长度为512字节。 为了便于公钥在网络上的传播,必须将公钥转换成160位的数字指纹。 数字指纹是二进制代码,转换成字符串为26到35个字符。

那么如果A支付比特币给B,那么A必须知道B的地址,这样A才能将比特币发送给B。下面我将描述支付流程,如下:

实体比特币的原理_比特币交易原理_比特币挖矿机原理

A向B支付比特币的交易就是将比特币从A的地址转移到B的地址的过程。 这是一个例子:

首先,A向B发送数据,其中包含以下内容:

B收到信息后进行相关验证,验证过程如下:

第一步是找到之前的交易并确认付款人的比特币来源。

第二步,对付款人的公钥进行指纹计算,确认与付款人的地址一致,从而保证公钥的真实性。

第三步,使用公钥解锁数字签名,保证私钥的真实性。

验证无误,B认为交易可以执行。 注意:这里只认为交易可以执行,并不确认交易有效和成功。

从支付交易的传输数据和验证过程我们可以看出,比特币的支付过程主要使用了支付方A的交易数据信息和A的公钥和私钥,支付方B只进行验证操作收款人B自己的公钥、私钥和交易信息的有效性在支付过程中没有涉及,所以我们可以认为私钥和公钥主要用于消费比特币的场景。

实体比特币的原理_比特币交易原理_比特币挖矿机原理

如果想要交易确认成功,那么收款人B就会向全网广播这笔交易,这样流程就进入了交易广播阶段。

3.交易广播

我觉得从交易广播开始,就进入了现在很流行的区块链技术领域,因为广播的交易最终会被网络中的矿工接收到(矿工是区块链分布式系统下的子节点) ) ,作为矿工创建区块链块的输入。 这个过程比较简单实体比特币的原理,只是数据的传输,但它是技术实现的技术难点之一,因为这种区块技术在编程领域包含了相对复杂的网络通信技术和高并发技术。 但是,如果将交易广播理解为区块链的输入,那么这里也涉及到与输入相关的一项重要技术,即时间戳服务器。 时间戳服务器的作用是同时为事务添加一个时间维度。 ,有了时间戳,我们就可以确定交易一定是在某个时间点发生的。

时间戳服务器在中本聪的论文中定义如下:

时间戳服务器通过实现随机散列并广播散列,以块的形式为一组数据打上时间戳,就像在新闻或 Usenet 中发帖一样。

从这个定义我们可以知道,时间戳是将新产生的交易记录按照时间维度进行分组,以保证每一笔实际发生的交易都能被正确保存。

时间戳服务器的作用对比特币的货币价值至关重要。 举个例子:在传统的交易中,往往没有时间维度的概念。 没有时间维度的交易往往会影响交易的信用评价,例如:甲乙双方账户中各有100元。 一天,甲方向乙方账户存入10元,次日,乙方账户转10元至甲方账户。 最终,双方的账上还是100元。 如果不记录交易过程,我们将很难追溯交易行为。 如果甲乙双方进行了非法交易,最终在核对前平衡了账户,那么危险行为就会被隐藏起来。 因此,时间戳服务器为比特币交易提供了一个正向且不可逆的交易过程,使得比特币的区块链技术实现了行为的可追溯性,解决了通信中的信息不对称问题。 这是区块链技术可以应用到其他领域的一个重要原因。

交易广播后,就是将交易写入区块的过程。

比特币挖矿机原理_实体比特币的原理_比特币交易原理

4.交易写入区块

交易的最终确认是将交易写入区块链,区块链由区块串联而成,区块是记录交易的实体。 因此,要将交易写入区块链,首先要将信息写入区块。 那么区块是如何产生的呢?

区块的生成由网络中的矿机完成。 但是矿工要生成一个新的区块并不是那么容易的。 这里先说说block的数据结构。 区块分为区块头和区块体。 区块体一条一条的存储着交易记录。 这些交易记录由付款人向网络广播,例如 B. 交易记录。

在比特币系统中,一个区块的大小最初被规定为1mb,一笔交易大约是500字节,所以一个区块可以存储大约2000笔交易。区块中最关键的因素是区块头,它包含了很多块的特征值,越是关键的

以上数值是从外部获取的。 此外,区块头还包含一个难度系数和一个随机数的Nonce。 矿机系统中也有一个固定的常量值。 这是一个公式:

目标=固定常数值/难度

可以看出难度系数越大实体比特币的原理,target的值越小。 矿工会对区块头数据进行哈希计算。 哈希结果是一串二进制数。 如果最终的哈希结果小于目标,那么该区块将被认为是一个有效区块,并且这个有效区块可以同步到区块链中,计算一个有效区块并不是那么容易,需要反复计算需要获得最终结果。 但是由于一个区块的特征属性一般是固定的,为了让每个区块头计算出的哈希值都不一样,在计算出每一个无效的哈希结果后,矿机程序会动态调整Nonce的值,让这个值最终的哈希更改。 Nonce是一个32位的二进制数,所以它的取值范围是0到21.47亿。 然后击中目标是一个详尽的数学过程。 一台矿机可能运气好算得快,也可能21.47亿次都打不中。 这时,框架不得不重新同步区块链数据,重新计算。 这就是区块链技术的工作量证明。 可见区块的生成是相当麻烦和困难的。

回到对区块生成的描述,从上面的过程中,我们发现一个区块的生成是非常耗费资源的,也就是计算机的算力和算力资源,那么为什么矿机总是要生成块? 这是因为每生产一个区块所获得的经济回报非常诱人。

比特币挖矿机原理_实体比特币的原理_比特币交易原理

中本聪就是这样设置出块奖励的。 比特币系统于 2008 年开始运行,当时产生一个有效新区块的奖励是 50 个比特币。 这个值每4年减半,也就是说,到2012年,2016年以后是25,2016年以后是12.5。 现在2018年,一个新区块的奖励是12.5,比特币当前价格超过10000美元。 这笔收入非常可观。 从这个规律我们也可以发现,比特币不会有一天涨价,到达一个新的区块也不会奖励新的比特币,那么这个时候就没有矿可挖了。 为了激励框架继续挖矿,中本聪的另一个激励措施是手续费。 区块用于记录交易。 每笔交易都有记录,必须支付,每个区块都会根据手续费的高低来安排交易,所以没有手续费或者手续费很低的交易往往很难写入区块,即最终很难写入区块链,交易也很难建立,这让矿机拥有无限的挖矿能力。

新区块的诞生会奖励比特币,这就是比特币发行的过程,这也是为什么人们在巨大的利益驱使下总是乐于做矿工的原因。

当一个新块产生时,新块被添加到区块链中。

5. 将区块写入区块链

新区块不是简单的加到区块链上,因为区块链是分布式数据库,没有中央管理员,所以不可能有权威机构来做加链操作,新区块加到区块链上. 该过程是一个集体协商的过程,具体过程如下:

当矿机成功生成区块后,矿机将在全网广播该区块,具有完整区块链数据备份的服务器接收到该信息并将新区块添加到区块链中。 结尾。 即使新区块被添加到区块链的末尾,也不意味着新区块被添加到区块链中是成功的。 这里我们将成功加入区块链的区块命名为节点,只将新区块加入到最后。 长链,也就是最真实的链,可以称为节点。 这条规则的原因是多个新块可能会同时添加到区块链中。 哪个有效需要判断机制。 这种机制一般情况下,新区块是最先获得连续6个新区块的,则该链为真链,可以确定该区块为区块链的新节点。

但是,严格控制新块添加到区块链的时间间隔。 在比特币系统中,每 10 分钟只有一次机会向区块链添加一个新区块。 另外,气候需要添加6个新区块才能最终确认区块链的新区块是否成功添加,这意味着一笔交易需要大约1个小时才能确认成功。 我们还可以算出一个区块最多存储2000笔交易,10分钟就是600秒,比特币系统1秒只能处理3到5笔交易,这是比特币交易时间长的一个重要原因。 当然,时间间隔的设立还有一个重要的原因,就是限制产生的区块数量,而控制新区块的数量就是控制比特币的总量,也就是说比特币的总数量比特币实际上是固定的。 它会完成的。

交易成功写入区块链后,收款人B同步区块链数据,如果B在区块链中找到自己的交易记录,则认为交易有效。