2008年,中本聪发布了比特币白皮书《一种点对点的电子现金系统》,从此开启了区块链技术的新天地,虽然中本聪在2011年后销声匿迹,但白皮书中涵盖了中本聪最希望传递的比特币的世界观,对于每一个区块链入门者都是必读,以下为个人的总结与点评

1.介绍(Introduction)

基于信任模型的交易:

(1)传统金融中介增加成本

(2)支付交易可逆,欺诈不可避免

基于密码学原理:

(1)点对点交易,不存在金融中介

(2)不可回滚的支付交易,防止欺诈

个人点评:本节强调的是目前传统的中心化金融模型有许多不可避免的问题,可以通过密码学保证的分布式账本解决。

2.交易(Transactions)

每一位电子货币所有者通过对前一次交易和货币接受者的公钥(pubilc key)签署一个hash数字签名,然后发送给下一位所有者。

(1)收款人使用付款人的公钥(public key)校验,是否是正确的付款人发送

(2)由于交易中有收款人的公钥,所以只有收款人使用自己的私钥才能解锁并将该货币传递下去

但以上过程仍然有问题,无法解决双重支付问题,即货币所有者将同一电子货币签名后发送给多个收款人。
传统金融:通过中介机构判断并确认用户是否进行双重支付
比特币:通过公开宣布货币的所有交易,形成唯一公认的历史交易序列,由系统内所有参与者认同交易

个人点评通过非对称加密的公私钥,可以解决虚拟货币的归属权问题,但是同一个货币可以由归属人付给多个人,也就是双重支付,仅使用加密在货币体系里是不够的。(这里其实隐含了货币体系必须要有人记账)

3.时间戳服务器(Timestamp server)

对区块形式存在的一组数据实施随机散列(HASH)加上时间戳,将区块连成一个链条,形成区块链

个人点评本节实际上给出了比特币账本的雏形,也是区块链(Blockchain)名称的来源,每一个区块就是一页账本,他们的顺序是由时间戳来决定,由Hash函数保障账本的真实性。

4.工作量证明(Proof-of-Work)

计算一个随机数(Nonce),将随机数与区块头一起计算随机散列值(Hash),该散列值要满足以N个0开头(N为变量,可通过N来控制计算难度,N越大,难度越大),此即为“挖矿”的内部原理。

工作量证明的用途:
(1)保证区块链(Blockchain)的不可篡改性,由于区块形成了链条,如果要修改区块,必须重新完成之前所有的工作量,所以随着区块链高度越高,越旧的区块越难以篡改。
(2)工作量证明的本质是一CPU一票(与传统的一IP一票不同,攻击者要获得更多的票数需要投入大量的成本),如果大多数的CPU为诚实节点,那么正确的链条将以最快的速度延长。

个人点评上一节的模型能保证账本的顺序和真实性,但是无法阻止人为的创造多个账本,而这些账本中只能有一个是被大家认可的,所以必须创造一种共识机制。比特币的共识机制即为工作量证明(POW),即工作量(Hash计算)最大的那个账本是大家公认的正确账本。

5.网络(Network)

网络的运行步骤如下:

(1) 新的交易向全网进行广播;

(2) 每一个节点都将收到的交易信息纳入一个区块中;

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

(4) 当一个节点找到了一个工作量证明,它就向全网进行广播;

(5) 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;

(6) 其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。

两个节点如果同时完成了工作量证明,并进行广播,由于网络传输的原因,可能出现两条一样长度(工作量)的链条,该情况要等下一个工作量证明被发现来判断哪一条最长。

个人点评:全网的节点(矿工),将通过努力完成工作量证明来争夺将新区块写入区块链的权利(记账),如果有人先完成并被确认有效,所有节点就会转向争夺下一个区块的写入权。

6.激励(incentive)

(1)通过完成工作量证明,可以获得一定量新的电子货币作为激励

(2)另外一个激励为交易费,如果比特币(2100万枚)全部已进入流通,激励将完全依靠交易费,使货币免于通货膨胀

激励系统也有助于鼓励节点保持诚实,如果一个攻击者拥有大量的算力,他利用这些算力进行挖矿收益很可能高于攻击比特币网络。

个人点评网络节点(矿工)争夺记账权相应的必须有一定的激励,否则没有人有动力去记账,这种激励就是记账人可以获得一定量的新比特币和交易费。(比特币的产出量为记录一个块50枚比特币,每4年减半,2018年已经经过两次减半,目前为12.5枚)

7.回收硬盘空间

交易信息构成Merkle树的形态,通过merkle树的原理可知,只需要根节点(root)与路径即可验证交易的正确性,使得用户只需要存储区块头(含有Merkle root),在需要时获取Merkle树路径即可校验一笔交易。

不含全部交易信息的区块头(Block header)仅80字节,区块生成速率约为10分钟一个,每一年只产生数据4.2MB

个人点评:比特币的区块头始终只有80字节,却可以包含交易相关信息,即是利用梅克尔树记录交易,在区块头放入梅克尔根(梅克尔树我们在后面章节会详细讨论)。

8.简单的支付确认

在不运行完整网络节点的情况下,也能够对支付进行校验。节点只需保留区块头,通过merkle的分支校验某次交易是否存在即可。

个人点评:早期的比特币账本数据量较小,全网节点实际都是全节点(存储账本所有数据),但是中本聪在设计初已经预见到账本容量随着时间持续膨胀,全节点的负担将会越来越重。此时可以使用只保留区块头的方式,利用梅克尔树来验证交易,这样可以大大减少节点的存储占用空间。

9.价值的组合与分割(Combining and Splitting Value)

每次发起一次交易,输入可以有多个,输出只有两个:一个用于支付,另一个用于找零

个人点评:比特币作为货币,需要具备可灵活分割合并使用的特性,通过输入输出的分割与合并使交易变的非常灵活。

10.隐私(Privacy)

传统模型:金融中介提供一定的隐私保护

比特币:通过公钥生成的地址,交易虽然在全网广播,但公众能得到的信息仅为某人将一定数量的比特币发给了另外一个人,但无法确认这些人是谁。

个人点评:由于比特币的账本是全网公开的,所以隐私保护是一个重要课题,比特币利用公钥Hash作为交易地址来对外表现交易的输入输出过程,这里有两个好处:
(1)由于公私钥是随机生成的,仅知道公钥Hash并不能知道具体是谁做了交易
(2)某公钥地址的私钥持有人,能随意支配该地址上锁定的货币,但没有人知道谁是真实的私钥持有人

11.计算

攻击者即使拥有了巨大的算力,也仅能更改他自己的交易信息,试图拿回他刚付给别人的钱(双重支付)或者拒绝别人的交易信息。无法凭空创造价值或掠夺别人的货币。

--后面内容涉及较多数学计算,不再详述,有兴趣的自行翻阅白皮书。

个人点评:工作量证明有一个风险,就是有人如果控制了全网大量的算力(如超过51%),实际上他可以控制大部分的记账权,对于比特币网络将产生风险。但是比特币的设计将这种风险产生的后果降到了较低的水平:

(1)由于仅有算力,没有私钥,无法随意掠夺别人的货币。

(2)虽然他可以拒绝别人的交易计入账本,但这种破坏实际并不会对别人造成货币的损失。

(3)他还可以试图进行双重支付,但如果在大额交易中对方进行多个块(如6个以上)确认来验证交易,仍然很难完成双重支付。并且这种攻击发生会很容易被察觉,比特币社区可以快速做出应对。

综上所述,进行51%算力攻击需要花费巨大的成本,但是获益其实并不大,如果能掌握51%算力,进行攻击的收益可能远不如成为一个诚实节点进行挖矿的收益。当然如果有人以破坏比特币网络为目的,并完成51%算力攻击,势必会对比特币产生影响,但并不可能杀死比特币。

白皮书链接:https://github.com/GammaGao/bitcoinwhitepaper/blob/master/bitcoin_en.pdf 

作者:Aaron

深入比特币原理(一)——比特币白皮书总结与点评相关推荐

  1. 比特币现金与比特币呈竞争关系 分析表示加密货币之间的竞争不是坏事

    自比特币现金于2017年8月诞生以来,其价格在最初大涨之后出现了普遍下滑的趋势,而比特币价格却一直在打破纪录新高.许多人认为比特币现金是比特币的直接竞争对手. 比特币现金价格激增已经导致像eToro这 ...

  2. 比特币耶稣Roger Ver:比特币现金是比特币扩容问题的答案

    深猴财经/xiaoyemeidian 消息,比特币耶稣Roger Ver和Yours.org首席执行官Ryan X. Charles本周在香港四季酒店录制了一期视频节目,这两个人讨论了他们对于数字货币 ...

  3. 深入比特币原理(三)——交易的输入(input)与输出(output)

    本节内容非常重要,如果你不能很好的掌握本节内容,你无法真正理解比特币的运行原理,请务必要学习清楚. 比特币的交易模型为UTXO(unspend transaction output),即只记录未花费的 ...

  4. 用人话解释比特币原理

    究竟是什么让一枚虚拟货币的汇率在3年间翻了25000倍,是什么力量让央行副行长"感兴趣"但"不承认",抛开投机与商业欺诈比特币作为一种工具究竟有没有价值?欢迎收 ...

  5. python比特币挖矿_比特币如何挖矿(挖矿原理)-工作量证明

    想知道更多区块链技术,请搜索[链客区块链技术问答社区] 链客,有问必答!! 我们知道了信息计算Hash打包的过程:交易记录.时间.账本序号.上一个Hash值.也知道所有的计算和存贮是需要消耗计算机资源 ...

  6. 深入比特币原理(五)——高级交易与脚本

    [摘要] 多重签名交易允许同一笔交易输出需要多个私钥才能解锁,即锁定脚本设置条件,有N个公钥(注意不是公钥hash)被记录在脚本中,其中至少有M个必须提供签名才能解锁,也被成为M-N方案. 一.多重签 ...

  7. 深入比特币原理(四)——锁定脚本(locking script)与解锁脚本(unlocking script)

    通常比特币都是以虚拟货币的概念出现在大众眼前,实际上比特币是第一个真正的区块链"平台",利用它去中心化.不可篡改.可追溯等特点不光可以实现多种交易模式(如点对点交易.多重签名交易等 ...

  8. 深入比特币原理(二)——比特币密钥地址生成

    [摘要] 比特币的安全性是由现代密码学所提供,其中最重要的既是比特币的密钥,下面我们来看一下比特币的密钥生成过程. 比特币地址实际上是公钥转换而来,而公钥实际上是由私钥转换得到,所以实际上一切的来源都 ...

  9. 【刘教链比特币原理】2-3 私钥和地址是什么

    本节课我们开始学习第二章"椭圆曲线防篡改 哈希算法保平安"的第三小节"私钥和地址是什么". 本章目录: 第二章 椭圆曲线防篡改 哈希算法保平安 第1节 如何保护 ...

最新文章

  1. 晶体管逻辑芯片设计微缩图形化
  2. Docker的使用(二:Docker客户端常用指令练习)
  3. Ubuntu安装PostgreSQl
  4. Coverage analysis in AIE
  5. redmine安装指引
  6. python定时执行脚本实例
  7. 音视频开发(8)---nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
  8. 《转》Unsafe与CAS
  9. java 堆 栈 ===_Java堆,栈,堆栈
  10. mrtg监控硬盘容量,内存占用,CPU占用 二
  11. Spring Data JPA实战视频教程
  12. LabVIEW编程LabVIEW开发研华PCI 1756例程与相关资料
  13. 2020-21《全球软件质量报告》解读
  14. 微信网页程序开发,如何解决后退时重复登录的问题
  15. #父与子的编程之旅#第八章
  16. 支付宝是用计算机编程做的吗,从支付宝晒账单活动我们能学习哪些营销方法
  17. C++ list及数组中数字相连输出问题
  18. 计算机鲜艳美丽的花朵教案,《鲜艳美丽的花朵》教案
  19. 国家公务员录用考试的一般流程
  20. Windows10系统中安装Rational Rose

热门文章

  1. 安装java 并配置环境变量_安装Java JDK并配置环境变量
  2. linux对于文本的操作,Linux文本文件操作
  3. python3 一年中的天数 时间转化为北京时_Python3?环境搭建
  4. z变换解差分方程例题_某些常见微分方程的一般解法(工具向)
  5. 二叉树的相关操作(c语言)
  6. xml的应用与dtd约束
  7. 带你走进SAP项目实施过程——前言(0)
  8. ubuntu声音问题
  9. Wcf for wp8 创建wcf服务 连接wp8模拟器并显示来自wcf服务的接口信息 (一)
  10. 如何在excel 单元格中增加换行