本文主要从整体逻辑方面,抽象 txdb 模块的代码构建逻辑。 首先 txdb 模块主要是用来实现 block 和 utxo 两个模块的落盘逻辑,所以我们将分为两个大的部分,来对其逻辑一一梳理。 原始数据块首先,我们通过网络接收到原始块,..
2018-02-26
本小节主要介绍 txdb 以及其所引用到的代码中一些常量所表示的含义在 txdb.cpp中,我们..
2018-02-25
概述现在的许多节点不会用另一个花费相同输入的交易来代替其流量的任何交易,使得花费者难以调整其先前..
2018-02-23
本小节主要介绍 txdb 以及其所引用到的代码中一些常量所表示的含义在 txdb.cpp中,我们能够看到其定义了很多 char 类型的常量: 12345678910static const char DB_COIN = 'C';static const char DB_COINS = 'c';static const char DB_BLOCK_FILE..
概述现在的许多节点不会用另一个花费相同输入的交易来代替其流量的任何交易,使得花费者难以调整其先前发送的交易以处理意外的确认延迟或执行其他有用的替换。 此处所述的 opt-in full Replace-by-Fee (opt-in full-RBF) signaling 政策允许消费者向交易添加信号,表明他们希望能够在未来取代该交易。为了响应这个信号, ..
首先明白:软分叉升级主要是在原有的主链上增加共识规则。 软分叉的目的是为了让老版本的客户端能够兼容。我们人为设定一个开始时间和结束时间,表示在这个范围内,我们进行软分叉升级,我们规定每到2016的整数倍作为一个升级的周期,那么在这个周期内,如果有80%的算力认可我的提议,那么就代表升级成功,将该提议添加为共识规则的一部分,如果不够80%,就进入下一个周期..
BIP9允许部署多个向后兼容的软分叉,通过旷工在一个目标周期内投票,如果达到激活阈值nRuleChangeActivationThreshold,就能成功的启用该升级。在实现方面,通过重定义区块头信息中的version字段,将version字段解释为bit vector,每一个bit可以用来跟踪一个独立的部署,在满足激活条件之后,该部署将会生效,同时该b..
2018-02-21
综述本提案目标是:改变区块版本中 version字段的含义,允许同时部署多个向后兼容的更改(或称软分叉)。该功能的实现依赖于将 version字段解释为bit vector,每个bit位可以用来跟踪一个独立的更改。在每个目标周期统计部署该bit位的区块的个数,一旦部署达成共识或超时(失败),接下来有一个暂停期,之后该bit 位可以被以后新的规则变化重新使..
2018-02-20
概述Bitcoin Cash 源码中,POW功能模块,主要提供两个函数,供上层进行调用: GetNextWorkRequired: 获取下个块的工作量(即难度) CheckProofOfWork: 检查块的工作量是否合法。 true:合法; false:不合法。下面是详细分析获取下个块的难度1234567891011121314151617181920..
2018-02-19
具有代表性的货币是用于任何没有内在价值但可以交换定义数量的商品(通常是黄金或白银)的代币的术语。 本节将讨论如何使用 satoshis 作为代表性货币,更一般地说,使用satoshis来代表所有权 - 例如股票,债券,实物,其他加密货币和“ICO”(初始货币产品) 被比特币社区命名为“彩色货币”。 我相信,以太坊最近的成功不是由复杂的合同(有一个问题是..
2018-02-17
比特币的能力是有限的。同时,智能合约可能是资源密集型的。所以即使比特币一直支持基本的智能合约功能,但这两者从来都不是天作之合。 但是由 Blockstream 的数学家 Andrew Poelstra 带头研究的最近一个话题可以帮助解决这个问题。 最近他在 “ Scaling Bitcoin Stanford” 演讲中提及的关键内容,“无脚本脚本”有可能..
Version 0.1, 2018-01-19 - 草案供讨论 讨论草案为了讨论这个草案,附加说明包含在标题草案的标题中。这些打算从这个文件的finalalized版本被删除。可选规则由RULE OPTION表示,其中预期将在工作组内达成共识之后采用所呈现的选项。 引言本文档描述了重新激活几个脚本操作码的建议要求。 2011年,在OP_LSHIFT和OP..
2018-02-16