《精通比特币》

2017-08-09  本文已影响82人  观星客

钱包、密钥

交易

比特币网络

区块链

Merkle 树

Merkle树被用来归纳一个区块中的所有交易,同时生成整个交易集合的数字指纹,且提供了一种校验区块是否存在某交易的高效途径

挖矿与共识

去中心化共识

交易的独立校验

挖矿节点

整合交易至区块

交易块龄,矿工费和优先级

创币交易

Coinbase奖励与矿工费

创币交易的结构

表8-1 “普通“交易输入的结构
长度 字段 描述
32 字节 交易哈希 指向包含有将要被花费UTXO的交易
4 字节 交易输出索引 UTXO在交易中的索引,0 从0开始计数
1-9 字节 解锁脚本长度 解锁脚本的长度
(VarInt) 可变长度 Unlocking-Script 一段脚本,用来解锁UTXO锁定脚本中的条件
4 bytes 顺序号 当前未启用的TX替换功能,设置为0xFFFFFFFF

表8-2 生成交易输入的结构
长度 字段 描述
32 字节 交易哈希 不引用任何一个交易,值全部为0
4 字节 交易输出索引 值全部为1
1-9 字节 Coinbase数据长度 coinbase数据长度
(VarInt) 可变长度 Coinbase数据 在v2版本的区块中,除了需要以区块高度开始外,其他数据可以任意填写,用于extra nonce和挖矿标签
4 bytes 顺序号 值全部为1,0xFFFFFFFF

构造区块头

表8-3 区块头的结构
长度 字段 描述
4 字节 版本 版本号,用来跟踪软件或协议的升级
32 字节 前区块哈希 链中前一个区块(父区块)的哈希值
32 字节 Merkle根 一个哈希值,表示这个区块中全部交易构成的merkle树的根
4 字节 时间戳 以Unix纪元开始到当下秒数记录的区块生成的时刻
4 bytes 难度目标 该区块的工作量证明算法难度目标
4 bytes Nonce 一个用于工作量证明算法的计数器

Proof Of Work

难度表示

难度目标与难度调整

挖矿成功后立即进行扩散传播

校验新区块

▷ 区块的数据结构语法上有效
▷ 区块头的哈希值小于目标难度(确认包含足够的工作量证明)
▷ 区块时间戳早于验证时刻未来两个小时(允许时间错误)
▷ 区块大小在长度限制之内
▷ 第一个交易(且只有第一个)是coinbase交易
▷ 使用检查清单验证区块内的交易并确保它们的有效性
▷ “交易的独立校验”一节已经讨论过这个清单。

区块链的组装与选择

区块链分叉

挖矿和算力竞赛

下表表示了比特币网络开始运行后最初五年的总算力:
2009
0.5 MH/秒–8 MH/秒 (16倍增长)
2010
8 MH/秒–116 GH/秒 (14,500倍增长)
2011
16 GH/秒–9 TH/秒 (562倍增长)
2012
9 TH/秒–23 TH/秒 (2.5倍增长)
2013
23 TH/秒–10 PH/秒 (450倍增长)
2014
10 PH/秒–150 PH/秒 到8月为止 (15倍增长)

随机值升位方案

算力增加,难度增加,会导致随机数不够用(全部随机数尝试过还是不能获得满足难度的hash)
随机数升位扩展方案衍化:

矿池:有趣,份额统计,工作量证明设计

让我们回到骰子游戏的比喻。如果骰子玩家的目标是扔骰子结果都小于4(整体网络难度),一个矿池可以设置一个更容易的目标,统计有多少次池中的玩家扔出的结果小于8。当池中的玩家扔出的结果小于8(矿池份额目标),他们得到份额,但他们没有赢得游戏,因为没有完成游戏目标(小于4)。但池中的玩家会更经常的达到较容易的矿池份额目标,规律地赚取他们的份额,尽管他们没有完成更难的赢得比赛的目标。
时不时地,池中的一个成员有可能会扔出一个小于4的结果,矿池获胜。然后,收益可以在池中玩家获得的份额基础上分配。尽管目标设置为8或更少并没有赢得游戏,但是这是一个衡量玩家们扔出的点数的公平方法,同时它偶尔会产生一个小于4的结果。
同样的,一个矿池会将矿池难度设置在保证一个单独的矿工能够频繁地找到一个符合矿池难度的区块头hash来赢取份额。时不时的,某次尝试会产生一个符合比特币网络目标的区块头hash,产生一个有效块,然后整个矿池获胜。

托管矿池

矿工连接到矿池服务器使用一个采矿协议比如Stratum (STM)或者 GetBlockTemplate (GBT)
STM和GBT协议都创建包含候选区块头模板的区块模板。矿池服务器通过聚集交易,添加coinbase交易(和额外的随机值空间),计算MERKLE根,并连接到上一个块hash来建立一个候选区块。这个候选区块的头部作为模板分发给每个矿工。矿工用这个区块模板在低于比特币网络的难度下采矿,并发送成功的结果返回矿池服务器赚取份额。

P2P矿池

P2Pool是一个点对点的矿池,没有中心管理人。
P2Pool通过将矿池服务器的功能去中心化,实现一个并行的类似区块链的系统,名叫份额链。
本质上说,比起用一个矿池服务器记录矿工的份额和奖励,份额链允许所有矿工通过类似比特币区块链系统的去中心化的共识机制跟踪所有份额。

共识攻击

竞争币和竞争块链的分类

元币平台

染色币:添加附加信息的币中币

万事达币

合约币

竞争币/山寨币

下面所列出的就是这些竞争币区别于比特币的三点主要不同:
▷ 货币策略不同
▷ 基于工作量证明的一致性机制不同
▷ 一些特殊的功能,比如更强的匿名性等等

多目的挖矿创新:Primecoin, Curecoin, Gridcoin

致力于匿名性的竞争币:CryptoNote, Bytecoin, Monero, Zerocash/Zerocoin, Darkcoin

非货币型竞争区块链

域名币

上一篇下一篇

猜你喜欢

热点阅读