主页 > 苹果版imtoken钱包怎么下载 > 区块链学习笔记 | 比特币共识机制(上)

区块链学习笔记 | 比特币共识机制(上)

本文内容:

1、如何在不考虑去中心化的情况下发行数字货币?

2.双花问题

3.去中心化数字货币解决方案

4.去中心化下如何防止双花?

1、如何在不考虑去中心化的情况下发行数字货币?

首先,不考虑去中心化问题,假设存在一个大家都信任的中心化机构,比如中央银行。 如果我们都知道央行的公钥,让其发行数字货币,央行该怎么办?

说到央行,可能大家马上就会想到纸币。 数字货币的发行能否类似于纸币? 像这样:

比特币不存在双花问题对吗_808比特币创始人颜万卫 炮制比特币风险大_比特币的风险存在哪些方面

货币是由央行私钥签名的,而它的公钥是我们所有人都知道的,所以我们在和别人交易的时候,可以验证自己收到的货币是不是央行发行的,这样交易才算安全顺利完成。

808比特币创始人颜万卫 炮制比特币风险大_比特币不存在双花问题对吗_比特币的风险存在哪些方面

这个好像是电子版的纸币。 仔细想想,这有什么问题吗?

如果你觉得没有问题比特币不存在双花问题对吗,那也好,至少说明你是善良的,但不法分子不会这么想。

2.双花问题

大家都知道,现在要伪造纸币是非常非常难的,因为纸币的防伪措施几乎是无懈可击的,但是数字货币又不同于纸币。 毕竟,它只是一个文档比特币不存在双花问题对吗,可以复制。 意思是我有一个100元的数字货币。 虽然上面有央行私钥的签名,但可以证明它不是假的,100元没办法换成200元,但我可以抄成几份完成差价。 交易。 这种问题就是双花攻击(double spending attack)

数字货币面临的主要挑战之一是如何防止双重支出攻击。

上面的方案可以改进吗?

数字货币仍由中央银行发行,只是在每一种货币上加了一个序列号,以保证货币的唯一性。 为此,中央银行需要维护一个数据库,记录每个数字货币的所有者,即每个数字的所有者。

比特币的风险存在哪些方面_比特币不存在双花问题对吗_808比特币创始人颜万卫 炮制比特币风险大

808比特币创始人颜万卫 炮制比特币风险大_比特币不存在双花问题对吗_比特币的风险存在哪些方面

那么在这种情况下,想要完成一笔交易,需要注意哪些问题呢?

(1) 需要验证数字货币是否有央行签名。

(2)向央行核实收到的货币之前是否被消费过,即017货币是否在他人手中,防止货币被同一人重复使用。

这样就避免了双花问题。

这样的解决方案是正确的,在实践中当然是可行的。 这是一种不考虑去中心化数字货币的解决方案。

每个人在进行交易后都需要向中央银行进行验证,而中央银行的数据库需要对每个货币的来源和目的地进行修改。 可想而知央行这样做有多累。

3.去中心化数字货币解决方案

那么能否摆脱中央银行的中心化机构,取而代之的是大量的用户呢? 这就是比特币数字货币系统所做的。

比特币不存在双花问题对吗_808比特币创始人颜万卫 炮制比特币风险大_比特币的风险存在哪些方面

一个去中心化的货币体系需要解决两个问题:

(1) 谁有权发行数字货币? 因为没有中央机构,怎么决定什么时候发行货币,一次发行多少?

(2) 如何验证交易的有效性,如何防止双花?

对于第一个问题,谁来发行货币,这是由比特币系统中的挖矿决定的,后面的文章讲挖矿的时候会详细讲到。

本文先说第二个问题,如何防止双花攻击?

4.去中心化下如何防止双花?

这个问题的解决办法其实和上面说的央行的解决办法差不多。 还需要维护一个数据结构来检测一个币是否被消费过,被谁消费过,但是这个数据结构不是由某个中央机构维护的,而是由所有用户共同维护的。

这个数据结构就是区块链。

808比特币创始人颜万卫 炮制比特币风险大_比特币不存在双花问题对吗_比特币的风险存在哪些方面

比特币的风险存在哪些方面_比特币不存在双花问题对吗_808比特币创始人颜万卫 炮制比特币风险大

上图是区块链的简化版,哈希指针有两种,一种是连接区块与区块的指针(图中浅蓝色箭头); 第二个是指向上一笔交易,一个指示币源的指针(图中红色弯箭头)

铸币交易:生成10个比特币给A,写入区块链。

随后,A分别给了B和C 5个比特币; 然后B给了C 2个比特币和D 3个比特币。 这时候B的比特币已经花光了,最后,C把他所有的财产全部7个比特币给了E。需要注意的是,此时C的比特币有两个来源,2个是B给的(数字1) , 和 5 由 A(数字 2)给出。

比特币系统中的每一笔交易都包括输入和输出两部分。 输入部分应说明硬币的来源,输出部分应给出收款人公钥的哈希值。

想想为什么需要说明货币的来源? 如果交易使用纸币,收款人不需要知道纸币的来源,因为纸币无法复制。 但在比特币中,必须要知道币种的来源,才能保证不是凭空捏造的,而且是有记录的,这样才能防止双花攻击。

以上图的简化版区块链为例:B给了C 2个比特币,给了D 3个比特币,他却丢了。 如果他还想在区块链之后增加一笔交易,那么给F 5个比特币显然是不合法的,因为其他节点只需要按照hash指针,也就是图中的红色箭头,去查看比特币的去向就可以了。 B的手上,他们就会知道B已经没有比特币了。 B 给 F 5 个比特币的非法交易不会被添加到区块链中。

808比特币创始人颜万卫 炮制比特币风险大_比特币的风险存在哪些方面_比特币不存在双花问题对吗

比特币不存在双花问题对吗_808比特币创始人颜万卫 炮制比特币风险大_比特币的风险存在哪些方面

接下来我们仔细分析一下A给B 5个比特币的转账交易。

这笔交易需要哪些信息?

当然需要A的签名来确认是A转出的比特币; 同样,A也需要B的地址,相当于B的银行账户,来判断A把钱转给谁。

那么,B需要知道A的哪些信息呢? 好像没有必要,也不是B给A转钱,B好像也不需要知道A的信息。 但事实并非如此。

其实B需要知道A的公钥才能确定A的身份,就像有一天,有人转了5个比特币给你,你当然要知道是谁转给你的。 实际上,不仅B需要知道A的公钥,所有节点都需要知道A的公钥,这样才能通过A的公钥来验证A的签名,即验证图中的“signed by A”。 为了验证交易是否合法,毕竟没有银行这样的中心化机构,交易需要所有用户共同监督。

那么问题来了,怎么知道A的公钥呢?

如前所述,一笔交易包括输入和输出。 实际上,从A到B的交易输入,不仅包括币种来源,还包括转让方A的公钥,A自己对此进行了说明。

那么问题又来了:我们知道A的公钥是用来验证身份的,既然是用来验证身份的,那么A的身份就有可能被冒充。 存在这种问题,如何避免呢?

事实上,铸币交易的输出中包含了A的公钥,因此A向B转账交易中A的公钥必须与铸币交易输出中A的公钥相同。 这避免了模仿。

上面这段话可能有点绕,请仔细多看几遍图片加深理解。

这些验证过程实际上是通过执行脚本程序(BitCoin Script)来完成的,后面会具体讲到。