比特币纸

“比特币:点对点电子现金系统”

最长的链不仅可以证明所见证的事件顺序,而且可以证明它来自最大的 CPU 能力池。只要大部分 CPU 能力由不合作攻击网络的节点控制,它们就会生成最长的链并超过攻击者。

定义:1.哈希指针:

几个典型的密码散列函数:

哈希指针的值是从数据中计算出来的,并指向数据所在的位置,所以哈希指针可以告诉我们数据存储在哪里以及数据的哈希值。通过哈希指针,我们可以轻松判断数据是否被篡改。

2.区块链:

区块链是一个基于哈希指针的有序、反向链接的交易区块链表,这意味着区块链中的每个区块都通过一个哈希指针与前一个区块相连。

区块链也经常被看成是一个垂直堆栈,块附加在堆栈的顶部,第一个块是整个堆栈的基础。因此,“高度”这个词经常被用来描述从一个块到第一个块的距离。

区块链中的每个区块由区块头上的哈希函数计算的哈希值标识。并且每个块头都有一个专用字段来存储前一个块(也称为父块)的哈希值。

(反向链接:假设Web文档A中包含的指向B的链接名为“AB”,那么对于B来说,这个“AB”就是反向链接。对于一个网络文档,所有来自其他文档的链接指向自己的链接称为“反向链接” . Web 文档的反向链接越多,文档的“人气”或“支持率”就越高。)

结构:块头的组成分为3个大块。第一个块是前一个块的哈希。第二个区块包含一个随机数、一个点(用于表示找到该区块的难度)和一个时间戳,这三个字段都与挖掘过程密切相关。第三个块是默克尔树的根。

创世区块如下:从任何一个区块往回走,最终都会到达创世区块。

3.默克尔树:

区块链中使用默克尔树来组织和记录存储在区块中的交易,从而有效地验证区块中是否存在交易。它是通过不断递归计算节点的哈希值直到只有一个哈希值来构造的。

默克尔树自下而上构建,通过二次哈希得到

H(A) = SHA256(SHA256(A))

H(AB) = SHA256(SHA256(H(A) + H(B)))

这棵树是一棵二叉树,它需要偶数个叶子节点。如果恰好是奇数个事务,则会复制最后一个事务以创建偶数个叶子节点以达到平衡。一个区块通常记录成百上千的交易。

方法:1.事务方法

所有权的转移是通过在数字货币的末尾通过数字签名的方式将之前转移的数字货币的哈希和本次转移的接收方的公钥添加到数字货币的末尾来完成的。接收方可以通过验证数字签名来确定数字货币的所有者。

2.时间戳服务

为了解决数字货币的“重复支付”问题(即一种货币的所有者同时用该货币购买多种商品)。在实物金币时代,我们可以通过委托第三方机构或造币厂检查每一种货币的真伪来判断是否存在“重复交易”。我们需要一种方法来确保这种数字货币的付款人之前没有签署另一笔付款。为了在没有第三方的情况下实现这一点,必须向公众宣布转移的发生。仅当大多数节点同意传输首先发生时,此传输才有效。

基于时间戳服务。时间戳服务器通过 Hash 给一条数据打上时间戳,然后广播到全网。每个时间戳的 Hash 还包括前一条数据的时间戳,这样形成的链加强了数据的真实性。

3.工作量证明 (POW)

工作量证明机制通过检查 Hash 运算后的数据结果(如 SHA-256)),确保数据以指定数量的“0”位开始。计算表明,生成这种 Hash 的工作量随着“0”位数的增加呈指数增长。通过给数据加上一个随机数,然后进行Hash运算,得到满足“0”位要求的Hash值。一旦通过 CPU 的运算产生了符合要求的 Hash,这条数据就无法改变。

4.网络操作

操作步骤如下:

将新交易广播到网络。每个节点将交易收集到一个块中。每个节点寻找 POW 来创建一个新块。当节点找到 POW 时,它会将块广播到网络。当区块中包含的交易真实有效且未被使用时,节点将接受该区块。节点会继续创建下一个区块,并将该区块作为上一个区块来表达对该区块的支持。. 5.回收存储空间

当一笔交易产生了足够多的区块后,我们就不能再保存该笔交易及其之前的交易以节省存储空间。

每个压缩块的数据量约为 80 字节。如果每 10 分钟生成一个新块,每年所需的存储空间约为 80bytes *6*24*365 = 4.2MB。目前(2008年)的民用计算机系统一般有2GB内存。根据摩尔定律预测每年内存增长1.2GB,即使所有这些数据都存储在内存中也没有问题。

6.验证付款的简化方法

用户不需要经过所有的网络节点。用户可以不断地向网络上的其他节点请求数据中本聪比特币论文pdf,直到获得最长的区块链数据,并且可以根据连接到区块头的哈希树获得交易数据。用户无法自行检查交易数据的真实性,但通过判断交易链接的区块是否在最长的区块链中,可以判断交易的真实性。

7.货币价值的分解与合并

单独对交易中的每个货币价值进行操作太麻烦了。我们通过在一次转账中组合多个输入和输出来实现货币价值的分解和合并。通常,输入部分包含一个较大的输入或多个较小的输入中本聪比特币论文pdf,所有这些都来自先前传输的输出。输出部分最多包含两个,一个用于支付,一个用于在输入中将零钱返回给用户。

8.隐私保护

传统银行通过限制信息访问来实现一定程度的隐私保护。但是,比特币交易中的每一笔转账都是公开的,因此无法通过这种方式实现隐私保护。但是我们可以通过保持公钥匿名来保护隐私。即只有交易的时间和金额,而没有交易双方的身份信息。

注意:分布式时间戳服务:Adam Back 的 Hashcash 参考:哈希和区块链 - 阅读 - 掘金 通过 blockchain.info 查看虚拟货币(例如比特币)参考:比特币共享(BTC)用户:只想进行交易网络的用户做不需要听交易记录,他们只需要听矿工广播的新区块,然后更新自己的区块链。不足:每 10 分钟产生一个区块,每个区块限制为 2400 笔交易,而 Visa 每秒有 1700 笔交易。所以比特币的交易速度太慢了。参考:为什么 Web 3.0 很重要,您应该了解它 @matteozago/why-the-web-3-0-matters-and-you-should-know-about-it-a5851d63c949 参考:了解 Web 3 — 用户控制的互联网 – Coinbase 博客参考:hte Coinbase Blog 为解决比特币交易量过大、交易确认慢(网络拥塞问题)的问题,社区提出了如闪电比特币硬分叉等解决方案。问题:

1.货币是随着交易而变得越来越长的哈希链?

参考交易方式,之前的交易和收款人的公钥以数字签名的方式重新加到币尾,所以不会变长。

2.满足0位要求的哈希值是多少?(所需的零位。)

为了控制创建块的速度,设置了一个目标值。有效区块的头部哈希必须满足目标条件(如开头的 30 个 0)。目标值是一个以 0 开头的 64 位字符串。开头的0越多,难度越大。每产生 2016 个新区块,目标值就会调整一次。区块头中有一个随机数字段。实际上,挖矿的过程就是寻找一个可以使区块头的哈希值小于目标值的随机数的过程,也叫解谜。

3.工作量证明机制中的nonce和Tx是什么?

TX是一笔交易,一笔交易。Nounce 是一个随机数,比特币新区快车的本质就是找到 Nounce,使区块头的哈希满足一定的条件。

4.传输广播不需要覆盖所有节点。只要该块被一定数量的节点接受,它就会很快被添加到区块链中。这个机制是什么?

参考问题7,一般矿工来矿,听交易记录,记账。工作量证明机制和算力机制使矿工不会成为攻击者。因为攻击网络需要大量的算力,就算达到那个算力,也不如做一个忠实用户赚更多的钱。

5.分叉呢?

解决分叉的“最长链原则”。如果同时有两条或多条相同长度的链,都保存并等待一段时间,等待矿工广播新的区块,总会有一条更长的链。

6.文章说比特币不会有通胀问题。如果有人大规模收集比特币并且只能进出,那么市场上流通的比特币就会减少。相应的价格会下降,然后人会通过大规模购买市场上最有价值的商品而获得更多的财富。也是一个问题。

7.有效或无效转移指的是什么?

从发送交易到矿工打包需要多少步骤?当您发起转账时,比特币通过什么流程到达收款人?当您发起比特币转账时,您需要将交易广播到整个网络。挖矿节点收到交易后,首先将其放入本地内存池中进行一些基本的验证,比如交易花费的比特币。是否是未使用的交易。验证成功则放入“Unconfirm Transaction Pool”,等待打包;如果验证失败,该交易将被标记为“Invalid Transaction”,不会被打包。也就是说,挖矿节点需要及时验证每笔交易,更新自己的“未确认交易池” 在竞争计算能力的同时。节点攫取记账权后,会从“未确认交易池”中抽取约千笔“未确认交易”进行打包。有时我们的交易不能及时打包,因为“未确认交易池”中的交易太多,每个区块可以记录的交易数量有限,会造成区块拥塞。

此外,还有一种收支平衡的情况,即支付的钱多于拥有的钱,或者签名是非法的。

8.找到新区块后,如何按照验证前一个区块的方法让其他节点识别?合法性

区块版本号表示该区块遵守的验证规则,按照对应的版本进行验证。

9.共有 2100 万比特币。挖完所有的区块后,新的交易是不可能的吗?

10分钟一个,要4000年才能全部出现。

10.回答问题2.只要找到一个小于目标值的随机数,就会有很多,对吧?生成的块不会很快变得唯一吗?参考问题 7

ps:喜欢的话记得点赞哦~~