• 《精通比特币中文版》

  • 价格:免费
  • 状态:全书已完结
  • 在读人数:12
  • 热度:1609
创建者
内容简介
2008年比特币诞生,原本只是一个密码学极客之间的玩物,没想到犹如打开的潘多拉盒子,慢慢席卷全球。在08年以前还没有人能成功地研发出一个运行良好的数字货币出来,直到比特币问世;另外,区块链作为比特币的底层技术,在此之前也是闻所未闻。那么区块链到底有什么魔力,让整个世界为之疯狂呢?

相信很多初学者都有这样的疑问。我也曾带着这样的困惑翻阅了大量的书籍,然后才有了一个比较全面的认识。2010年从中科院毕业以来我一直在农行软件开发中心工作,平时做的主要是一些传统银行核心系统的研发,有时候会觉得枯燥。特别是,13年互联网金融爆发,直接冲击到银行的传统业务,也冲击着我们这些处于体制内一份子的心灵。我并非觉得压力大,而是看到了机会,因为以前在我脑海深处我一直觉得进入体制内之后便很难再有机会进入一个新领域了,没想到我当时所从事的金融行业竟然是当下的香饽饽,所以有时候我也会关注一下外面的机会。

那个时候银行业正处于变革的关口,大量的员工和我一样看到了这样的机会,选择出走寻求更好的待遇,年薪百万也是有的。当我犹豫不决是否要像他们一样选择离开的时候,我关注到单位内部的一封邮件里提到了关于研究区块链技术方面的文字。加之我自身对新技术的狂热,经过一番思量,在2016年6月份的时候我给总经理去了一封邮件,正式决定从当前枯燥的工作岗位上“出走”,选择进入一个全新的领域,虽然我仍在体制内,但我觉得在一个大的平台上,或许有更好更多的资源让我学习这些新东西。

这是故事的开始,也是区块链研习社成立的发端。因为正是得益于这样的一个机会,我当时有幸参加了大量的区块链会议,并接触到业内顶尖的区块链专家,从而耳濡目染地慢慢深入到这个行业里。我当时意识到这个群体还很小,整个社会对区块链的了解还远远不够,虽然以前有很多布道者也曾尝试推动区块链技术在国内的发展,但是我决定做一个不太一样的事情,建立一个区块链的学习社群,让所有的爱好者们能够在这里获得最贴心的区块链知识服务,并形成一个强有力的群体,创造更大的价值和影响力。因此,2017年1月份,区块链研习社成立,这是国内最早的区块链学习社群,目前整个群体人数近3000,相信也是国内最大并且看起来质量最高的社群了。对于这个社群,我把它当成一份事业来做,至少做20年。

在带着大家学习的过程中,很多人都问到我一个问题,“从何入手?”,我深知理论的学习总是非常必要的,武装了大脑之后才能更好地践行,于是我推荐大家去看书,去学习。而这里首推的就是《精通比特币》这本电子书籍(英文为《Mastering Bitcoin》),它可以说是学习区块链的入门首选,是宝典级的区块链书籍。只不过,比特币经历了几年的发展,也开始出现一些变化,比如比特币进行了隔离见证升级,也分叉出了一个全新的币种BCC,因此第一版的书籍很多地方可能需要更新,目前国外虽然有《Matering Bitcoin 2.0》版本的英文书籍,但是在互联网上还没有看到中文版的翻译。

乔延宏,也就是《Matering Bitcoin 2.0》的中文翻译版本《精通比特币第二版》的发起者和编译者,正是我们区块链研习社的核心成员,他多年都在打磨一个叫做“认知学习法”的学习方法,并尝试将其应用到各种新领域知识的学习当中,效果颇为显著。这从他快速掌握区块链知识,并在网络撰写超30万字的文章,以及担任本电子书籍的主要翻译上的功力,可见一斑。为此,他还专门成立了一个品牌,叫做“云天明”,希望将此方法传递给更多的人。

刚开始的时候他只是一味地进行翻译,在有限的渠道进行推广,为了坚持,他基本上每天都在进行着翻译工作,从而形成了翻译的初稿,对于他这种过人的毅力,我非常佩服。不过我觉得,我们应该做一件更有价值的事情——将这些翻译进行充分校订并形成中文阅读良好的电子书籍,免费供应给全国的区块链爱好者们,为我们国家,为这个世界,更好地普及区块链知识。

为了全力促成这个事情,我又从人才济济的区块链研习社内部挑选了大量的精英配合乔延宏的翻译和校订工作,这个团队历经多个日夜的苦思琢磨和仔细推敲,最终促成了本版中文翻译书籍的问世。

相信《精通比特币第二版》会成为你最好的入门书籍,即便你有了一定的基础,偶尔翻一翻都会有不一样的收获。
章节目录
  • 第一章 介绍
  • 1.1 什么是比特币?
  • 比特币一是构成数字货币生态系统基础的概念和技术的总称,二是货币单位,用于在比特币网络中的参与者之间存储和传递价值。比特币用户主要通过在互联网上使用比特币协议进行通信,也可以使用其他传输网络。比特币协议栈是开源软件,可以在各种计算设备(包括笔
  • 1.2 比特币历史
  • Bitcoin是在2008年由署名Satoshi Nakamoto的牛人发明的,他出版了一篇题为“Bitcoin:A Peer-to-Peer Electronic Cash System”的文章[1]。 Nakamoto结合了诸如b-money和HashCash等先前的发明,创建了
  • 1.3 比特币的使用场景案例
  • 比特币是古老的“钱”的技术创新。其核心在于方便了人与人之间的价值交换。因此,为了充分了解比特币及其用途,我们将从使用它的人的角度审视它。这里列出的每个人和他们的故事都说明了一个或多个具体的场景。我们将在整本书中看到他们:北美小额零
  • 1.4 比特币入门
  • 比特币是一种协议,访问协议的方法是使用同样协议的客户端应用程序。 “比特币钱包”是比特币系统最常见的用户界面,就像Web浏览器是HTTP协议最常用的用户界面一样。有不同形式和品牌的比特币钱包,就像有许多品牌的
  • 第二章 比特币原理
  • 2.1 交易,区块,挖矿和区块链
  • 比特币系统与传统的银行和支付系统不同,是基于去中心化的信任。在比特币中,信任不是通过中央权威机构授权而来,而是通过比特币系统中不同用户相互交互自发达成,这是比特币的一个显著特性。 在本章中,我们将通过较高层面跟踪比特币系统中的一笔交易,观察交易如何通过比特币分布式共识机制变得“可信”,被接受,并且最终记录在区块链,这个区块链就是所有交易的分布式账簿。随后的章节将深入探讨交易,
  • 2.2 比特币交易
  • 简单来说,一笔交易就是告知全网:比特币的持有者已授权把它转帐给其他人。而新持有者可以通过产生另一笔交易,转账给另外的人,依此类推形成一条所有权的链。2.2.1交易输入输出 交易就像复式记账法账簿中的行。简单来说,每一笔交易包含一个或多个“输入”,就像比特币账户的借方。这笔交易的另一面,有一个或多个“输出”,就像比特币账户的贷方。这些输入和输出的总额(
  • 2.3 交易的构建
  • Alice的钱包应用知道如何选取合适的输入匹配Alice所创建的交易金额。Alice只需要指定目标地址和金额,其余的细节钱包应用会在后台自动完成。很重要的一点是,钱包应用甚至可以在完全离线时建立交易。就像在家里写张支票, 之后放到信封发给银行一样,比特币交易建立和签名时不用连接比特币网络。只有在执行交易时才需要将交易发送到网络。2.3.1 获取
  • 2.4 比特币挖矿
  • Alice的这笔交易现在已经在比特币网络上传播开来。但只有被挖矿节点验证且加到一个区块中之后,这个交易才会成为这个共享账簿(区块链)的一部分。关于挖矿的详细描述请见第10章。比特币系统的信任是建立在计算的基础上
  • 2.5 区块中的挖矿交易记录
  • 新交易不断地从用户钱包和其他应用流入比特币网络。当比特币网络上的节点看到这些交易时,会先将它们放到节点自行维护的一个临时的未经验证的交易池中。当矿工构建一个新区块时, 会将这些交易从这个交易池中拿出来放到一个新区块中,然后通过尝试解决一个难题(也叫工作量证明)以证明这个新区块的有效
  • 2.6 消费这笔交易
  • 既然Alice的这笔交易已经成为区块的一部分被嵌入到了区块链中,它就成为了整个分布式比特币账簿的一部分,并对所有比特币客户端应用可见。每个比特币客户端都能独立地验证这笔交易是有效且可消费的。全节点客户端可以追溯钱款的来源,从第一次有比特币在区块里生成的那一刻开始,按交易与交易间的关系顺藤摸瓜,直到Bo
  • 第三章 比特币核心
  • 3.1 比特币开发环境
  • Bitcoin是一个开源项目,源代码使用开放(MIT)授权,可免费下载使用。 开源不仅意味着可自由使用,还意味着比特币是由一个开源社区志愿者开发的。 最初这个社区只有中本聪,到2016年,比特币的源代码贡献
  • 3.2 从源码编译比特币核心
  • Bitcoin Core的源代码可以下载ZIP格式,也可以从GitHub克隆官方的源代码库。 在GitHub比特币页面GitHub bitcoin page上,选择“下载ZIP”。 或者,使用git命令行在系统上创建源代码的本地副本。提示 在本章
  • 3.3 运行Bitcoin Core节点
  • 比特币的点对点网络由网络中的“节点”组成,主要由志愿者和一些构建比特币应用程序的商业机构运行。 那些运行的比特币节点具有直接和权威的比特币区块链视图,并且具有所有交易的本地副本,自己可以独立验证。 自己运行节点,就不必依赖任何第三方来验证交易。 此外,自己运行比特币节点,也可以使比特币网络更加健壮,为比特币网络做出贡献。但是,运行节点需要足够资源来处理所有比特币交易,而且不
  • 3.4 通过命令行使用Bitcoin Core的JSON-RPC API接口
  • Bitcoin Core客户端实现了JSON-RPC接口,这个接口也可以通过命令行工具bitcoin-cli访问。命令行可以使用API进行编程,方便进行交互方式测试。开始前,使用help命令查看可用的比特币RPC命令列表: $ bitc
  • 3.5 他可选的客户端、库、工具包
  • 比特币生态中还有许多可选的客户端,库,工具包,甚至还有全节点的实现。这些工具都由各自的编程语言实现,为程序员提供其首选语言的本地接口。以下按照编程语言分类列出了推荐的一些库,客户端和工具包:3.5.1 C/C++ Bitcoin Core比特币的参考实现libbitcoin跨平台C++开发工具包,节点
  • 第4章 密钥和地址
  • 4.1 简介
  • 你可能听说过比特币基于加密技术的,加密技术是由数学分支出来的,在计算机安全领域被广泛使用。 密码术在希腊语中是“秘密写作”的意思,但密码学这门学科不仅仅只有秘密写作,还包括加密技术。 密码学可以用于不泄露秘密(数字签名),就能证明知晓加密的内容,或证明数
  • 4.2 比特币地址
  • 比特币地址是一个由数字和字母组成的字符串,可以展示给任何给你转账比特币的人。由公钥(一个同样由数字和字母组成的字符串)生成的比特币地址以数字“1”开头。下面是一个比特币地址的例子: 1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy 在交易中,比特币地址通常作为资金接受者地址。如果把比特币交易比作一张支票,比特币地址就
  • 4.3 实现密钥和地址的两个例子
  • 用C++实现密钥和地址 我们回顾比特币地址产生的完整过程,从私钥、到公钥(椭圆曲线上某个点)、再到双重哈希地址,到最终的 Base58Check编码。例4-3的C++代码完整详细的展示了从私钥到Base58Check编码后的比特币地址的步骤。代码中使用“3.3 其他客户端、资料库、工具包 ”一节中介绍的libbitc
  • 4.4 高级密钥和地址
  • 在以下部分中,我们将看到密钥和地址的高级形式,诸如加密私钥、脚本和多重签名地址,靓号地址,和纸钱包。加密私钥(BIP0038) 私钥必须保密。私钥的保密性需求的真实情况是,在实践中相当难以实现,因为该需求与同样重要的可用性安全目标相矛盾。当你为了避免私钥丢失而存储备份时,会发现维护私钥私密性相当困难。通过密码加密保存私钥的钱包可能要安全一点,但那个钱包也需要备份。有时,例如用户因
  • 第五章 钱包
  • 5.1 钱包技术概述
  • “钱包”一词在比特币中有多重含义。广义上,钱包是一个应用程序,为用户提供交互界面。 钱包控制用户资金访问权限,管理密钥和地址,跟踪余额以及创建和签名交易。狭义上,即从程序员的角度来看,“钱包”是指用于存储和管理用户密钥的数据结构。我们将深入介绍
  • 5.2 钱包技术细节
  • 现在我们开始逐个深入了解这些比特币钱包所使用的重要的行业标准。5.2.1 助记词(BIP-39) 助记词是表示(编码)随机数的一组有序的英文单词,用作生成确定性钱包的种子。这些有序单词足以重建种子,并且从种子重新创建钱包以及所有派生的密钥。使用助记词实现确定性钱包的应用会在首次创建钱包时,向使用者展示一个12至24个有序的单词。这些有序单词就是钱包
  • 5.3 从种子中创造HD钱包
  • HD钱包从单个根种子(root seed)创建,后者为128,256到512位的随机数。最常见的是,这个种子是从助记词产生的,如上一节所述。HD钱包的所有密钥是由根种子确定的,使用这个根种子就可以在任何兼容HD钱包中重新创造整个HD钱包。所以简单的转移生成HD钱包根种子的助记词就可以很容易地备份,储存导出以及导入HD钱包中所包含的数以千计百万计的密钥。图5-9展示从根种子创建主密钥以及HD钱包的
  • 第六章 交易
  • 6.1 简介
  • 比特币交易是比特币系统中最重要的部分。比特币中的其他一切都是为了确保交易可以被创建、在网络上传播、验证,并最终添加到全局交易分类账本(区块链)中。比特币交易的本质是数据结构,这些数据结构是对比特币交易参与者价值传递的编码。比特币区块链是一本全局复式记账总账簿,每个比特币交易都是在比特币区块链上的一个公开记录。在这一章,我们将会剖析比特币交易的多种形式、所包含的信息、如何被
  • 6.2 交易细节
  • 在【第二章比特币概述】中,我们使用区块浏览器查看了Alice曾经在Bob的咖啡店支付咖啡的交易(图6-1)。区块浏览器应用程序显示从Alice的“地址”到Bob的“地址”的交易。 这里显示的是交易内容的简化视图。 实际上,正如我们将在本章中看到的,所显示的大部分信息都是由区块浏览器构建的,并不在交易中。图6-1 Alice与Bob咖啡店的交易6.2.1 交易 - 幕后细节 在幕后,实际的
  • 6.3 交易的输入输出
  • 比特币交易的基本组成部分是交易输出transaction output。 交易输出是比特币不可分割的基本组合,记录在区块链上,并被整个网络认可有效。 比特币全节点跟踪所有可找到的和可使用的输出,称为 “未花费
  • 6.4 比特币交易脚本和脚本语言
  • 比特币交易脚本语言,称为脚本Scripts,是一种类似Forth的逆波兰表示法的基于堆栈的执行语言。 如果听起来不知所云,可能是你没有学习过20世纪60年代的编程语言,但是没关系,我们将在本章中解释这一切。 放置在UTXO上的锁定脚本和解锁脚本都以此脚本语言编写。 当一笔比特币交易被验证时,
  • 6.5 数字签名(ECDSA)
  • 到目前为止,我们还没有深入了解“数字签名”的细节。在本节中,我们将研究数字签名的工作原理,以及如何在不出示私钥的情况下提供私钥的所有权证明。比特币中使用的数字签名算法是椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm)或ECDSA。 ECDSA是基于椭圆曲
  • 6.6 比特币地址,余额和其他抽象
  • 我们在本章开始时发现,交易的“幕后”看起来与钱包、区块链浏览器和其他面向用户的应用程序中呈现出来的非常不同。 前几章中的许多简单而熟悉的概念,如比特币地址和余额,似乎都没有出现在交易结构中。 我们看到交易本身并不包含比特币地址,而是通过锁
  • 第七章 高级交易和脚本
  • 7.1 介绍
  • 在上一章中,我们介绍了比特币交易的基本要素,并且了解了最常见的交易脚本类型,即P2PKH脚本。在本章中,我们将介绍更高级的脚本,以及如何使用它来构建复杂条件的交易。首先,我们将了解多重签名multisignature脚本。接下来,我们将查看第二种最常见的交易脚本支付脚本哈希Pay-to-Script-Hash,它开启了复杂脚本的整个世界。然后,查看新的脚本操作符,能够通过时间锁time
  • 7.2 多重签名
  • 多重签名脚本设置了一个条件,脚本中记录了N个公钥,必须至少提供其中的M个签名才能解锁资金。这也称为M/N方案,其中N是密钥的总数,M是验证必须的签名数。例如,2/3的多重签名是三个公钥被列为潜在签名人,其中至少两个必须用于签名才能创建有效的使用资金的交易。目前,标准多重签名脚本限制在最多3个公钥,这意味着可以执行从1/1到3/3或这
  • 7.3 P2SH(Pay-to-Script-Hash)
  • 支付脚本哈希P2SH是2012年推出的一种功能强大的新型交易,它大大简化了复杂交易脚本的使用。为了解释P2SH的必要性,让我们看一个实际的例子。在【第1章 比特币介绍】中,我们曾介绍过迪拜的电子产品进口商Mohammed。他的公司账目广泛采用比特币的多重签名功能。多重签名脚本是比特币高级脚本最为常见的一种用途之一,是一种非常强大的功能。Mohammed的公司对所有客户付款,会计术语称为“应收账款
  • 7.4 数据记录输出(RETURN操作符)
  • 比特币的分布式和时间戳账本,即区块链技术,其潜在用途将大大超越支付领域。许多开发者试图充分发挥交易脚本语言的安全性和弹性优势,将其运用于数字公证服务、股票证书和智能合约等领域。使用比特币的脚本语言来实现这些目的的早期尝试,包括创建交易输出,把数据记录在区块链上,例如,以这样的方式记录文件的数字指纹,任何人可以通过引用该交易来建立该文件特定日期的存在证明。运用比特币的区
  • 7.5 时间锁(Timelocks)
  • 时间锁是对交易或输出的限制,只允许在一个时间点之后才能消费。比特币从一开始就有一个交易级时间锁定功能,它由交易中的nLocktime字段实现。在2015年底和2016年中期推出了两个新的时间锁功能,提供UT
  • 7.6 具有流量控制的脚本(条件子句 (Conditional Clauses))
  • 比特币脚本的一个更强大的功能是流量控制,也称为条件条款。您可能熟悉使用构造IF ... THEN ... ELSE的各种编程语言中的流控制。比特币条件条款看起来有点不同,但是基本上是相同的结构。在基本层面上,比特币条件操作码允许我们构建一个具有两种解锁方式的赎回脚本,这取决于评估逻辑条件的TRUE / FALSE结果。例如,如果x为TRUE,则赎回脚本为A,ELSE赎回脚本为B. 此外
  • 7.7 复杂的脚本示例
  • 在本节中,我们将本章中的许多概念合并成一个例子。 我们的例子使用了迪拜公司所有者Mohammed的故事,他们正在经营进出口业务。在这个例子中,Mohammed希望用灵活的规则建立公司资本账户。他创建的方案需要不同级别的授权,具体取决于时间锁定。多重签名的计划的参与者是Mohammed,他的两
  • 第八章 比特币网络
  • 8.1 比特币网络-Part1
  • 8.1 P2P网络架构比特币采用了基于国际互联网(Internet)的P2P(peer-to-peer)网络架构。P2P是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。每个网络节点以“扁平(flat)”的拓扑结构相互连通。 在P2P网络中不存在任何服
  • 8.2 比特币网络-Part2
  • 网络发现 当新的网络节点启动后,为了能够参与协同运作,它必须发现网络中的其他比特币节点。新的网络节点必须发现至少一个网络中存在的节点并建立连接。由于比特币网络的拓扑结构并不基于节点间的地理位置,因此各个节点之间的地理信息完全无关。在新节点连接时,可以随机选择网络中存在的比特币节点与之相连。节点通常采用TCP协议、使用8333端口(该端口号通常是比特币所
  • 8.3 比特币网络-Part3
  • 8.9 Bloom过滤器 Bloom过滤器是一个允许用户描述特定的关键词组合而不必精确表述的基于概率的过滤方法。它能让用户在有效搜索关键词的同时保护他们的隐私。在SPV节点里,这一方法被用来向对等节点发送交易信息查询请求,同时交易地址不会被 暴露。用我
  • 第九章 区块链技术
  • 9.1 简介
  • 9.1 简介区块链的数据结构是由包含交易信息的区块按照从远及近的顺序有序链接起来的。它可以被存储为平面文件(flat file),或是存储在一个简单数据库中。比特币核心客户端使用Google的LevelDB数据库存储区块链元数据。区块被从远及近有序地链接在这个链条里,每个区块都指向前一个区块。区块链经常被视为一个垂直的栈
  • 9.2 区块链基本原理
  • 9.2.1 区块结构 区块是一种被包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构。它由一个包含元数据的区块头和紧跟其后的构成区块主体的一长串交易列表组成。区块头是80字节,而平均每个交易至少是250字节,而且平均每个区块至少包含超过500个交易。因此,一个包含所有交易的完整区块比区块头大1000倍。表7-1描述了一个区块结构。9.2.2 区块头 区
  • 9.3 Merkle 树
  • 9.3.1 Merkle 树 区块链中的每个区块都包含了产生于该区块的所有交易,且以Merkle树表示。Merkle树是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构。这种二叉树包含加密哈希值。术语“树”在计算机学科中常被用来描述一种具有分支的数据结构,但是树常常被倒置显示,“根”在图的上部同时“叶子”在图的下部,你会在后续章节中看到相应的例子。在比特币网
  • 9.4 比特币的测试区块链
  • 9.4比特币的测试区块链 你可能会惊讶地发现,有多个比特币区块链。 2009年1月3日由Satoshi Nakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于
  • 第十章 挖矿和共识
  • “挖矿”这个词有点误导。 一般意义的挖矿类似贵金属的提取,更多将人们的注意力集中到创造每个区块中获得的奖励。 虽然挖矿能够获得这种奖励作为激励,但挖矿的主要目的不是这个奖励或者产生新币。 如果您只是把挖矿视为创建新币的过程,则会将比特币系统中的这个手段(激励)作为挖矿过程的目标。 挖矿最重要的作用是巩固了去中心化的清算交易机制,通过这种机制,交易得到验证和清算//清除。 挖矿是使得比特币
  • 10.1 简介
  • “挖矿”这个词有点误导。 一般意义的挖矿类似贵金属的提取,更多将人们的注意力集中到创造每个区块中获得的奖励。 虽然挖矿能够获得这种奖励作为激励,但挖矿的主要目的不是这个奖励或者产生新币。 如果您只是把挖矿视为创建新币的过程,则会将比特币系统中的这个手段(激励)作为挖矿过程的目标。 挖矿最重要的作用是巩固了去中心化的清算交易机制,通过这种机制,交易得到验证和清算/
  • 10.2 去中心化共识
  • 在上一章中我们了解了区块链。可以将区块链看作一本记录所有交易的公开总帐簿(列表),比特币网络中的每个参与 者都把能接受区块链,把它看作一本证明所有权的权威记录。但在不考虑相信任何人的情况下,比特币网络中的所有参与者如何达成对任意一个所有权的共识呢?所有的传统支付系 统都依赖于一个中心认证机构,依靠中心机构提供的结算服务来验证并处理所有的交易。比特币没有中心机构,几乎所 有
  • 10.3 交易的独立校验
  • 在第6章交易中,我们知道了钱包软件通过收集UTXO、提供正确的解锁脚本、构造一个新的支出(支付)给接收者这一系列的方式来创建交易。产生的交易随后将被发送到比特币网络临近的节点,从而使得该交易能够在整个比特币网络中传播。然而,在交易传递到临近的节点前,每一个收到交易的比特币节点将会首先验证该交
  • 10.4 挖矿节点
  • 在比特币网络中,一些节点被称为专业节点“矿工”。第1章中,我们介绍了Jing,在中国上海的计算机工程专业学生,他 就是一位矿工。Jing通过矿机挖矿获得比特币,矿机是专门设计用于挖比特币的计算机硬件系统。Jing的这台专业挖矿设备连接着一个运行完整比特币节点的服务器。与Jing不同,一些矿工是在没有完整节点的条件下进行挖矿,正如我们
  • 10.5 打包交易至区块
  • 验证交易后,比特币节点会将这些交易添加到自己的内存池中。内存池也称作交易池,用来暂存尚未被加入到区块的交 易记录。与其他节点一样,Jing的节点会收集、验证并传递新的交易。而与其他节点不同的是,Jing的节点会把这些交 易整合到一个候选区块中
  • 10.6 构造区块头
  • 为了构造区块头,挖矿节点需要填充六个字段,如表10-3中所示。表10-3 区块头结构在区块277,316被挖出的时候,区块结构中用来表示版本号的字段值为2,长度为4字节,以小端格式编码值为 0x20000000。接着,挖矿节点需要填充“前区块哈希”,在本例中,这个值为Jing的节点从网络上接收到的区块277,315 的区块头哈希
  • 10.7 构建区块
  • 既然Jing的节点已经构建了一个候选区块,那么就轮到Jing的矿机对这个新区块进行“挖掘”,求解工作量证明算法以使这个区块有效。从本书中我们已经学习了比特币系统中不同地方用到的哈希加密函数。比特币挖矿过程使用的是 SHA256哈希函数。用最简单的术语来说,挖矿就是重复计算区块头的哈希值,不断修改该参数,直到与哈希值匹配的一个
  • 10.8 成功构建区块
  • 前面已经看到,Jing的节点创建了一个候选区块,准备拿它来挖矿。Jing有几个安装了ASIC(专用集成电路)的矿机, 上面有成千上万个集成电路可以超高速地并行运行SHA256算法。这些定制的硬件通过USB连接到他的挖矿节点上。接 下来,运行在Jing的桌
  • 10.9 校验新区块
  • 比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。独立校验还确保了诚实 的矿工生成的区块可以被纳入到区块链中,从而获得奖励。行为不诚实的矿工所产生的区块
  • 10.10 区块链的组装与选择
  • 比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块, 它将尝试将新的区块连接到到现存的区块链,将它们组装起来。节点维护三种区块:第一种是连接到主链上的,第二种是从主链上产生分支的(备用链),最后一种是在已知链中没有 找到已知父区块的。在验证过程中,一旦发现有不符合标准的地方,验证就会失败,这样区块会被节点拒
  • 10.11 挖矿和算力竞赛
  • 比特币挖矿是一个极富竞争性的行业。自从比特币存在开始,每年比特币算力都成指数增长。一些年份的增长还体现出技术的变革,比如在2010年和2011年,很多矿工开始从使用CPU升级到使用GPU,进而使用FGPA(现场可编程门阵 列)挖矿。在2013年,ASIC挖矿的引入,把SHA256算法直接固化在挖矿专用的硅芯片上,引起了算力的另一次巨大飞 跃。一台采用这
  • 第十一章 比特币安全
  • 11.1 安全准则
  • 比特币的核心准则是去中心化,这一点对安全性具有重要意义。在中心化的模式下,例如传统的银行或支付网络,需要依赖于访问控制和审查制度将不良行为者拒之门外。相比之下,比特币这样的去中心化系统则将责任和控制权都移交给了用户。由于网络的安全性是基于工作量证明而非访问控制,比特币网络可以对所有人开放,也无需对比特币传输进行加密。在一个传统的支付网络中,例如信用卡系统
  • 11.2 用户最佳安全实践
  • 人类使用物理的安全控制已经有数千年之久。相比之下,我们的数字化安全经验的年纪还不满50岁。现代通用的操作系统并不是十分安全,亦不特别适合用来存储数字货币。我们的电脑通过一直连接的互联网长时间暴露在外,它们运行着成千上万第三方软件组件,这些软件往往可
  • 11.3 总结
  • 比特币是一项全新的,前所未有的,复杂的技术。随着时间的推移,我们将开发出更好的安全工具,而且更容易被非专业人士使用。而现在,比特币用户可以使用许多这里所讨论的技巧,享受安全而无困扰的比特币生活。
  • 第十二章 比特币应用
  • 12.1 介绍
  • 现在,让我们从比特币作为一个应用平台的角度来看,进一步加强理解。 现在很多人使用“blockchain”(区块链)这个词来表示任何共享了比特币设计原则的应用平台。 该术语经常被滥用,并被应用于许多不能提供比特币区块链主要功能的事情。在本章中,我们将介绍比特币区块链作为应用平台所提供的功能。 我们将考虑应用程序构建原语,即构成任何区块链应用程序的构建块。 我们将研究
  • 12.2 构建区块(原语)
  • 当运行正常且长期运行时,比特币系统提供了一定的保证,可以作为构建区块来创建应用程序。 这些包括:杜绝双重支出 比特币分布式共识算法的最根本保证是确保UTXO不会花费两次。不可改变性 一旦交易被记录在区块中,并且随后的区块中添加了足够的工作,交易数据就变得不可篡改。 不可改变性
  • 12.3 源于构建区块的应用
  • 由比特币提供的构建区块是可信平台的组成部分,可用于构成各种应用程序。 以下是今天在用的应用程序及其使用的构建区块的一些示例:Proof-of-Existence(Digital Notary)数字公证 不可篡改性+时间戳+永久性。数字指纹可以通
  • 12.4 染色币(Colored Coins)
  • 我们将讨论的第一个区块链应用是染色币。染色币是指利用比特币交易来记录除比特币之外的外部资产的创建,所有权和转让的这类技术。 所谓“外部资产”我们是指这些资产不直接存储在比特币区块上,而不是指比特币本身,因为比特币是本身就是这个区块链的固有资产。染色币用于跟踪第三方持有的数字资产和实物资产,并通过染色币所有权证书来进行交易。 数字资产染色币可以代表无形资
  • 12.5 合约币(Counterparty)
  • 合约币是在比特币之上建立的协议层。与“染色币”类似的“合约币协议”提供了创建和交易虚拟资产和代币的能力。此外,合约币提供了去中心化的资产交换。合约币还在实施基于Ethereum虚拟机(EVM)的智能合同。像染色币协议一样,合约币使用OP_RETURN操作码或1-N多重签名的公钥地址将元数据嵌入到比特币
  • 12.6 支付通道和状态通道
  • 支付通道是在比特币区块链之外双方之间交换的比特币交易的无信任机制。这些交易,如果在比特币区块链上结算,则是有效的,然而他们却是在链外被持有的,以期票的形式等待最终批量结算。由于交易尚未结算,因此他们可以在没有通常的结算延迟的情况下进行交换,从
  • 附录
  • 附录1 比特币改进提案(BIP)
  • 比特币改进提案是向比特币社区提供信息的设计文档,或用于描述比特币的新功能,流程或环境。根据BIP-01也就是BIP目的和指南(BIP Purpose and Guidelines)的规定,有三种BIP:标准类BIP 描述影响大多数或所有比特币实现的任何
  • 附录2 Bitcore
  • Bitcore是BitPay提供的一套工具。 其目标是为Bitcoin开发人员提供易于使用的工具。 几乎所有的Bitcore的代码都是用JavaScript编写的。 有一些专门为NodeJS编写的模块。 最后,Bitcore的“节点”模块包括Bitcoin Core的C ++代码。 有关详细信息,
  • 附录3 比特币浏览器命令
  • Bitcoin Explorer(bx)是一个命令行工具,提供了各种用于密钥管理和交易构建的命令。 它是libbitcoin比特币库的一部分。 Usage: bx COMMAND [--help]Info: The bx commands are:address-deco
  • 附录4 比特币白皮书
  • 原文作者:中本聪(Satoshi Nakamoto) 作者邮箱:Satoshin@gmx.com 执行翻译:8btc.com 巴比特 QQagent[摘要]:本文提出了一种完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另外
  • 附录5 隔离见证
  • 隔离见证(segwit)是一次比特币共识规则和网络协议的升级,其提议和实施将基于BIP-9 软分叉方案,目前尚待激活(译者注:2017年8月24日,区块高度481,824,隔离见证正式激活)。在密码学中,术语“见证”(witness)被用于形容一个加密难题的解决方案。在
  • 附录6 染色币
  • 术语染色币是指一组使用比特币交易记录比特币以外的外部资产的创建,所有权和转让的类似技术。“外在”是指不直接存储在比特币区块链中的资产,而不是比特币本身,这是区块链固有的资产。染色币用于追踪数字资产以及第三方持有的有形资产,并通过染色币进行所
读者评论
  • 你还没登录,点击这里
  • 本书评论
最近这些人在读这本书