作者:Andreas M. Antonopoulos
想要加入一场颠覆金融世界的技术革命吗?《精通比特币》会为你参与这个货币网络提供必备知识,引导你进入看似复杂的比特币世界。无论你是正在构建下一个杀手级应用、投资创业,还是单纯对技术好奇,这本实用的书都是你不可或缺的阅读材料。比特币,作为第一个成功的去中心化数字货币,尽管还处在起步阶段,却已经催生了数十亿美元的全球性经济体。它对任何具备相应知识和参与热情的人都是开放的。《精通比特币》会为您提供必要的知识,但请各位读者自备热情。
在线阅读 https://www.8btc.com/books/834/masterbitcoin2cn/_book/
中文版序言
送你一把打开区块链世界大门的钥匙——《精通比特币第二版》序言
译者序
第二版更新内容
英文版前言
术语解释
第一章、介绍
1.1什么是比特币?
1.2比特币历史
1.3比特币使用,用户和他们的故事
1.4入门
1.4.1选择比特币钱包
1.4.2快速开始
1.4.3得到你的第一个比特币
1.4.4查找比特币当前价格
1.4.5发送和接收比特币
第二章、比特币原理
2.1交易,区块,挖矿和区块链
2.1.1比特币概述
2.1.2买咖啡
2.2 比特币交易
2.2.1交易输入输出
2.2.2交易链
2.2.3找零
2.2.4 常见的交易形式
2.3 交易的构建
2.3.1 获取正确的输入
2.3.2 创建交易输出
2.3.3 将交易放到总账簿中
2.3.3.1 交易的传送
2.3.3.2 如何传播
2.3.3.3 Bob的视角
2.4 比特币挖矿
2.5 区块中的挖矿交易记录
2.6 消费这笔交易
第三章、比特币核心
3.1比特币开发环境
3.2从源码编译比特币核心
3.2.1选择比特币核心版本
3.2.2配置构建比特币核心
3.2.3构建Bitcoin核心可执行文件
3.2.4运行比特币核心节点
3.2.5首次运行比特币核心
3.2.6配置比特币核心节点
3.3 通过命令行使用比特币核心的JSON-RPC API接口
3.3.1 获得比特币核心客户端状态的信息
3.3.1.1探索和解码交易
3.3.2 探索区块
3.3.3使用比特币核心的编程接口
3.4 其他替代客户端、资料库、工具包
第四章、密钥和地址
4.1简介
4.1.1 公钥加密和加密货币
4.1.2 私钥和公钥
4.1.3 私钥
4.1.4 公钥
4.1.5 椭圆曲线密码学(Elliptic Curve Cryptography)解释
4.1.6 生成公钥
4.2 比特币地址
4.2.1 Base58和Base58Check编码
4.2.2 密钥的格式
4.2.2.1私钥的格式
4.2.3从Base58Check解码
4.2.3.1公钥的格式
4.2.3.2压缩格式公钥
4.2.3.3压缩格式私钥
4.3 用Python实现密钥和比特币地址
4.4 高级密钥和地址
4.4.1 加密私钥(BIP0038)
4.4.2 P2SH (Pay-to-Script Hash)和多重签名地址
4.4.2.1 多重签名地址和P2SH
4.4.3 比特币靓号地址
4.4.3.1 生成靓号地址
4.4.3.2 靓号地址安全性
4.4.4 纸钱包
第五章、钱包
5.1钱包技术概述
5.1.1非确定性(随机)钱包
5.1.2 确定性(种子)钱包
5.1.3 分层确定性钱包(HD Wallets (BIP-32/BIP-44))
5.1.4种子和助记词(BIP-39)
5.1.5钱包最佳实践
5.1.6使用比特币钱包
5.2钱包技术细节
5.2.1助记码词汇(BIP-39)
5.2.2创建助记词
5.2.3从助记词生成种子
5.2.4BIP-39中的可选密码短语
5.2.5使用助记符代码
5.3从种子中创造HD钱包
5.3.1私有子密钥的衍生
5.3.2使用衍生的子密钥
5.3.3扩展密钥
5.3.4公共子密钥推导
5.3.5在网店中使用扩展公钥(xpub)
5.3.6硬化子密钥的衍生
5.3.7正常衍生和强化衍生的索引号码
5.3.8HD钱包密钥识别符(路径)
5.3.9HD钱包树状结构的导航
第六章、交易
6.1 简介
6.2交易细节
6.2.1交易 – 幕后细节
6.3交易的输入输出
6.3.1 交易输出
6.3.1.1交易序列化 – 输出
6.3.2交易输入
6.3.2.1交易序列化–交易输入
6.3.3 交易费
6.3.4 把交易费加到交易中
6.4比特币交易脚本和脚本语言
6.4.1 图灵非完备性
6.4.2 去中心化验证
6.4.3 脚本构建(锁定与解锁)
6.4.3.1脚本执行堆栈
6.4.3.2一个简单的脚本
6.4.3.3 解锁和锁定脚本的单独执行
6.4.4 P2PKH(Pay-to-Public-Key-Hash)
6.5数字签名(ECDSA)
6.5.1数字签名如何工作
6.5.1.1创建数字签名
6.5.1.2签名序列化(DER)
6.5.2验证签名
6.5.3签名哈希类型(SIGHASH)
6.5.4 ECDSA数学
6.5.5随机性在签名中的重要性
6.6比特币地址,余额和其他摘要
第七章、高级交易和脚本
7.1介绍
7.2多重签名
7.3 P2SH(Pay-to-Script-Hash)
7.3.1 P2SH地址
7.3.2 P2SH的优点
7.3.3赎回脚本和标准确认
7.4 数据记录输出(RETURN操作符)
7.5时间锁(Timelocks)
7.5.1交易锁定时间(nLocktime)
7.5.1.1交易锁定时间限制
7.5.2检查锁定时间验证Check Lock Time Verify (CLTV)
7.5.3相对时间锁
7.5.4 nSequence相对时间锁
7.5.4.1 nSequence的本义
7.5.4.2 nSequence作为一个共同执行的相对时间锁定
7.5.5 带CSV的相对时间锁
7.5.6中位时间过去Median-Time-Past
7.5.7针对费用狙击(Fee Sniping)的时间锁定
7.6具有流量控制的脚本(条件子句 (Conditional Clauses))
7.6.1带有VERIFY操作码的条件子句
7.6.2在脚本中使用流控制
7.7复杂的脚本示例
第八章、比特币网络
8.1 P2P网络架构
8.2 节点类型及角色
8.3 扩展比特币网络
8.4比特币传播网络
8.5 网络发现
8.6 全节点
8.7 交换“库存清单”
8.8 简易支付验证 (Simplified Payment Verification (SPV) )节点
8.9 Bloom过滤器
8.9.1 Bloom过滤器如何工作
8.10 SPV节点如何使用Bloom过滤器
8.11 SPV节点和隐私
8.12加密和认证连接
8.12.1Tor网络传输
8.12.2对等认证和加密
8.13交易池
第九章、区块链
9.1简介
9.2 区块结构
9.3 区块头
9.4 区块标识符:区块头哈希值和区块高度
9.5 创世区块
9.6 区块链接成为区块链
9.7 Merkle 树
9.8 Merkle树和简单支付验证(SPV)
9.9比特币的测试区块链
9.9.1Testnet——比特币的试验场
9.9.1.1使用testnet
9.9.2 Segnet—隔离见证测试网络
9.9.3 Regtest–本地区块链
9.10使用测试块链进行开发
第十章、挖矿和共识
10.1 简介
10.1.1 比特币经济学和货币创造
10.2 去中心化共识
10.3 交易的独立校验
10.4 挖矿节点
10.5 打包交易至区块
10.5.1 创币交易
10.5.2 Coinbase奖励与矿工费
10.5.3创币交易的结构
10.5.4 Coinbase数据
10.6 构造区块头
10.7 构建区块
10.7.1 工作量证明算法
10.7.2 难度表示
10.7.3 难度目标与难度调整
10.8 成功构建区块
10.9 校验新区块
10.10 区块链的组装与选择
10.10.1 区块链分叉
10.11 挖矿和算力竞赛
10.11.1 随机值升位方案 the extra nonce solution
10.11.2 矿池
10.11.2.1 托管矿池
10.11.2.2 P2P矿池
10.12 共识攻击
10.13改变共识规则
10.13.1硬分叉
10.13.2硬分叉:软件,网络,采矿和链
10.13.3分离矿工和难度
10.13.4有争议的硬叉
10.13.5软分叉
10.13.5.1软分叉重新定义NOP操作码
10.13.5.2其他方式软分叉升级
10.13.6对软分叉的批评
10.14使用区块版本发出软分叉信号
10.14.1 BIP-34信号和激活
10.14.2 BIP-9信号和激活
10.15共识软件开发
第十一章、比特币安全
11.1 安全准则
11.1.1 比特币系统安全开发
11.1.2 信任根
11.2 用户最佳安全实践
11.2.1 比特币物理存储
11.2.2 硬件钱包
11.2.3 平衡风险
11.2.4 分散风险
11.2.5 多重签名管理
11.2.6 存活能力
11.3 总结
第十二章、比特币应用
12.1介绍
12.2构建区块(原语)
12.3源于构建区块的应用
12.4染色币(Colored Coins)
12.4.1使用染色币
12.4.2发行染色币
12.4.3染色币交易
12.5合约币(Counterparty)
12.6支付通道和状态通道
12.6.1状态通道基本概念和术语
12.6.2简单支付通道示例
12.6.3制造无需信任的通道
12.6.4不对称可撤销承诺
12.6.5哈希时间锁合约(Hash Time Lock Contracts,HTLC)
12.7可路由的支付通道(闪电网络)
12.7.1闪电网络示例
12.7.2闪电网络传输和路由
12.7.3闪电网络优势
12.8结论
附录部分
附录1、比特币白皮书:比特币白皮书:一种点对点的电子现金系统
- 简介
- 交易(Transactions)
- 时间戳服务器(Timestamp server)
- 工作量证明(Proof-of-Work)
- 网络
- 激励
- 回收硬盘空间
- 简化的支付确认(Simplified Payment Verification)
- 价值的组合与分割(Combining and Splitting Value)
- 隐私(Privacy)
- 计算
12.结论
附录2、交易脚本语言操作符,常量和符号
附录3、比特币改进建议(BIPs)
附录4、隔离见证
4.1为什么需要隔离见证?
4.2隔离见证如何工作
4.3软分叉(向后兼容性)
4.4隔离见证输出和交易示例
4.4.1Pay-to-Witness-Public-Key-Hash (P2WPKH)
4.4.2钱包的P2WPKH (Pay-to-Witness-Script-Hash)构造
4.4.3Pay-to-Witness-Script-Hash (P2WSH)
4.4.4区分P2WPKH和P2WSH
4.5隔离见证升级
4.5.1在P2SH中嵌入隔离见证
4.5.2在 P2SH 中的 P2WPKH
4.5.3P2SH内的P2WSH
4.5.4隔离见证地址
4.5.5交易标识符
4.6隔离见证新的签名算法
4.7隔离见证的经济激励
附录5、Bitcore
1.Bitcore的功能列表
2.Bitcore库示例
2.1先决条件
2.2使用bitcore-lib的钱包示例
附录6、pycoin
1.实用工具(KU)
2.交易实用程序(TX)
附录7、比特币浏览器命令
附录8、染色币
1.使用染色币
2.创造染色币