主页 > imtoken官网下载1.0安卓 > 了解比特币(BitCoin)背后的区块链技术,这篇文章就够了

了解比特币(BitCoin)背后的区块链技术,这篇文章就够了

imtoken官网下载1.0安卓 2023-06-28 06:45:31

比特币创世纪区块_比特币创世区块地址_比特币与区块链的关系

作者寄语:毫无疑问,区块链将颠覆现有认知,尊重那些伟大的先行者。

Part 1. 站在巨人的肩膀上,CypherPunk

在数字货币的探索实践中,比特币是目前最好的一种。 说到比特币的起源,就不得不说到一个略显神秘的团体:CypherPunk。 这个团体是密码学天才的松散联盟。 在比特币的创新中,大量借鉴了密码朋克成员的贡献。

比特币创世区块地址_比特币创世纪区块_比特币与区块链的关系

探路者:

比特币创世区块地址_比特币创世纪区块_比特币与区块链的关系

患有肌萎缩侧索硬化症的芬尼

第 2 部分。Genesis Block - “财政大臣站在第二次银行救助的边缘”

2008 年 10 月 31 日,纽约时间下午 2 点 10 分,一个普通密码学邮件列表的数百名成员收到了一封自称是中本聪的人发来的电子邮件。

“我一直在研究一种完全点对点的新电子现金系统,无需任何受信任的第三方”

然后,他指示他们阅读一份长达九页的白皮书,其中描述了一种新的货币体系。 同年 11 月 16 日,中本聪发布了第一版比特币代码。

2009 年 1 月 3 日,中本聪在位于芬兰赫尔辛基的一台小型服务器上挖出了比特币的第一个区块——创世区块,并获得了“第一矿”奖励——50 个比特币。 在创世区块中,中本聪写下了这样一句话:

“The Times 03/Jan/2009 Chancellor on through the second bailout for banks”

“财政大臣站在第二次银行救助的边缘”

比特币创世区块地址_比特币创世纪区块_比特币与区块链的关系

比特币创世区块地址_比特币创世纪区块_比特币与区块链的关系

这句话是当天《泰晤士报》头版的头条新闻。 中本聪将其写进了创世区块,不仅清楚地显示了比特币的诞生时间,同时也表达了对旧系统的嘲讽。

第三部分 去中心化账本系统

我们能否建立一个不依赖任何第三方的去中心化但可信的记账系统?

在这里,我们将每台连接到会计系统的计算机称为“节点”。 由于一致性要求,每个节点不能同时记账。 因为节点所处的环境不同,接收到的信息自然也不同。 如果账目同时记账,难免会造成账目不一致,造成混乱。

由于节点不能同时记账,我们必须选择哪个节点有记账权。 但是,如果指定一些特殊节点具有记账权,势必会违背我们去中心化的初衷。

这似乎是一个不可能的问题。

比特币与区块链的关系_比特币创世区块地址_比特币创世纪区块

第四部分 竞争性记账及激励机制

中本聪设计的比特币区块链通过竞争记账的方式解决了去中心化记账系统的一致性问题。

为了解释这个问题,我们引入一个新名词“计算能力”。

所谓竞争记账,是一种以各节点的算力即“算力”来竞争记账权的机制。 在比特币系统中,大约每十分钟进行一轮算力竞赛(算力将决定一轮竞赛获胜的概率,算力大的节点赢得算力竞赛的概率更高),而比赛的获胜者是获得一次记账的权力,这样在一定时间内,只有比赛的获胜者才能记账并将新的账本信息同步到其他节点。

那么问题来了,在一个去中心化的系统中,谁来评价这场比赛的结果呢?

比特币系统是通过一种称为“工作证明”(POW)的机制来实现的。 这个过程实际上类似于解决数学问题。 我不需要知道你的解题过程,只看结果。

第五部分 货币发行

计算能力的竞争需要付出成本。 没有激励,节点就没有竞争的动力。 在中本聪的设计中,每轮比赛获胜并完成记账的节点,都会从系统中获得一定数量的比特币作为奖励。 而这个奖励过程也是比特币的发行过程。 这个设计相当巧妙——将竞争激励机制与货币发行完美结合,在引入竞争的同时,解决了去中心化货币体系中的发行问题。

比特币创世区块地址_比特币创世纪区块_比特币与区块链的关系

比特币与区块链的关系_比特币创世区块地址_比特币创世纪区块

第 6 部分。那么什么是工作量证明 (POW)?

工作量证明的基本含义其实很容易理解。 就是给计算机一道难题,请它计算出正确的解法。 这个过程不同于验证码,验证码很容易被人理解,但计算机却不容易理解。

比特币与区块链的关系_比特币创世纪区块_比特币创世区块地址

比特币的工作量证明(拼图的计算方式)都是围绕SHA256的,因为哈希值的伪随机性可以帮助我们做概率估计。

现在让我们问一个关于计算机的问题。 通过这道题,我将比特币工作量证明的三个要素(证明函数、区块和难度值)联系起来:

例如我们的设计工作量如下:

基本字符串“Hello, world!” 加上(+)多少nonce(X)可以得到(=)以“0000”开头的哈希结果(以十六进制形式表示)。

计算机工作流程:

“你好,世界!0”=> 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64

“你好,世界!1”=> e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8

“你好比特币创世区块地址,世界!2”=> ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7

...

“你好,世界!4248”=> 6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965

“你好,世界!4249”=> c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6

比特币创世区块地址_比特币创世纪区块_比特币与区块链的关系

“你好,世界!4250”=> 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9

那么nonce为4521,可以通过验证。

现在给电脑增加难度(工作量)

我们简单的把输入改成“Hello, world+整数值”,整数值的范围是1到1000,也就是输入变成了一个1000个值的数组:“Hello, world!1,Hello,world!2.. .你好,世界!1000”。 然后比特币创世区块地址,对于数组中的每个输入,依次执行上述示例中所需的工作量证明——找到具有 4 个前导 0 的散列散列。

我们会发现平均计算次数是66958次,非常接近2^16(65536)。 数学中期望的计算量,就是我们要求的“工作量”。

Part 7. 区块分布式账本

比特币区块由区块头和区块中包含的交易(分类账)列表组成。 区块头大小为80字节,由4字节的版本号、32字节的上一个区块哈希值、32字节的Merkle Root Hash、4字节的时间扩展(当前时间)、4 bytes 以字节为单位的当前难度值和以 4 字节为单位的随机数。

比特币创世纪区块_比特币与区块链的关系_比特币创世区块地址

这些交易中的第一个是 coinbase 交易,这是矿工获得奖励和费用的特殊交易(见货币发行)。

为了表示这个区块中的多个交易,这里使用了 Merkle Tree 数据结构。

这是为了解决,如果从稳定的服务器下载,建议使用单个Hash。 但是,如果数据源不稳定,一旦数据损坏,就需要重新下载,这种下载效率很低。 MT树的特性可以通过Merkle Root的HASH值来验证每个节点的完整性。

理解默克尔树(MT树)

MT是一种树,大部分是二叉树或多叉树,不管是多少叉树,都具备树结构的所有特征;

Merkle Tree的叶子节点的值是数据集的单位数据或单位数据HASH。

一个非叶子节点的值是根据它下面所有叶子节点的值,根据Hash算法计算出来的。

比特币创世区块地址_比特币与区块链的关系_比特币创世纪区块

比特币创世区块地址_比特币创世纪区块_比特币与区块链的关系

Part 8. 动态改变难度值(difficulty)

难度值(difficulty)是矿工挖矿时的一个重要参考指标。 它决定了矿工需要经过多少次哈希运算才能生成一个合法的区块。 大约每 10 分钟生成一个比特币块。 如果要在不同的网络算力条件下都保持这个速率产生新区块,就必须根据网络算力的变化来调整难度值。 简单地说,难度值设置为每 10 分钟出一个新区块的速率,与挖矿能力无关。

难度调整在每个完整节点内独立且自动发生。 每2016个区块,所有节点都会根据统一的公式自动调整难度。 这个公式是根据最近2016个区块花费的时间和预期时间(预期时间为20160分钟或两周,以每10分钟一个区块为准。根据实际时长与预期时长的比值, 做相应的调整(或做难或易),也就是说出块速度快于10分钟,难度就会增加,慢于10分钟,难度就会降低。

新难度 = 旧难度 *(过去 2016 个区块的持续时间 / 20160 分钟)

工作证明需要有一个目标值。 比特币工作量证明的目标值(Target)计算公式如下:

目标值=最大目标值/难度值

其中最大目标值是一个常数值:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

第 9 部分。验证工作量

我们可以大致总结比特币矿工为解决这个工作量证明难题所采取的步骤如下:

生成一笔Coinbase交易并与所有其他交易组成交易列表打包进区块,通过Merkle Tree算法生成Merkle Root Hash

将Merkle Root Hash等相关字段组装成一个区块头,将区块头的80字节数据(Block Header)作为工作量证明的输入

不断改变区块头中的随机数,即nonce的值,对每一个改变的区块头进行两次SHA256运算(即SHA256(SHA256(Block_Header))),并将结果值与目标值进行比较当前网络相比之下,如果小于目标值,则问题成功解决,工作量证明完成。

该过程可以用下图表示:

比特币创世区块地址_比特币与区块链的关系_比特币创世纪区块

比特币与区块链的关系_比特币创世纪区块_比特币创世区块地址

Part 10. 生成钱包地址

椭圆曲线算法生成的公钥信息比较长,压缩格式为33字节,未压缩格式为65字节。 地址是为了减少接收方需要识别的字节数。 生成比特币地址的步骤如下:

生成私钥和公钥

公钥通过SHA256哈希算法处理得到32字节的哈希值

之后将得到的哈希值通过RIPEMD-160算法得到一个20字节的哈希值——Hash160

对版本号+Hash160组成的21字节数组进行两次SHA256哈希运算,将哈希值的前4个字节作为校验和,放在21字节数组的末尾。

将25位数组进行Base58编码,得到地址。

下图以未压缩格式的 65 字节公钥说明了上述过程:

比特币创世区块地址_比特币创世纪区块_比特币与区块链的关系

由于椭圆曲线乘法和哈希函数的特点,我们可以从私钥中推导出公钥,也可以从公钥中推导出地址,而且这个过程是不可逆的。 正因为如此,在整个比特币系统中,私钥是最为关键的部分。 泄露私钥意味着失去一切。

要将资产花在一个地址上,我们需要构造一个交易,并用这个地址对应的私钥对其进行签名。 而如果我们要将资产转移到某个地址,只需要转移到他的公网地址即可。

最后的小字是给那些想要阅读它的人的……

我们生活在一个压抑、无聊、缺乏真相的社会。

游戏已经开始,争取网络中立的斗争是漫长的。

为自由干杯。

比特币创世纪区块_比特币创世区块地址_比特币与区块链的关系