比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书

这篇具有很好参考价值的文章主要介绍了比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

考虑当前手机上的余额、手里的现金,其实本质都归属于银行发给我们的欠条,是在政府监管下的流通货币。当我们在做交易时,银行属于可信第三方,银行发行的货币在交易过程中起到了重要作用。但基于金融机构的受信任第三方容易受调解纠纷的影响。这些成本和支付的不确定性可以通过使用实物货币来避免,但不存在在没有可信方的情况下通过通信渠道进行支付的机制。

在2008年,中本聪提出了本文,该论文被认为是区块链的白皮书。讲解了Bitcoin这个分布式账本系统的运转方式。

Bitcoin是一个完全不需要第三方的交易系统,通过计算保证了交易的不可逆性,保证了卖家的资产安全,Bitcoin使用点对点分布式时间戳服务器来生成交易时间顺序的计算证明。只要诚实节点共同控制比任何合作的攻击者节点组更多的 CPU 功率,系统就是安全的(后续会讲解为什么是安全的)。

密码学相应基础

散列函数(英语:Hash function)又称散列算法哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。

当前业界所用比较广泛的加密方式即是SHA256[在线加密演示],可以将任意数据(文本、图片、视频)转换成256位长度的01字符串(转换为16位表示法就是)。使用该标准,使用方可以很轻易的生成所需要加密数据的哈希值(即称为摘要),但是其他人很难通过摘要还原出原始数据

非对称加密

简单来说,公钥和私钥不相同,即可称之为非对称加密,比较经典的算法即是RSA算法

用户可以同时生成公钥和私钥,私钥自己保留,然后交给问价接收者公钥,用户通过私钥对数据进行加密,接收者只能通过公钥对该数据进行解密

2. Transactions

在文章中,中本聪将电子硬币定义为数字签名链

We define an electronic coin as a chain of digital signatures.

每个人在Bitcoin 注册账号后,可以通过一个随机数生成一对公钥和私钥,根据公钥可以生成自己的钱包地址

当A对B发起交易时,A需要公开自己的公钥和钱包地址,B只需要提供自己的钱包地址(只是针对交易内容),因为B需要知道A的公钥,才能对A地数字链所有权进行验证。而下面介绍的是全局验证

假设前一个交易的已经存在hash值,此时A拥有该链(注意是交易链,不是区块链),A对B发起交易,A上一笔交易的散列值为sign0,此时需要sign0 和B的公钥一起进行散列运算得到A的签名sign A, sign A是由A的私钥签名所得到的。如果想验证A的签名就要使用A的公钥。

当A将自己的签名附在交易中之后,这笔电子货币的所有权就从A转给了所有者B。

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

此时A对应的就是图中的Owner 1,B对应的就是图中的Owner 2,所发生的交易也就是中间的块过度到右边的块(不是指的区块,只是单纯图中的形状),对应着该块电子硬币的所有人从A转给了B

由于没有第三方的监管,所有的交易必须公开宣布,并且需要所有的分布式账本的参与者对交易的历史顺序达成一致。但是只通过该方法无法解决双重支付的问题

双重支付:假设A只拥有10个比特币(BTC),他在发起一笔10BTC的交易给B后,又发起了一笔10BTC的交易给C

收款人将难以检验之前的某位所有者是否对这枚电子货币进行了双重支付。传统银行的解决方案是引入信得过的权威:比如类似于造币厂( mint )的机构。在发生每笔交易后,都需要将所交易的电子货币收回。后面会有该内容的相应解决办法

Timestamp Server

本文为了解决该双重支付的问题,添加了时间戳服务器的使用,需要在对数据求哈希值时,加入当前时间,以此之后,每个散列都包含上一个交易发生的时间戳,以及本次发生交易的时间戳。这个后面会讲述

Proof-of-Work

中本聪最开始定义的区块链中,每个区块差不多1MB大小,每个区块最多只能包含2000多笔交易,每十分钟只能生成一个区块,意味着每十分钟就只能处理2000多笔交易。

当需要形成一个块时,不同的矿工会竞争完成一个"数学题",谁实现了本次数学题,也就完成了本次所需要的"工作量"

所需要实现的内容,是构建一个字符串

  1. 字符串 = 前区块的头部 + 本块中的交易信息 + 时间戳 ( 时间戳服务器生成 ) + 随机数 字符串 = 前区块的头部+本块中的交易信息+时间戳(时间戳服务器生成)+随机数 字符串=前区块的头部+本块中的交易信息+时间戳(时间戳服务器生成)+随机数
  2. 对该字符串求两次hash
    1. Hash=sha256(sha256(字符串))

要求:要求所生成的256位hash值,前N位必须为0。

矿工根据自己的时间戳,以及不断尝试随机数,最终达成所需要满足的要求,当发现了该随机数,即广播自己完成了本次工作。此时矿工会构建该块,并会得到构建区块所提供的奖励。(也会出现两个矿工同时达成目标,竞争块的情况,后续会讲到

除了构建区块的奖励外,矿工还会对交易进行抽成,交易方需自己指定本次交易的手续费,如果没有手续费,不会有矿工对本次交易进行结块。

比特币是一个没有通胀的货币,发行是有限的,矿工出块的奖励每四年会减半,到2140年,发行量达到2100万后,将不会再有出块奖励。

难度设置

关于所生成的256位hash值,前N位的N设置,决定了构建块的难度

N越大,随机生成满足条件的概率越小,随N的增长呈指数级降低

做个简单的计算题,以10000台矿机为例,每台计算机的运行次数为10T/s = 1.4 ∗ 10 13 次 / s 1.4*{10}^{13}次/s 1.41013/s,此时需要满足10分钟构建一个块的要求,

1.4 ∗ 10 次 / s 13 ∗ 1 0 4 ( 机器数目 ) ∗ 600 s ( 10 分钟 ) = 2 N 1.4*{10}次/s^{13} * 10^4(机器数目)*600s(10分钟) = 2^{N} 1.410/s13104(机器数目)600s(10分钟)=2N

此时所计算的N大小约为66,所需要满足前66位为0,能在10分钟内构建块

Network(系统运行机制)

因此Bitcoin这个分布式账本的运行方式就呼之欲出了

  1. 新交易被广播到所有节点(矿工们)
  2. 每个节点根据手续费等因素选择是否将交易收集到一个区块中
  3. 每个节点同时都致力于为其区块寻找困难的工作量证明
  4. 当节点找到工作量证明是,他会将块信息广播到所有节点,
  5. 其他节点会验证该块的交易是否有效,如验证有效后,会接受该块,并且将放弃对自身块工作量证明的寻求
  6. 节点通过使用已接受块的哈希值作为前一个哈希值创建链中的下一个块来表达对块的接受。(继续寻找新的区块)

节点始终遵循最长链原则,此时就可以解决上一节两个矿工的情况

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

矿工A和矿工B同时完成了对新区块的构建, 同时广播该块的信息,黑色小人先收到A矿工的广播信息,构建自己的A块,红色小人先收到B矿工的广播信息,构建自己的B块,两组分别基于自己的新块构建下一个块,当某一个小组的新块构建成功后,会广播自己的新块,另一个小组在收到该新的最长链的消息后,放弃之前的分歧链,选择在最长链之后构建新块。

通常两个小组的算力决定了下一个区块的归属。

同样,如果某一个区块的消息丢失,也是借鉴相似的运行方式,在收到下一个区块,意识到自己不是最长链的情况下,会放弃构建自己的区块,选择最长链作为自己的主链并继续自己的工作

当在消除分歧时,假设消除矿工A构建的新块,会收回矿工A的手续费和交易构建费(这笔交易应该也是发生在自己的下一个区块构建上,本质上还是区块链上支持的一笔交易),如果A执意选择在自己的块上构建,随着落后的区块数目越来越多,所能追上的概率也就越来越小,最后一节计算了在N个节点落后的情况下追上的概率。

Incentive

本系统的激励机制如上一节描述的那样

交易可以是由完全不熟悉本系统的两个人发起,由其他人对该交易进行记账。别人(矿工)帮你保存该交易的记录,也就会收到该行为所带来的奖励

假设A向B发起一笔10BTC(bitcoin)的交易,他会在发起的同时,标注手续费的大小,该手续费也就是给矿工们保存记录的抽成。

这种激励机制会很有效的鼓励节点保持诚实,因为在分布式账本中要发生欺骗,通常意味着攻击者拥有本系统中超过50%的算力,在该激励条件下,选择遵守该系统的标准,反而更有利于获得财富

Reclaiming Disk Space

一旦硬币中的最新交易被埋在足够多的区块下,之前花费的交易就可以被丢弃以节省磁盘空间。 为了在不破坏区块哈希的情况下实现这一点,交易在默克尔树 中进行哈希处理,只有根包含在区块的哈希中。 然后可以通过砍掉树的树枝来压缩旧块。 内部哈希不需要存储

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

基于Merkle Tree,比如验证事务3是否真实发生,只需图中的Hash01Hash2的值即可,并不需要知道其他Hash值,Nonce代表的是随机数

关于Merkle Tree 可以看下这篇文章:MIT 6.824 Lecture 18 Fork Consistency & CT & Merkle Tree的应用

这些事务都是在一个Block块中,可能是由多个不同的发起者生成的交易

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

Simplified Payment Verification

无需运行完整的网络节点即可验证付款。 用户只需要保留最长工作量证明链的区块头副本,他可以通过查询网络节点来获取该副本,直到他确信自己拥有最长的链,并获得将交易链接到区块的 Merkle 分支 他无法自己检查交易,但通过将其链接到链中的某个位置,他可以看到网络节点已接受该交易,并在进一步确认网络已接受该交易后添加区块。

Combining and Splittng Value

尽管可以单独处理硬币,但为转账中的每一分钱进行单独的交易会很麻烦。 为了允许价值的分割和组合,交易包含多个输入和输出。 通常情况下,要么是来自较大的先前交易的单个输入,要么是组合较小金额的多个输入,并且最多有两个输出:一个用于付款,一个将找零(如果有)返回给发送者。

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

应该注意的是,扇出(其中一个事务依赖于多个事务,而这些事务又依赖于更多事务)在这里不是问题。 永远不需要提取交易历史记录的完整独立副本。

扩展

结合上两节,本节讲一下身份验证、余额检查和双重支付的问题

身份验证

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

  1. A发起一笔交易,通过Hash生成该交易的摘要,然后使用私钥对该摘要进行加密生成"密码"
  2. A向全网络广播自己的这笔交易(又可能并不是本人广播的), 附带自己的公钥和经过私钥生成的密码
  3. 其他人(矿工)根据这笔交易hash生成摘要1,然后使用公钥对密码进行解密生成摘要2
  4. 如果摘要1和摘要2比对后法案一致,证明A的密码是正确的,意味着“A”有唯一的私钥,确定是A地广播

余额检查

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

BitCoin分布式账本通过追溯的方式确定用户的余额,当已有的块上,A已经拥有了两笔交易,分别是获取的50个BTC,以及已经支付的20个BTC

此时当A发起10BTC的交易给B,此时矿工们会检查之前的块,如果通过,会将其构建在自己的块中,本处为通过

此时当A发起60BTC的交易给B,此时矿工们也会检查之前的块,不通过

双重支付

这小节来讲一下双重支付的问题,假设A有10个BTC,然后同时发起了两笔交易

  1. 给B转账10BTC
  2. 给C转账10BTC

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

此时有两组矿工分别先后接受了这两笔交易,假设上面这一组先接受了A给B发起的交易,下面这组先接受了A给C发起的交易,矿工们在确认先接受的交易符合余额的要求,后面接受的交易不符合要求,舍弃。

此时两组会分别将这两个交易打包到自己的块中,然后争取完成工作量证明,假设上面的红色框中的小人完成了工作量证明。A给B发起的10个BTC的交易完成。他会广播自己构建的新块,此时下面的小组就会放弃自己构建的A发起的给C的交易记录

Privacy

该分布式系统通过保持公钥匿名

公众只会看到一笔交易的发起,却看不到交易者的信息,同时,为了防止个人地址被攻击。

每笔交易都应使用新的密钥对,以防止它们链接到共同的所有者。 对于多输入交易,一些链接仍然是不可避免的,这必然表明它们的输入由同一所有者拥有。 风险在于,如果密钥的所有者被泄露,链接可能会泄露属于同一所有者的其他交易。

Calculation

本节就是计算了在落后z个区块后,追上最长链的概率

p = 诚实节点发现新块的概率 q = 攻击者发现新块的概率 q z :攻击者在落后 z 个区块后追上的概率 p = 诚实节点发现新块的概率\\q=攻击者发现新块的概率\\q_z:攻击者在落后z个区块后追上的概率 p=诚实节点发现新块的概率q=攻击者发现新块的概率qz:攻击者在落后z个区块后追上的概率

感兴趣的可以看看这个公式的计算过程

p和q对应着算力比率,通常情况下,攻击者的算力会远远小于诚实节点的算力
比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式
论文中给出了攻击节点在0.1和0.3概率线,落后z个节点,追上的概率。

比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书,大数据,区块链,分布式

以及计算了需要多个区块,在不同攻击者算力占比的情况下,追上概率小于0.001的情况

通常情况下,大额的比特币交易,只有在构建六个长区块的情况下,才会确认这笔交易完成。防止被恶意追上的情况。

总结

由于比特币对交易双方隐私的保护,以及比特币价值不断增长,越来越多不法分子通过Bitcoin这个分布式账本完成非法交易。同时,由于激励机制与实际财富绑定,滋生了大量的矿工,为了分一杯羹,甚至一些电脑制造业和显卡厂商下场参与比特币的获取。不得不承认,有些人通过比特币实现了财富扩张,但也有很多跟风者做了韭菜。

投资不代表投机,抛开滋生的灰色产业不谈,比特币所产生的影响是划时代的,他真正将分布式系统知识融入进了金融领域,对传统货币体系造成了冲击。社会上很大一部分价值的本质最终还是来源于知识。文章来源地址https://www.toymoban.com/news/detail-845892.html

Reference

  1. https://ccie.lol/knowledge-base/bitcoin-a-peer-to-peer-electronic-cash-system/
  2. 【比特币和区块链啥原理?矿机挖矿咋回事?李永乐老师讲比特币(1)】 https://www.bilibili.com/video/BV1Bb411B7dq/?share_source=copy_web&vd_source=30d519915fac59bb5f6e7a62b910a5a2
  3. 【比特币交易如何防伪?私钥公钥地址啥意思?李永乐老师讲比特币(2)】 https://www.bilibili.com/video/BV12b411q7ku/?share_source=copy_web&vd_source=30d519915fac59bb5f6e7a62b910a5a2
  4. 【新人必看,10分钟了解比特币工作原理和流程,你不得不懂的知识。区块链资讯 比特幤bitcoin||比特币BTC】 https://www.bilibili.com/video/BV15z411v7ob/?share_source=copy_web&vd_source=30d519915fac59bb5f6e7a62b910a5a2

到了这里,关于比特币和区块链详解: Bitcoin: A Peer-to-Peer Electronic Cash System白皮书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探索比特币的世界:Bitcoin Ruby 框架

    如果你对加密货币感兴趣,并希望在开发中使用比特币,那么 Bitcoin Ruby 是一个值得考虑的框架。它是一个用于处理比特币交易、区块以及其他相关功能的纯 Ruby 库。 Bitcoin Ruby 可以帮助你在 Ruby 环境中构建与比特币相关的应用程序。它可以用来: 处理比特币交易 创建和验证

    2024年03月26日
    浏览(31)
  • 在 macOS Mojave 之后的每一个版本中都隐藏着比特币白皮书(Bitcoin Whitepaper)

    今天我在尝试解决打印机故障问题时,发现了 自2018年Mojave版本以来,macOS都附带了一份Satoshi Nakamoto(即中本聪)的比特币白皮书PDF副本[1] 。 我已经询问了十几位使用Mac的朋友,他们都确认macOS里面有这个文件。这个文件从 Mojave(10.14.0)到当前最新版本Ventura(13.3)的每一个

    2023年04月09日
    浏览(28)
  • 区块链当中Bitcoin的Segwit地址生成原理

     Segwit地址又称隔离见证地址。在Bitcoin Blockchain上,经常可以看到类似 bc1qmy63mjadtw8nhzl69ukdepwzsyvv4yex5qlmkd 这样的以 bc 开头的地址,这种地址就是隔离见证地址。 Segwit地址有好几种,一种是以 3 开头的隔离见证兼容地址(Nested Segwit Address),从该地址上无法区分到底是多签地址

    2024年01月23日
    浏览(29)
  • 区块链网络搭建之Peer结点

    目录 一、利用Fabric源码中提供的core.yaml文件进行修改 1.Peer section 2.VM section 3.Chaincode section 4.Ledger section 5.Operations section 6.Metrics section 二、创建一个目录保存修改好的core.yaml文件 1.创建目录 2.启动命令     创建命令:mkdir -p /var/qklszzn/peer 在core.yaml目录下执行以下命令来启动pee

    2024年02月05日
    浏览(25)
  • 什么是区块链?区块链技术和比特币背后的故事

    作者:禅与计算机程序设计艺术 区块链是一种分布式的、去中心化的、非国家级的计算机网络技术,它是一个开放的系统,任何人都可以在不受任何约束的情况下进行去信任的数据交易和共识。它的应用场景包括数字货币,数字身份,金融交易,游戏领域,基于区块链的智慧

    2024年02月08日
    浏览(31)
  • 比特币如何运作?区块链、网络、交易

    免责声明:观点来自原文作者,与本人无关,文章仅供参考学习,请自行辨别真伪,切勿跟风,风险自担。 翻译原文:https://www.blockpit.io/blog/how-does-bitcoin-work 比特币是一种革命性的数字货币,由化名中本聪的匿名人士或团体于 2008 年发明。它是世界上第一个加密货币,负责将

    2024年03月24日
    浏览(37)
  • 浅谈区块链1.0-比特币

    1. 比特币解决的问题 高度自治:国际经济危机 无国界贸易:不同国家进行的贸易或者不同平台进行贸易  不可窜改:例如银行交易可能会被窜改数据  隐私安全:传统汇款方式会暴露你的个人信息,一旦数据库被别人入侵,那么你的所有信息将会被泄露 2.  去中心化模型  

    2024年02月02日
    浏览(39)
  • 区块链工作原理(区块链治理系统、比特币、以太坊、智能合约)

    每个国家或者城市都有自己的一套治理系统来创建、更新和执行法律。区块链也都有自己的治理系统。总的来说,区块链治理可分为两类: On-Chain Governance Off-Chain Governance 链上治理是一个管理和实施加密货币区块链变化的系统。在这种类型的治理中,制定变化的规则被编码到

    2024年02月02日
    浏览(43)
  • 比特币,区块链及相关概念简介(三)

    以下内容结合了chatgpt 3.5以及网络文章。 用于学习记录。 简介: 什么是区块链,区块链关键特点,区块链的存储,区块链相关的工作;区块链网络节点,区块链网络相关,区块链和Rust,区块链新技术,区块链相关网站等。 区块链是一种 分布式数据库技术 ,用于记录交易数

    2024年03月19日
    浏览(40)
  • 18.1. Fabric2.2 区块链农产品溯源系统 - 多Peer部署(扩展)

    这是一篇后补文章,看时间大家能够看出来,通过前面的学习,大家知道如何增加组织、如何部署多Orderer,本节介绍如何在一个组织内部署多个Peer节点,本节是基于上一节操作的继续,脚本也是基于上节进行修改的。 1. 目标:为组织1新增一个节点 peer0.org1.example.com peer0.or

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包