四分钟解析比特币白皮书

在四分钟内解析比特币白皮书

安德烈弗朗索瓦的 照片

介绍:

目前互联网上的金融交易大部分完全通过第三方服务完成,其中主要是Visa,Mastercard,Paypal和其他银行机构。这种制度的核心基础是信任。我们相信这些机构去存储,验证和处理我们的电子支付信息。

这些机构采取各种措施来调解维持信任体系的费用,这反过来又增加了金融网络的交易成本。这些措施阻碍了公平参与个人和企业的经济活动,要么拒绝参与,要求身份验证,要么通过其他不公平的做法。这种货币体系与我们几个世纪以来的不同 - 通过现金或硬币进行的经济活动。但今天已经被信任第三方所取代。

基于数学的电子支付:

中本聪在2009年提出的比特币计划被认为是第一个基于数学而不是信任的数字化,分散化货币。比特币是一个点对点网络,这意味着交易直接发生在用户之间,没有可信任的第三方。它是分散的,这意味着没有人控制着“系统”,每个人都可以公开参与。它是数字稀缺的,这意味着没有人可以复制和花费同一枚硬币两次。这些技术在当时的计算机科学领域是前所未有的,而革命性发明的结合使得创建分散的点对点数字货币  - 比特币成为可能。

什么是银行系统(集中式网络)的交易?

交易是将$ X从A转移到B的请求。系统通过将A的余额减少$ X并将B的余额增加$ X来完成该过程。

在银行系统中,这很容易执行和维护。每当用户尝试花钱时,网络都会检查用户是否具有所需的余额。如果是这样,它从他们的账户中扣除金额。如果没有,网络因平衡不足而不允许交易。

集中网络

什么是比特币网络(分散式网络)中的交易?

由于网络的性质,交易在分散的网络中不是直截了当的。在一个分散的网络中,没有一个“机器”拥有绝对的真理。网络中的每台机器都有自己的真相版本,他们都在其中的一个版本上找到了共识。

不同类型的网络:集中式,分布式和分散式。

比特币网络使用分布式节点网络*,通过使用密码术和称为区块链的公共分布式账本验证交易区块链是公共资产负债表,记录所有发生过的比特币交易。这意味着网络中的所有参与节点都会维护区块链的副本并一起就区块链的一组更新达成一致。

* =参与网络的计算机和/或机器。

块由网络中的所有节点复制,它看起来像这样:

区块链复制

技术上,交易发生在比特币地址之间,而不是用户。比特币地址是一串长长的字母数字字符,并带有相关的公钥/私钥对。将私钥看作您只知道的实际密码。数字签名只能使用此密钥生成,并用于证明交易的所有权。稍后更多。

区块链中的更新如何发生?

当用户之间发生交易时,它会广播到整个网络。节点验证并将它们添加到它们的区块链副本中,然后再次广播到其他节点以通知它们有关更新。为了保持这个网络的完整性,每十分钟,一组交易(称为 - 块)被“接受”或“确认”并添加到区块链中。节点将接受的块发布到网络,并且循环继续。

什么是双重支出?

在身体检查中,签名会验证交易的所有权和有效性。它证明了业主写了支票,并愿意将钱从他的账户转移给收款人。但在比特币网络中,业主通过数字签名并将其附加到交易中来转移硬币。 数字签名看起来像这样:

电子签名

收款人可以通过使用加密魔法来验证签名以确认所有权。但问题是,收款人想验证付款人是否已经花了向他承诺的硬币,即硬币是否花了两倍。收款人需要证明,在交易时,他的交易是第一次交易,其他交易应按正确的顺序处理。如果付款人试图不止一次地使用“相同”的硬币,系统应该拒绝他们。

比特币网络如何防止双重支出?

比特币网络通过使用区块链和称为工作证明的共识流程解决了这个问题

我们知道网络中的节点知道所有的事务,并且它们都有一个历史记录。工作证明机制期望节点消耗能量来更新区块链。使用电力是证明他们已经完成工作以获得结果的一种方式。他们解决了一个很难(但可行)的计算问题,这个问题很快就可以验证,但是生产起来非常耗时。

这意味着如果节点想要在区块链中进行恶意更新,节点将不得不消耗能量。他们的计算资源必须高于网络中所有诚实的节点。这在数学上几乎不可能。

这个难以计算的问题是什么?

新形成的块包含作为工作证明的随机数值。一个随机数就是一个数字,当与块体进行散列时会产生网络期望的“特定输出”。该系统需要恒定的散列才能接受一定数量的前导零。

工作证明:找到现时值

由于SHA256散列函数是完全伪随机函数,因此创建块的唯一方法是使用随机数的试错法。使用随机数进行验证的过程很容易验证,但要预测随机数值几乎是不可能的。所需的平均工作量对于更多所需的零来说是成倍的困难。

如果两个节点找到一个随机数,会发生什么?

发现nonce值的第一个节点将其广播到网络,并开始在链上的下一个块上工作。有时会有多个节点发现正确的散列,或者新块没有到达网络中的所有节点。这导致同时创建多个分支。它看起来像这样:

采矿期间创建了几个分支

工作证明表示最长的连锁店关于CPU能源的工作量最多。因此,只要节点接收到分支最长的块,它就会忽略所有较短的分支并开始在新块上工作。

注意:节点将始终选择从其他节点接收到的第一个块,并将其他块保留在其缓存中。

矿业:

采矿是在不断增长的区块链中反复收集,验证和更新广播交易的过程,以确保每个人都同意交易的顺序。矿工,这是网络中的节点,是保持区块链一致和安全的矿工。由于没有中央机构发放硬币,因此该系统每次成功开采一个新区块时都会用新比特币激励矿工,即解决硬计算问题并为区块链添加区块。这是在网络中创建新比特币的唯一方式。

请注意,矿工与使用比特币网络传输比特币的用户(如你和我)不同。

比特币挖掘

认识概念:

默克尔树:

默克尔树是一种在叶节点处具有数据的二叉树。中间节点由两个孩子的散列组成。哈希向上传播到树顶部,这有助于验证欺诈事务,因为数据的小改变将改变上面所有节点的哈希。默克尔树提供了一个非常有效的方法来确定一个块是否与链中的其他块不同。

称为“简化支付网络”(SPV)的另一种协议仅下载块头和与其关联的事务的分支。它有助于确保区块链安全,并通过下载区块链的一小部分来提供平衡。

可视化块内的Merkel树

结论:

比特币白皮书提出了一个独特的革命性系统,用于在没有可信第三方的情况下进行电子支付交易。具有自己的交易历史副本的节点网络 - 区块链,维护系统的一致性; 数字签名授权交易和所有权; 工作证明的安全性,并使攻击者无法在计算上篡改交易历史。

参考文献:

比特币白皮书

图片来源:

paperalternative

谢谢阅读!如果您相信区块链对技术的影响可以让您喜欢刚刚阅读的内容,请点击并按住👏,或在下面留言。这将帮助我们获得更多的观众。

本文的版权归 庹阳 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hbbliyong

WPF Trigger for IsSelected in a DataTemplate for ListBox items

<DataTemplate DataType="{x:Type vm:HeaderSlugViewModel}"> <vw:HeaderSlug...

4074
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 断路器 HystrixCircuitBreaker

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. HystrixCircuitBreaker 3. HystrixCircuitBreaker....

5417
来自专栏杨龙飞前端

scrollto 到指定位置

2564
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2636
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3265
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

32810
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

7218
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2932
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2747

扫码关注云+社区