主页 > imtoken交易所下载 > 比特币的两大问题(让你彻底了解比特币相关知识)

比特币的两大问题(让你彻底了解比特币相关知识)

imtoken交易所下载 2023-01-29 05:21:05

一、基础知识

1.1块

区块是一种容器数据结构,包含在公共账本中,聚合交易信息; 这个公共分类账是一个区块链; 区块是区块链的基本单位,由区块头和区块组成。

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

1.2 区块高度

区块高度是用来标识区块在区块链中的位置的概念。

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

为什么区块高度不能唯一标识一个区块?

因为同时可能有两个或多个区块,它们相对于整个区块链处于平等的位置,所以它们具有相同的区块高度。

二、货币发展阶段

2.1 以物易物

比特币各方面相关建议_比特币相关知识_比特币分叉影响比特币总量

易货方式需要满足双重偶然性。 比如我正好有一袋苹果,对方也正好有一袋面粉。 同时,我们也需要彼此的东西,这个时候可以交换。

2.2 实物货币

比特币分叉影响比特币总量_比特币各方面相关建议_比特币相关知识

这时候,我们就用贝壳或者一些金银作为等价物,作为中介进行交换。 这时候就不需要像之前的易货交易那样去满足双重偶然性了; 用完纸币

2.3 纸币

比特币相关知识_比特币分叉影响比特币总量_比特币各方面相关建议

现在我们生活中的一张红色毛泽东的制作成本其实很低,但是可以用来购买价值100元的商品。 购买力

“信用背书”是指信用担保。 例如,以公司的信誉作为您的“信用背书”,意味着我公司保证您是值得信赖的人,可以与他建立业务往来。

2.4 中心化记账币种

比特币各方面相关建议_比特币相关知识_比特币分叉影响比特币总量

移动电子支付的本质是记账货币,通过银行、第三方支付机构、中央银行负责记账。 中央银行有权在全国的大账本上记账,本质上是一种集中记账的方式。 无论是使用微信还是支付宝,我们都必须充分信任第三方,因为我们存放在第三方的钱只是显示为一个数字。 如果第三方数据被篡改,我们的财产将遭受损失。

2.5 比特币的诞生

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

为了解决这个问题,必须要有一个独立的电子货币体系:于是比特币诞生了!

中本聪在《A Peer-to-Peer Electronic Cash Payment System》中提到:

比特币各方面相关建议_比特币相关知识_比特币分叉影响比特币总量

为了满足比特币的要求,区块链技术应运而生,或者说比特币是区块链兴起的源头,是区块链最早、最成功的应用。

比特币分叉影响比特币总量_比特币各方面相关建议_比特币相关知识

3. 比特币钱包、私钥和签名

3.1 比特币的所有权确立

比特币的所有权是通过私钥和地址建立的。

该地址类似于银行帐户的帐号。 如果你想把比特币转给某人,你只需要知道他的比特币地址。

私钥的作用主要是对交易进行签名,证明交易是你发起的。 当其他人收到交易时,他们可以通过验证签名来确认交易中涉及的资金是合法的。

比特币分叉影响比特币总量_比特币相关知识_比特币各方面相关建议

3.2 公钥和私钥

比特币使用非对称密码系统。

公钥加密是在 1970 年代发明的。 自从公钥加密发明以来,就提出了一些不可逆的数学函数,也就是说,它们只能在一个方向上计算,而不能在相反的方向上逆转。

在比特币中,公钥用于接收比特币,私钥用于在其对应的地址上生成支付比特币所必需的签名,以唯一确定这些比特币的所有权。 具体到比特币地址的生成,其实是先生成私钥,私钥通过椭圆曲线算法等不可逆函数生成公钥,公钥经过一系列不可逆运算后生成地址。

比特币相关知识_比特币分叉影响比特币总量_比特币各方面相关建议

3.3 钱包

从上面我们可以知道私钥的持有者就是比特币的主人,那么私钥在哪里呢?

钱包是私钥的容器和密钥管理工具。 它只包含密钥而不是确切的令牌。 比特币钱包包含一系列密钥对,每个密钥对包括一个私钥和一个公钥。

比特币相关知识_比特币分叉影响比特币总量_比特币各方面相关建议

钱包定义

比特币分叉影响比特币总量_比特币各方面相关建议_比特币相关知识

wallet.dat文件其实是用我们自己设置的密码加密的。 用户在登录钱包软件时,需要输入密码对文件进行解密,才能获得真正的私钥。 此时,私钥保存在钱包程序的内存中。 当我们需要发起交易时,钱包软件会去内存中获取这个私钥来签署交易。

冷钱包

比特币分叉影响比特币总量_比特币相关知识_比特币各方面相关建议

热钱包

比特币分叉影响比特币总量_比特币相关知识_比特币各方面相关建议

3.4 交易

比特币交易就是这样:将钱从一个比特币钱包转移到另一个比特币钱包,并且每笔交易都经过数字签名以确保安全。 一笔交易一旦发生,就对所有人公开,每笔交易的历史最终都可以追溯到对应比特币最初被开采的那一刻。 用户用钱包中的私钥签署交易,证明他们拥有交易的输出,也就是其中的比特币。

·比特币以交易输出的形式存储在区块链中。

比特币不存在于任何地方,甚至不存在于硬盘上。 持有比特币其实就是拥有一个特定的比特币地址,但实际上所谓的货币并不直接存在于这个地址中,地址就相当于你的银行账户。 世界上没有任何有形物体或数据文件可以称为“比特币”。 各个地址之间只有转账记录,余额有增有减。 所有交易都存储在一个非常大的分类帐文件中,称为“区块链”。 如果你想知道一个比特币地址里面的余额,那么这个不是直接存在比特币地址里面的,我们需要去区块链上去计算。

未交易输出

矿工挖出的第一笔收益交易通常称为coinbase,它没有输入,所以交易输入的哈希总是标记为0000...0000; 任何其他交易输入都将在该区块之前的交易哈希和索引中唯一地追溯到区块链。 通过交易哈希和索引,可以唯一确定一个未花费的交易输出——UTXO。 这样,每个交易输入都与之前的交易输出相关联。

比特币分叉影响比特币总量_比特币各方面相关建议_比特币相关知识

比特币相关知识_比特币分叉影响比特币总量_比特币各方面相关建议

对于Bob,他有Alice输入的30个BTC,但是输出为0,那么可以计算出Bob的UTXO=20+10=30

示例 1

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

Q1:请记下Alice和Bob在交易过程中产生的“input”中的信息,以及Bob的UTXO值

Q2:请记下Bob与Tom和Jimmy交易时产生的“input”中的信息,以及Bob的UTXO值

比特币分叉影响比特币总量_比特币各方面相关建议_比特币相关知识

A1:它记录了爱丽丝拥有这些币给她的地址; 此时Bob的UTXO=10+20=30

A2:根据上述交易过程中的信息,Bob与Tom、Jimmy在交易过程中共输出了25BTC。 由于Bob和Alice之间的单笔交易:10BTC和20BTC不能单独满足,所以在与Tom和Jimmy的交易中输入交易信息: 应该包含Alice给Bob的两笔交易中包含的所有信息; 此时Bob的UTXO=30-20-5=5

公钥脚本

从上面的例子不难发现,输入是对之前输出的引用,那么其他人是不是也可以引用爱丽丝的交易数据作为自己的输入,也就是把钱打到自己的账户里呢?

当然不是! 因为Alice在给Bob转账的时候加了一个条件,这个条件在比特币交易中被称为公钥脚本。 在上面的例子中,公钥脚本的内容是使用交易输出的账户地址必须是Bob,那么其他人是否可以冒充Bob来花费这个输出呢? 因为其他人也可能知道 Bob 的地址和公钥,其他人也可能知道。 这导致签名和验证:

比特币相关知识_比特币分叉影响比特币总量_比特币各方面相关建议

多重签名

比特币也支持多方签名。 如果Bob要使用Alice转给Bob的两笔交易,不仅需要Bob的签名,还需要Alice的签名,这样如果其中一个的私钥被盗,比特币也不会丢失!

4.非对称加密算法

4.1 为什么要使用非对称加密?

比特币相关知识_比特币分叉影响比特币总量_比特币各方面相关建议

为此,我们可以对快递包裹中的内容进行加密,但是如何将加密信息的密码安全地发送给Bob呢?

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

4.2 什么是非对称加密?

比特币各方面相关建议_比特币相关知识_比特币分叉影响比特币总量

简单概括为16字策略:公钥加密,私钥解密,私钥签名,公钥验证

4.3 非对称加密的工作原理

比特币分叉影响比特币总量_比特币各方面相关建议_比特币相关知识

4.4 非对称加密的应用

比特币的所有权

当我们通常说某人拥有一个比特币时,实际上他拥有比特币地址对应的私钥

交易验证

使用UTXO时,用户需要提供UTXO中描述的地址对应的公钥,同时用公钥对应的私钥对交易进行签名,以便比特币接收方验证交易是否成功已验证。

比特币分叉影响比特币总量_比特币各方面相关建议_比特币相关知识

其中,比特币中公私钥的生成和签名算法ECDSA都是基于椭圆曲线算法

4.5 椭圆曲线算法

比特币分叉影响比特币总量_比特币各方面相关建议_比特币相关知识

5、如何避免做假账?

比特币交易中有三个保证可以避免虚假记账:

1.使用私钥对交易信息进行签名,必须使用配对的公钥来验证签名,私钥的使用者必须是付款人(使用非对称加密算法)

2. 签署后的交易信息在网络上广播,所有参与比特币网络的人都可以收到此交易信息,并可以验证交易信息以确保交易合法(使用非对称加密算法)

3、每个人收到交易信息后,都会按照约定的规则产生一个区块,即数据区块。 这个数据块包含了所有的交易明细,按照merkle树组装而成(所有的交易数据都是按照merkle树的方式组装而成,merkle树的数据结构可以很好的保证数据的安全性)

6. 哈希运算,不易篡改

6.1 哈希算法

相同的数据输入会产生相同的结果。 只要输入的数据稍有变化(比如数据中的一个1变成0),就会得到截然不同的结果,而且结果是无法提前预测的。 具体来说,哈希算法将数据打乱、混合、压缩成一个摘要,使数据量变小,重新创建一个指纹,称为哈希值。

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

6.2 哈希算法的特点

1.单向

哈希算法必须是单向的:只能从输入数据或消息中计算出一个固定长度的哈希值,不能通过这个哈希值反向计算输入数据或消息。

比特币各方面相关建议_比特币相关知识_比特币分叉影响比特币总量

2. 可以根据任意长度的消息计算出定长哈希

哈希算法生成的哈希值的长度必须是固定的,对于任意长度的输入数据。 此属性保证了哈希算法的易用性。

因为hash算法的一个目的就是用最终的hash值来表示输入的数据,那么最终的hash值很长,不固定,或者和原始数据一样长,那么通过比较就可以确定原始数据hash values 和直接验证原始数据一样费力,没有区别。 最终的长度必须控制在一个固定的合适的值,以体现哈希值作为原始数据的指纹或摘要的特征。

3.不同的输入有不同的输出

发明哈希算法的目的之一就是基于这样的需求:它可以实现数据完整性和一致性的判断,只有相同的数据经过相同的哈希运算得到的相同的哈希值是相同的。

无论输入数据的长度如何,都会生成一个固定长度的哈希值,从而使比较结果更快更方便,是一种很好的数据防篡改和防丢失的验证方法。

比特币分叉影响比特币总量_比特币相关知识_比特币各方面相关建议

4. 四、算法效率高

计算哈希值的时间短,保证无论数据多长,都能得到可接受范围内的哈希结果。

6.3 典型的哈希算法

比较著名的Hash算法有MD系列和SHA系列。

MD 系列算法是由 Rivest of Mit 计算机科学实验室和 RSA 数据安全公司在 1900 年代初期设计的。 MD代表消息摘要,MD2(1989)、MD4(1990)和MD5(1991)都生成一个128位的消息摘要。

SHA系列算法是NIST在Rivest设计的MD4和MD5的基础上开发的。 美国国家安全局发布SHA作为美国政府标准,SHA(Secure Hash Algorithm)全称是Secure Hash Algorithm。

6.4 哈希函数的性质

1.可用于“任意”长度的消息

2、生成的Hash值是固定长度的

3.对于任意给定的消息M,很容易计算出H(M)的值

4. 单向(反象性):对于给定的Hash值h比特币相关知识,要找到满足H(M)=h的M在计算上是不可行的。

6.5 哈希指针

普通指针只保存结构在内存中的位置,而哈希指针不仅保存结构在内存中的位置,还保存结构的哈希值; 这样做的好处是,通过哈希指针,不仅可以找到结构的位置,还可以知道结构是否被篡改过。

区块链与普通链表的区别

比特币背后的技术主要是区块链,区块链是由区块一个一个连接起来形成的。 区块链与普通链表的主要区别是使用哈希指针代替普通指针。 如果普通链表的内容发生变化,指针不会发生变化,但一旦区块链内容发生变化,后续区块的哈希指针就会发生变化,类似于多米诺骨牌效应。

比特币各方面相关建议_比特币分叉影响比特币总量_比特币相关知识

哈希指针与区块链的关系

可见,哈希运算可以帮助识别区块链是否被篡改。 区块链的哈希指针可以唯一准确地标识一个区块。 区块链中的任何一个节点都可以通过简单的哈希运算得到这个区块。 区块的哈希指针,如果计算出的哈希值没有变化,则说明区块链中的信息没有被篡改过。 此外,哈希运算还可以帮助将各个区块连接成一个区块链。每个区块都包含前一个区块的哈希值和下一个区块的值,相当于通过哈希值链接到这个区块。上一个区块,并将本区块的哈希值Link传递给下一个区块,自然形成一个链式结构的区块链

6.6 默克尔树

什么是默克尔树?

它使用单向哈希:哈希树的顶部是顶部哈希(根哈希/主哈希),它通过并行连接两个子哈希向上爬树,直到找到根哈希。

Merkle树的作用

1.每笔交易都可以快速定位。 由于交易是线性存储的,需要遍历才能定位到某个交易,效率低,速度慢。 通过这样的二叉树,可以快速定位到想要的交易。

2. 无需存储全部数据,即可简洁地验证交易是否被篡改。 从交易到每棵二叉树的哈希值,任何数字的任何变化都会导致根哈希的变化。 同时,如果出现错误,可以快速定位到错误的地方。

比特币相关知识_比特币分叉影响比特币总量_比特币各方面相关建议

默克尔树的特点

· Merkle树是一种树结构,它具有树结构的所有特性

Merkle树的叶子节点的值就是数据集的单位数据,或者说是单位数据的哈希值

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

比特币各方面相关建议_比特币相关知识_比特币分叉影响比特币总量

7. 双花问题和UTXO

7.1 双花问题

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

7.2 如何避免双花问题?

传统电子支付

· 依赖第三方信托机构

数据集中管理,账户余额实时修改,防止“双花”

缺点:人类在交易中需要为第三方验证支付巨额费用。

比特币相关知识_比特币分叉影响比特币总量_比特币各方面相关建议

7.3 UTXO机制

UTXO的概念

UTXO是Unspent transaction Outputs的缩写,全称是“未花费的交易输出”。

U代表Unspent,意思是未支付或未使用。 “未花费”是指交易输出还没有出现在其他交易的输入中。

TX是交易的缩写。 交易是从一个比特币钱包转移到另一个比特币钱包。 它是改变比特币所有权的唯一途径比特币相关知识,包括输入、数量和输出等基本内容。

O是Output,意思是输出,和TXO一起表示交易输出。

比特币与UTXO的关系

比特币中没有用户账户的概念。 当我们说我们拥有多少比特币时,我们实际上是指我们拥有的那些 UTXO 中指定的比特币数量。 爱丽丝有 10 个比特币。 本质上,在目前的区块链账本中,几笔交易的UTXO项目的收款人都是由Alice的地址写的,这些UTXO项目的总数是10。

比特币交易规则

1. 除coinbase交易外,所有资金来源必须来自之前一笔或数笔交易的UTXO。

2、任意一笔交易中的交易输入总量必须等于交易输出总量,且等式两边必须平衡; 也就是说,每笔交易的输入值必须全部花掉,而不是只花掉其中的一部分。

比如我要转比特币到你的钱包地址,只有8个比特币,所以很简单,我发起一个交易,把这8个比特币转入你的钱包地址,我签字确认交易。 但是如果我的钱包地址里有25个比特币,那么我发起的交易不是给你转8个比特币,然后我的钱包地址里还剩下17个比特币。 此时我发起的交易是:从我的钱包地址转8个比特币给你,同时转17个比特币到我的同一个地址。

这里我们用一个比特币交易的例子来加深对UTXO的理解:

1.假设Alice之前通过挖矿获得了12个比特币,在她的地址中,这些比特币是一个币基交易的UTXO

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

2、Alice发起两笔交易,第一笔交易的输入是她之前的交易,输出是Bob的地址,金额是2个比特币; 第二笔交易的输出是爱丽丝自己的地址,金额是10个比特币。 爱丽丝用她的私钥签署交易。

比特币各方面相关建议_比特币相关知识_比特币分叉影响比特币总量

八、共识机制

8.1 什么是共识?

共识是从语言的角度来理解的,即许多不同的人对同一件事达成相同或至少相同的看法。 这种解释也适用于比特币网络。

共识的主题

当前区块链中的一些节点,哪些节点需要达成共识,这是一个需要考虑的问题。

同意什么

共识机制涉及如何产生区块,以及产生后如何选择区块。 - 区块和交易

在区块链中,由于每个节点都是平等的,没有中央权威,因此需要一种共识机制来实现节点之间的共识。

8.2 什么是共识算法?

共识算法是达成共识所依据的规则,是一种选择代表节点的方法。 为此,区块链设计了一定的底层算法,通过这种特定的算法来选择能够产生新区块的节点,同时限制这条区块链上的每笔交易是否允许完成和规定,即共识算法。 共识算法规定了哪个矿工将产生下一个新区块。 同时,要在这条区块链上完成一笔交易,需要由共识算法选出的一些节点达成共识的观点,也就是说,对于一笔交易,如果几个利益不相关的节点能够达成共识,则可以认为全网也可以就此达成共识。

比特币各方面相关建议_比特币相关知识_比特币分叉影响比特币总量

8.3 比特币的共识算法——PoW

比特币使用工作量证明(PoW,Proof of Work)算法来确认你做了一定数量的工作。

区块链中的每一个矿工都有资格产生一个区块,所以为了决定谁来产生下一个区块,需要用一定的方法来决定。 在 Pow 机制中,所有节点随机尝试计算,直到一个节点找到随机哈希的数值解,成为有资格生成新区块的主体。

优点:完全去中心化

缺点: 1. 挖矿行为造成大量资源浪费 2. 达成共识需要较长时间

PoW 如何证明你的工作量?

通过工作的结果 --> 当用户做一定难度得到结果时,通过展示结果来证明你完成了一定的工作量 --> 也就是说,PoW,作为一种共识机制,是结果导向的,不是过程导向的。

为什么不采用面向过程的共识机制呢?

因为在实际应用中,如果我们通过监控工作的全过程来证明工作量,那是极其低效的。 为了保证一定的效率,设计了一种通过验证结果来证明工作量的方法。

PoW 的特点:不对称

用户做实际工作需要付出大量的工作才能得到满足预定条件的结果,但作为验证者,可以很容易地根据用户提供的材料重新计算结果,同时验证是否结果满足预先指定的条件。

比特币相关知识_比特币各方面相关建议_比特币分叉影响比特币总量

因此,在工作量证明中,你工作的时间越长,使用的设备越先进,你的工作量就越大,你的收获也就越多。 虽然短期内可能存在运气因素,但从宏观上长期来看还是公平的。 谁工作并付出更多,谁就会得到更多。

9.(51% 攻击)

9.1 计算能力

计算能力,也叫哈希率,是用来衡量进行哈希运算的能力,或者说进行一次哈希计算所花费的时间的指标。 如果网络达到 10T hash/s(每秒 10T 哈希)的哈希率,则意味着它每秒可以执行 10 万亿次计算。

哈希碰撞:反复尝试解决随机哈希值的过程。

一台矿机每秒能做这种碰撞的次数代表了它的算力。

矿工挖矿使用的机器越先进,算力就越高。

9.2 区块链转账的基本原理

整个区块链网络之所以能够运转,全靠全网的“矿工”,因为他们用算力解决加密问题,挖出新的区块。 在挖出区块后,他们有权将转账信息放入区块中,然后完成转账。 这就是区块链转账的基本原理。

9.3 51% 攻击

51%攻击(Majority Attack)是指全网某个人的算力超过全网的50%。 那么他就可以尝试修改区块链的状态,进行反向交易,实现双花。

比特币各方面相关建议_比特币分叉影响比特币总量_比特币相关知识

典型

我们假设爱丽丝现在控制着比特币网络超过 51% 的算力。 在控制算力期间,她在交易所向自己的钱包发送一定数量的比特币。 我们将这个分支命名为A分支。同时,她将这些比特币发送到自己控制的另一个钱包中。 我们将这个分行命名为B,A分行的交易确认后,她立即卖出比特币,成功套现。 此时分支A成为主链。 然后,Alice在B分支上挖矿,因为她控制了全网50%以上的算力,所以她有很大概率获得记账权,所以很快,B分支的长度就超过了A分支的长度,然后B分支成为主链,A分支上的交易回滚。 所谓回滚,是指由于程序或数据处理错误,将程序或数据恢复到上次正确状态的行为。

比特币分叉影响比特币总量_比特币相关知识_比特币各方面相关建议

此时,由于交易回滚,分支A回到了爱丽丝发起第一笔交易之前的状态,于是她换取现金的比特币回到了自己的手中。 所以这些比特币就成了交易所的损失。 最后,爱丽丝将这些比特币发送到她自己的另一个钱包中。 就这样,她依靠51%以上的算力控制,实现了同一个代币的“双花”。

9.4 什么时候会发生 51% 攻击?

某矿池算力过大

ps:矿池(Mining Pool),为联合少量算力联合运作而建立的网站。

随着新区块的出块难度越来越大,矿工们合作组建了矿池,汇集了数千名参与者的算力参与挖矿,分享奖励。矿工算力超过全网50%,存在51%攻击风险

拥有无限资本

无限资本无限装备,你可以发起51%攻击

9.5 51%攻击悖论

虽然 51% 的攻击看起来很可怕,但它通常只存在于理论上的情况。 因为如果要做,首先需要有足够的钱来控制全网51%的算力,这将是一个非常大的投资。 其次,被攻击后,币价会受到影响,你要卖出大量的币才能保本。 这就是 51% 攻击悖论。