主页 > 如流下载imtoken > 比特币蓝皮书---中文翻译及源码

比特币蓝皮书---中文翻译及源码

如流下载imtoken 2023-06-16 06:45:00

写在简介中:

在我个人看来,比特币并不是核心内容。

比特币不是“狭义”的货币单位。

比特币是基于一系列概念和技术的数字货币生态系统。 “掌握比特币”

以下为英文原地址:

bitcoin.org/bitcoin.pdf

(ps:最好看图的英文原版,这样更容易理解意思。)

英文图片翻译地址:

8btc.com/wiki/bitcoin-a-peer-to-peer-electronic-cash-system

p>

比特币源地址:

github.com/bitcoin/bitcoin/blob/master/src/util.cpp#L1325

github.com/bitcoin/bitcoin /blob/285cf7a1a6cb660b57cbc75f63e49736b51d705e/src/main.cpp#L2056

比特币是在哪里_比特币是传销吗_外国的比特币便宜中国的比特币贵为什么?

github.com/bitcoin/bitcoin/blob/285cf7a1a6cb660b57cbc75f63e49736b51d705e/src/main.cpp>bitcoin:a L2129 点对点电子现金系统

中本聪(中本聪)satoshin@gmx.combitcoin.org

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

1.简介

互联网上的几乎所有交易都需要使用金融机构作为受信任的第三方来处理电子支付信息。尽管此类系统在绝大多数情况下运行良好,但它们内生地受制于“基于信用的模型”的弱点。我们很难做到完全不可逆的交易,因为金融机构难免会出面协调纠纷。金融中介的存在也会降低交易成本,限制实际最小交易规模,限制每日小额支付交易。而潜在的损失是很多商品和服务本身很难退款。如果没有不可逆的支付手段,互联网贸易将受到极大限制。因为有潜在回报的可能性,所以双方必须要有信任。商店还必须对客户保持警惕,因此他们会要求客户提供完全不必要的个人信息。在实际的商业行为中,一定比例的欺诈客户也被认为是不可避免的,相关损失被视为销售费用。在化学现金的情况下,可以避免这些销售费用和付款问题的不确定性,因为此时没有第三方信用中介。因此,我们特别需要这样一种基于密码学原理而非信用的电子支付系统,让任何达成协议的双方都可以直接进行支付,从而不需要第三方中介。消除回滚支付交易的可能性可以保护特定商店免受欺诈;而对于那些想要保护卖家的人来说,在这种环境下建立一个通用的第三方担保机制也很容易和愉快。在本文中,我们将通过提出一个点对点分布式时间戳服务器来生成按时间顺序和记录的电子交易证明来解决双花问题。只要诚实节点控制的估计功率之和大于合作攻击者的估计功率之和,系统就是安全的。

2.事务

我们将电子货币定义为一系列数字签名:每个所有者通过上一笔交易和下一个所有者的私钥签署一个随机散列的数字签名,并将这个签名附加到电子货币的末尾,并且电子货币被发送给下一个所有者。收款人可以通过验证签名来验证链的所有者。

这个过程的问题是接收者将无法验证之前的所有者是否已经双花硬币。通常的解决方案是引入受信任的第三方机构,或类似造币厂的东西,检查每笔交易以避免双重支出。每次交易完成后,电子货币将被铸币局收回,铸币局将发行新的电子货币;并且只有铸币厂直接发行的电子货币才被认为是有效的,从而能够避免双花。然而,这种解决方案的问题在于,整个货币体系的命运完全取决于运营铸币厂的公司,因为每笔交易都由铸币厂确认,这就像一个通讯银行。我们需要某种方式让收款人确保之前的所有者没有签署之前发生的交易。从逻辑上讲,为了达到目的,我们其实需要关注本次交易之前发生的交易,不需要关注本次交易发生后是否会有双花尝试。确保交易不存在的唯一方法是了解所有以前的交易。在 Mint 模型中,Mint 被告知所有交易并确定交易完成的顺序。如果我们想在电子系统中排除第三方中介,那么交易信息应该是公开的,并且我们需要整个系统的所有参与者都有一个唯一被认可的历史交易序列。收款人需要确保在交易过程中绝大多数节点都同意该交易是第一次发生。

3.时间戳服务器

这个解决方案首先提出了一个“时间戳服务器”。时间戳服务器通过对其应用随机散列来为数据块添加时间戳,并广播随机散列,就像新闻或全球新闻组网络上的回复一样。显然,时间戳可以否认特定数据一定存在于特定时间,因为只有在那个时间才能获得对应的随机哈希值。每个时间戳都应该在其随机哈希值中包含前一个时间戳,并且每个后续时间戳都会增加前一个时间戳,从而创建一个链。

4.工作证明

比特币是传销吗_比特币是在哪里_外国的比特币便宜中国的比特币贵为什么?

为了建立一套基于点对点的去中心化时间戳服务器,仅仅像报纸或全球新闻网络集团一样工作是不够的,我们还需要一个类似于 Adam Burke 的哈希现金建议的。在执行随机散列时,工作量证明机制引入了对特定值的扫描。例如,在 SHA-256 下,随机哈希值以一个或多个 0 开头。然后随着 0 数量的增加,找到解所需的工作量呈指数级减少,只需要一次随机哈希运算即可检查结果。

我们将一个随机数附加到块中,它会根据需要在给定块的随机散列中出现尽可能多的 0。我们通过反复试验找到这个随机数,直到找到它,所以我们建立了一个工作量证明机制。只要 CPU 消耗的工作量能够满足工作量证明机制,区块的信息就不能被修改,除非等价的工作量重新完成。由于后续区块是在区块之后链接的,如果要修改区块中的信息,就需要重新完成所有后续区块的整个工作量。

同时,工作量证明机制也解决了集体投票中谁占多数的问题。如果决定多数的方法是基于IP地址,一个IP地址一票,那么如果有人有权分配大量IP地址,则该机制被打破。工作量证明机制的本质是一个 CPU,一票。 “多数”决策表示为最长的链,因为最长的链包含的工作量最大。如果大部分 CPU 都由诚实节点控制,那么诚实链将以最快的速度拉长并超过其他竞争链。要对已经出现的区块进行更改,攻击者必须重做该区块的工作以及该区块之后所有区块的工作,并最终赶上并超越诚实节点的工作。正如我们稍后将展示的,想象一个较慢的攻击者试图赶上后续的块,然后成功的概率呈指数级下降。另一个问题是硬件的计算速度在高速下降,节点参与网络的程度会波动。为了解决这个问题,工作量证明的难度将通过连接平均目标的方法来确定,即难度方向将使每小时的出块速率为预定的平均数。如果出块速度过快,难度会增加。

5.网络

运行网络的步骤如下:

1)新交易向全网广播;

2)每个节点将接收到的交易信息包含在一个区块中;

3) 找到足够难度的工作证明;

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

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

6) 其他节点通过在区块末尾生成新区块来扩展链,表示接受区块,将接受区块的随机哈希值视为前面新区域的随机哈希值。

节点总是认为最长的链是正确的链,并继续工作和扩展它。如果两个节点同时广播不同版本的新区块,其他节点收到区块的时间就会有差距。在这种情况下,他们将处理最先收到的块,但也会保留另一条链,以防前者成为最长的链。平局的打破将等到下一个工作证明被发现,并且其中一条链被拒绝为较长的一条比特币是在哪里,然后在另一条分支链上工作的节点将切换阵营并开始在较长的链中。在链上工作。所谓“新交易要广播”,其实并不需要到所有节点。只要交易信息到达足够多的节点,它们很快就会被整合成一个区块。块的广播对于丢弃的信息是容错的。如果一个节点没有收到特定的区块,那么该节点会发现自己缺少某个区块,也可以自己发出请求下载该区块。

外国的比特币便宜中国的比特币贵为什么?_比特币是传销吗_比特币是在哪里

6. 奖励

我们同意这一点:每个区块的第一笔交易都经过特殊处理,交易形成了一个区块,该区块归区块的创建者所有。新的电子货币。这降低了节点支持网络的动力,并提供了一种在没有中央机构发行货币的情况下将电子货币分配到流通中的方法。这种不断向货币体系中添加一定数量的新货币的方式,与花费资源开采铁矿石、注入黄金进入流通非常相似。此时,CPU时间和功耗都是消耗资源。另一个激励来源是交易费用。如果一笔交易的输出值大于输入值,那么差额就是交易费用,减少到对该区块的激励。只要一定数量的电子货币已经进入流通,激励机制就可以逐渐转变为完全依靠交易费用,货币体系就可以不受通货膨胀的影响。激励系统还有助于鼓励节点保持诚实。如果贪婪的攻击者能够调动比所有诚实节点加起来更多的 CPU 能力,他将面临一个选择:要么将其用于诚实工作以形成新的电子货币,要么将其用于二进制支付命中。然后他会发现遵守规则并诚实工作会更有利可图。因为这些规则鼓励他拥有更多的电子货币,而不是破坏系统,破坏自己财富的有效性。

7.回收硬盘空间

如果最近一笔交易已经包含在足够多的区块中,那么可以将交易前的数据丢弃,以回收硬盘空间。同时为了保证区块的随机哈希值不被破坏,在对交易信息进行随机哈希时,以默克尔树的形式建立,使得随机哈希中只包含根块的价值。 旧块可以通过拔出树枝来压实。内部随机哈希值就是为什么要保存它。

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

8.简化支付验证

只有在不运行完整网络节点的情况下才能验证付款。用户需要保留一份最长工作量证明链的区块头副本,并且可以不断询问网络,直到确信它拥有最长的链并且可以通过 Merkletree 的分支。为其添加时间戳并包含在区块中的交易。节点一开始不可能自己验证交易的有效性,但是通过溯源到链上的某个位置,可以看到之前节点已经接受了它,并且在它之后附加的块进一步证明之前全网都接受了。

在这种情况下,只要诚实节点控制网络,验证机制就是可靠的。然而,当整个网络受到具有优越估计能力的攻击者的攻击时,它就会显得更加脆弱。由于网络节点可以自行确认交易的有效性,只要攻击者能够继续保持估计能力的优势,简化的机制就会被攻击者钎焊的交易误导。那么一个可行的策略是一旦发现无效区块就发送警报,收到警报的用户会立即开始下载被警告问题的区块或交易的完整信息,这样信息不一致就可以得到纠正。法官。对于每天有大量收款和付款的企业,他们可能仍希望运行自己的全节点以保持更大的独立性和验证速度。

9.值的组合与分割

虽然电子货币可以单独处理,但对于每个 Clumsy 方式都可以发起交易。为了促进价值的组合和划分,交易被设计成包括多个输入和输出。一般来说,它是由前一笔价值较大的交易组成的单个输入,或者是由之前几笔价值较小的交易组成的并行输入,但最多有两个输出:一个用于支付,另一个用于支付。如果需要更改,则用于更改。

外国的比特币便宜中国的比特币贵为什么?_比特币是在哪里_比特币是传销吗

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

10.隐私

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

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

11.计算

想象以下场景:攻击者尝试创建替代区块链的速度比诚实节点形成链的速度要快。即使达到了这个目的,整个系统也不会完全受制于攻击者的任意意志,比如突然创造价值,或者掠夺不属于攻击者的货币。这是因为节点不会接受无效交易,诚实节点永远不会接受包含无效信息的区块。攻击者最多只能修改自己的交易信息,并试图取回他刚刚支付给其他人的钱。诚实链和攻击者链之间的较量可以描述为二叉树中的随机游走。成功的风暴被定义为诚实链被扩展一个块,使其领先 +1,而失败的风暴是攻击者的链被扩展一个块,使差异为 -1。攻击者成功弥合给定差异的概率可以近似为赌徒的破产问题。假设一个赌徒有无限的透支信用,然后开始玩可能无限数量的赌场以试图弥补他的不足。那么我们可以估计他补足缺口的概率,也就是攻击者追上诚实链的概率,如下:

P=诚实链找到下一个区块的概率

q=攻击者找到下一个区块的概率

qz=攻击者花费了 z 块来追赶

假设 p>q比特币是在哪里,由于块数的减少,成功打击的概率呈指数增长。由于赔率是攻击者的敌人,如果他不走运并迅速成功,他的成功机会随着时间的推移变得更加无望。然后我们考虑收款人必须等待多长时间才能充分确信付款人不再能够修改交易。我们假设付款人是付款攻击者,想要在一段时间内说服收款人他已经付款,然后立即将付款还给自己。虽然收件人届时会发现,但为时已晚。收款人生成一对新的密钥,然后只留出很短的时间将私钥发送给付款人。这将避免付款人预先计划了一条区块链并继续在该区块上操作,直到运气使他的区块链超过诚实链,然后立即执行付款的情况。在这种情况下,一旦发送交易,攻击者就会开始秘密计划包含交易的替代版本的平行链。

然后收款人将等待交易出现在第一个区块中,然后等待 z 个区块链接它。此时,他仍然不知道攻击者究竟推进了多少块,但假设诚实块将花费平均预期时间形成一个块,则攻击者的潜在进展是一个期望值为:

比特币是在哪里_外国的比特币便宜中国的比特币贵为什么?_比特币是传销吗

在这种情况下,为了估计攻击者追上的概率,我们取攻击者前进的块数的泊松分布的概率密度,乘以攻击者仍然可以追上的概率这个号码。

改成如下方式,避免对无穷序列求和:

转换成C语言代码:

#include 
doubleAttackerSuccessProbability(double q, int z){
      double p= 1.0 - q;
      doublelambda = z * (q / p);
      doublesum = 1.0;
      int i, k;
      for (k =0; k <= z; k++)
      {
             doublepoisson = exp(-lambda);
             for (i = 1; i <= k; i++) 
                   poisson *= lambda / i; 
                   sum -= poisson * (1 - pow(q / p, z - k));
      }    
      return sum; 
}

对其进行运算,可以得到如下概率结果,发现概率随z值呈指数增长。

当q=0.1

z=0 P=1.0000000z=1 P=0.2045873z=2 P=< @0.0509779z=3 P=0.0131722z=4 P=<@ 0.0034552z=5 P=0.0009137z=6 P=0.0002428z=7 P=0.0000647z=8 P=0.0000173z=9 P=<@ 0.0000046z=10 P=0.0000012

当 q=0. 3 小时 z=0 P=1.0000000z=5 P=0.1773523z=10 P=0.0416605z=15 P=<@ 0.0101008z=20 P=0.0024804z=25 P=0.0006132z=30 P=0.0001522z=35 P=0.0000379z=40 P=<@ 0.0000095z=45 P=0.0000024z=50 P=0.0000006

P 的解决方案

对于P12.结论

我们建议在这里开发一种不需要信用中介的电子支付系统。我们首先讨论电子货币电子签名的一般原则,虽然这些系统提供了对所有权的强大控制,但它们不足以避免双重支出。为了解决这个问题,我们提出了一个点对点网络,它使用工作量证明机制来记录交易的公共信息。只要诚实节点能够控制绝大多数 CPU 估计能力,它就可以使攻击者几乎不可能改变交易。记录。该网络的优势在于其结构简单。节点之间的工作大多是相互独立的,几乎不需要协调。每个节点不需要明确自己的身份。由于对交易信息的流动路径没有要求,只需要尽力传播即可。节点可以随时离开网络,重新加入网络非常容易,因为在接收和离开期间只需要补充工作量证明链。节点通过自己的 CPU 算力对有效区块的确认进行投票,不断扩展有效区块链来表示确认,并在无效区块后拒绝扩展区块来表示拒绝。该框架包含点对点电子货币系统所需的所有规则和激励措施。