主页 > imtoken官网钱包app > 2016比特币分析研究白皮书

2016比特币分析研究白皮书

imtoken官网钱包app 2023-01-18 20:44:57

【比特币白皮书摘要】 比特币白皮书提出了一种完全通过点对点技术实现的电子现金系统,使在线支付可以由一方直接发起并支付给另一方2016比特币一个多少人民币,而无需通过任何金融机构。虽然数字签名部分解决了这个问题,但如果仍然需要第三方支持来防止双花,那么系统就会失去它的价值。我们(我们)在这里提出了一种解决方案,使现金系统能够在点对点环境中运行并防止双重支出问题。网络通过随机散列为所有交易添加时间戳,将它们合并成一个基于随机散列的不断扩展的工作量证明链作为交易记录,除非重新完成整个工作量证明,并且产生的交易记录不会改变。最长的链不仅可以作为观察到的事件序列的证明,还可以被视为来自具有最多 CPU 计算能力的池。只要大部分 CPU 算力不打算合作攻击整个网络,那么诚实节点就会生成超过攻击者的最长链。系统本身只需要很少的基础设施。信息尽可能地在网络中传播,节点可以随时离开和重新加入网络,使用最长的工作量证明链作为节点离线时发生的交易证明。只要大部分 CPU 算力不打算合作攻击整个网络,那么诚实节点就会生成超过攻击者的最长链。系统本身只需要很少的基础设施。信息尽可能地在网络中传播,节点可以随时离开和重新加入网络,使用最长的工作量证明链作为节点离线时发生的交易证明。只要大部分 CPU 算力不打算合作攻击整个网络,那么诚实节点就会生成超过攻击者的最长链。系统本身只需要很少的基础设施。信息尽可能地在网络中传播,节点可以随时离开和重新加入网络,使用最长的工作量证明链作为节点离线时发生的交易证明。

比特币白皮书,一种点对点电子现金系统

1. 比特币白皮书介绍

互联网上几乎所有的交易都需要金融机构作为受信任的第三方来处理电子支付信息。尽管此类系统在绝大多数情况下运行良好,但它们仍然内生地受制于“基于信任的模型”的弱点。我们无法实现完全不可逆的交易,因为金融机构不可避免地会出面调解纠纷。金融中介的存在也会增加交易成本2016比特币一个多少人民币,限制实际最小交易规模,限制每日小额支付交易。而潜在的损失是许多商品和服务本身无法退货。如果没有不可逆的支付手段,互联网贸易将受到极大限制。由于有可能退款,交易双方需要有信任。商家还必须对自己的客户保持警惕,因此他们要求客户提供完全不必要的个人信息。在实际经营行为中,一定比例的欺诈客户也被认为是不可避免的,相关损失被视为销售费用。在实物现金的情况下,可以避免这些销售费用和付款问题的不确定性,因为此时没有第三方信用中介。

因此,我们非常需要这样一种基于密码学原理而非信用的电子支付系统,让任何达成协议的双方都可以直接进行支付,无需第三方中介的参与。消除了撤销支付交易的可能性,从而保护某些卖家免受欺诈;而对于那些想要保护买家的人来说,在这种环境下建立通常的第三方担保机制也是一件轻而易举的事情,也是一种享受。在本文中,我们(我们)将通过提出一个点对点分布式时间戳服务器来生成按时间顺序排列和记录的电子交易证明来解决双花问题。

2. 比特币交易

我们将电子币定义为一串数字签名:每个拥有者对上一笔交易的随机哈希和下一个拥有者签名的公钥进行签名,并将这个签名附加到电子货币的末尾,电子货币是发送给下一个所有者。收款人可以通过验证签名来验证链的所有者。

电子硬币图

这个过程的问题在于,接收者很难验证前一个所有者是否双花硬币。通常的解决方案是引入受信任的第三方机构,或类似造币厂的东西,检查每笔交易以防止双重支出。每次交易完成后,电子货币将被铸币局收回,铸币局将发行新的电子货币;并且只有铸币厂直接发行的电子货币才被认为是有效的,这样可以防止双重支出。然而,这种解决方案的问题在于,整个货币体系的命运完全取决于运营铸币厂的公司,因为每笔交易都由铸币厂确认,就像银行一样。

我们需要某种方式让收款人确保之前的所有者没有签署之前发生的交易。从逻辑上看,为了达到目的,我们其实需要关注本次交易之前发生的交易,不需要关注本次交易发生后是否会出现双花尝试. 确保某个交易不存在的唯一方法是了解所有以前的交易。在 Mint 模型中,Mint 被告知所有交易并确定交易完成的顺序。如果我们想在电子系统中排除第三方中介,那么交易信息应该是公开的(publiclyannounced)[1],我们需要整个系统的所有参与者,有唯一公认的历史交易顺序。收款人需要确保在交易过程中绝大多数节点都同意该交易是第一次发生。

3. 比特币时间戳服务器

该解决方案首先提出了一个“时间戳服务器”。时间戳服务器通过随机散列块中的一组数据来添加时间戳,并广播随机散列,就像在新闻或全球 usenet 网络中一样。发布喜欢 [2][3][4][5] 。显然,时间戳可以确认特定数据一定存在于特定时间,因为只有在该时间存在时才能获得对应的随机哈希值。每个时间戳都应该将前一个时间戳合并到它的随机哈希值中,每个后续时间戳都应该加强前一个时间戳,从而形成一条链。

时间戳服务器图

4. 比特币工作量证明

为了在点对点的基础上构建一组去中心化的时间戳服务器,仅仅像报纸或全球新闻网络集团一样工作是不够的,我们还需要类似于 Adam Back 提出的哈希现金(Hashcash )[6]。在执行随机散列时,工作量证明机制引入了对特定值的扫描。例如,在 SHA-256 下,随机哈希值以一个或多个 0 开头。然后随着 0 数量的增加,找到这个解决方案所需的工作量呈指数增长,而检查结果只需要一次随机散列操作。

我们向块中添加一个随机数(Nonce),以便给定块的随机哈希值根据需要具有尽可能多的 0。我们通过反复试验找到这个随机数,直到找到,所以我们建立了一个工作量证明机制。只要 CPU 消耗的工作量能够满足工作量证明机制,区块的信息就不能改变,除非等价的工作量重新完成。由于后续的区块是在区块之后链接的,如果想要改变区块中的信息,就需要重新完成所有后续区块的整个工作量。

比特币工作量证明图

同时,工作量证明机制也解决了集体投票中谁占多数的问题。如果多数决定的方式是基于IP地址,一个IP地址一票,那么如果有人有权分配大量IP地址,则该机制被破坏。工作量证明机制的本质是一个 CPU,一票。“多数”决策表示为最长的链,因为最长的链包含的工作量最大。如果大多数 CPU 都由诚实节点控制,那么诚实链将扩展最快,并优于竞争链。要修改已经出现的区块,攻击者必须重做该区块的工作加上其后所有区块的工作,最终赶上并超越诚实节点的工作。

另一个问题是硬件的计算速度在快速提升,节点参与网络的程度会出现波动。为了解决这个问题,工作量证明的难度将使用移动平均目标来确定,即难度以预定的平均速率每小时出块为目标。如果块生成得太快,难度就会增加。

5. 比特币网络

运行网络的步骤如下:

1) 新交易向全网广播;

2) 每个节点将收到的交易信息合并到一个块中;

3) 每个节点都试图在自己的区块中找到足够难度的工作量证明;

4) 当节点找到工作量证明时,将其广播到全网;

5) 当且仅当该区块中包含的所有交易均有效且之前不存在时,其他节点才会认可该区块的有效性;

6) 其他节点表示接受该块,接受的方法是跟随块的末尾,做一个新的块来扩展链,接受块的随机哈希值是被视为新区域之前的随机哈希值。

节点总是认为最长的链是正确的链并继续工作和扩展它。如果两个节点同时广播不同版本的新区块,其他节点收到区块的时间会有差异。在这种情况下,他们将处理最先收到的块,但也会保留另一条链,以防后者成为最长的链。平局被打破,直到发现下一个工作量证明,并且其中一条链被确认为较长的一条,然后在另一条分支链上工作的节点将切换阵营并开始在较长的链上。在链上工作。

所谓“要广播的新交易”实际上并不需要到达所有节点。只要交易信息能到达足够多的节点,很快就会被整合成一个区块。块的广播对于丢弃的信息是容错的。如果一个节点没有收到某个特定的块,那么该节点会发现它缺少某个块,并且可以请求自己下载该块。

6. 比特币激励

我们同意这一点:每个区块的第一笔交易都是专门化的,它会生成区块创建者拥有的新电子货币。这增加了节点支持网络的动力,并提供了一种在没有中央机构发行货币的情况下将电子货币分配到流通中的方式。这种在货币体系中不断增加一定数量的新货币的方式,与消耗资源开采黄金、注入黄金进入流通非常相似。此时,CPU时间和功耗都是消耗资源。

另一个激励来源是交易费用。如果一笔交易的输出值小于输入值,差额就是交易费用,这将被添加到区块的激励中。只要一定数量的电子货币进入流通,激励机制就可以逐渐转向完全依靠交易费用,货币体系就可以不受通货膨胀的影响。

激励系统还有助于鼓励节点保持诚实。如果贪婪的攻击者能够调动比所有诚实节点加起来更多的 CPU 能力,他将面临一个选择:要么将其用于诚实工作以生成新的电子货币,要么将其用于二进制支付攻击。然后他会发现,按规矩办事,诚实做事更有利可图。因为这些规则允许他拥有更多的电子货币,而不是破坏系统并损害他自己财富的有效性。

7.比特币回收硬盘空间

如果最近的交易已包含在足够多的块中,则可以丢弃该交易之前的数据以回收磁盘空间。为了保证区块的随机散列值不被同时破坏,在对交易信息进行随机散列时,以默克尔树(Merkle tree)[7]的形式构建,使得只有root(根)包含在区块的随机散列中。哈希值。旧块可以通过截断树枝来压实。内部随机散列值不必保存。

比特币恢复硬盘空间示意图

没有交易信息的区块头只有 80 字节大小。如果我们将块生成速率设置为每 10 分钟一个,那么每年生成的数据位为 4.2MB。(80 字节 * 6 * 24 * 365 = 4.2MB)。2008 年,PC 系统通常的内存容量为 2GB。根据摩尔定律,将所有块头存储在内存中不会有问题。

8. 比特币简化支付验证

付款也可以在不运行完整网络节点的情况下进行验证。用户需要保留最长工作量证明链的区块头副本,它可以不断询问网络,直到确信它拥有最长的链,并可以通过 merkle 的分叉将其引向时间戳和时间戳。包含在区块中的交易。节点自己无法验证交易的有效性,但是通过回溯到链上的某个点,可以看到一个节点已经接受了它,并且它后面附加的区块是进一步证明整个网络一旦接受它。

比特币简化支付验证图

在这种情况下,只要诚实节点控制网络,验证机制就是可靠的。但是,当整个网络受到具有超强计算能力的攻击者的攻击时,它将变得更加脆弱。因为网络节点可以自己确认交易的有效性,只要攻击者能够继续保持算力优势,简化的机制就可以被攻击者捏造的交易所欺骗。那么一个可行的策略是一旦发现无效区块就发送警报,收到警报的用户会立即开始下载被警告该问题的区块或交易的完整信息,这样信息不一致就可以得到纠正。决心。对于每天有大量收付款的企业,

比特币简化支付验证图

9. 比特币的组合和拆分价值

虽然可以单独处理电子货币,但单独为每个电子货币发起交易会很笨拙。为了使价值易于组合和拆分,交易被设计为包含多个输入和输出。一般来说,它是由前一笔价值较大的交易组成的单个输入,或者是由之前几笔价值较小的交易组成的并行输入,但最多有两个输出:一个用于支付,另一个用于支付。用于更改(如果有)。

需要指出的是,当一个事务依赖于多个先前的事务时,这些事务每个都依赖于多个事务,但是没有问题。因为这种工作机制不需要展开之前发生的所有交易历史。

10. 比特币隐私

比特币隐私图

传统的铸币厂模型为交易参与者提供了一定程度的隐私保护,因为从受信任的第三方请求交易信息的尝试受到严格限制。但是,如果将交易信息广播到全网,则说明该方法无效。但是仍然可以保留隐私:保持公钥匿名。公众唯一知道的信息是一个人向另一个人发送了一定数量的货币,但很难将交易与特定的人联系起来,即公众无法确定这些人是谁。这与证券交易所发布的信息类似。股票交易的时间和交易量都有记录,可供查询,但交易双方的身份没有透露。

作为额外的预防措施,用户可以让每笔交易生成一个新地址,以确保这些交易不会追溯到共同的所有者。但是由于并行输入的存在,某种程度的回溯是不可避免的,这表明硬币都属于同一所有者。此时的风险在于,如果一个人的其中一个公钥被确认属于他,那么该人的许多其他交易都可以被追溯。

11.比特币计算

考虑以下场景:攻击者试图创建替代区块链的速度比诚实节点生成链的速度要快。即使达到了这个目的,整个系统也不会完全受制于攻击者的任意意志,比如凭空创造价值,或者掠夺不属于攻击者的货币。这是因为节点不会接受无效交易,诚实节点永远不会接受包含无效信息的区块。攻击者最多只能更改自己的交易信息,并试图取回他刚刚支付给别人的钱。

诚实链和攻击者链之间的竞争可以用二项式随机游走来描述。成功事件被定义为诚实链被扩展一个块,使其领先+1,而失败事件是攻击者的链被扩展一个块,使差距-1。

攻击者成功填补给定空白的概率可以近似为赌徒的毁灭问题。假设一个赌徒有无限的透支信用并开始赌博可能无限次以试图弥补他的不足。然后我们可以计算他填补空白的概率,即攻击者追上诚实链的概率,如下[8]:

比特币计算公式图

假设 p>q,攻击成功的概率随着块数的增加呈指数下降。由于概率是攻击者的敌人,如果他不幸运且不能迅速成功,那么他成功的机会就会随着时间的推移而变得渺茫。然后我们考虑收款人需要等待多长时间才能充分确信付款人难以更改交易。我们假设付款人是一个付款攻击者,想要在一段时间内说服收款人他已经付款,然后立即将付款还给自己。虽然收件人届时会发现,但为时已晚。

收款人生成一对新的密钥,然后只留出很短的时间将公钥发送给付款人。这将防止付款人提前准备好区块链并继续在该区块上操作,直到运气使他的区块链超过诚实链并立即执行付款的情况。在这种情况下,一旦交易被发送,攻击者就会秘密地准备一个包含交易的替代版本的平行链。

然后收款人将等待交易出现在第一个块中,然后等待 z 个块将其链接起来。此时,他仍然不知道攻击者究竟推进了多少个区块,但假设诚实的区块会花费平均预期时间来产生一个区块,那么攻击者的潜在进展是一个期望值为 的泊松分布:

在这种情况下,为了计算攻击者追上的概率,我们将泊松分布的概率密度乘以攻击者已经取得进展的块数与攻击者仍然可以追上该数字的概率。