费用狙击是一种理论攻击情形,矿工试图从将来的块(挑选手续费较高的交易)重写过去的块,实现“狙击”更高费用的交易,以最大限度地提高盈利能力。 例如,假设存在的最高块是块#100,000。如...
精通比特币(43):中位时间过去Median-Time-Past
作为激活相对时间锁定的一部分,时间锁定(绝对和相对)的“时间”方式也发生了变化。在比特币中,墙上时间(wall time)和共识时间之间存在微妙但非常显著的差异。 比特币是一个分散的网络...
精通比特币(42):相对时间锁
nLocktime和CLTV都是绝对时间锁定,它们指定绝对时间点。下面的两个时间锁定功能是相对时间锁定,它们将消耗输出的条件指定为从块链接中的输出确认起的经过时间。 相对时间锁是有用的,...
精通比特币(41):绝对时间锁定
时间锁是只允许在一段时间后才允许支出的交易。比特币从一开始就有一个交易级的时间锁定功能。它由交易中的nLocktime字段实现。在2015年底和2016年中期推出了两个新的时间锁定功能,提供UTXO级...
精通比特币(40):使用区块链进行非交易存储导致的问题以及解决方案(RETURN操作符)
问题 运用比特币的区块链技术存储与比特币支付不相关数据的做法是一个有争议的话题。许多开发者认为其有滥用的嫌疑,因而试图予以阻止。另一些开发者则将之视为区块链技术强大功能的有力证明,从而试图给予大力支持...
精通比特币(39):P2SH(Pay-to-Script-Hash)
P2SH在2012年被作为一种新型、强大、且能大大简化复杂交易脚本的交易类型而引入。 P2SH是为了解决这复杂脚本的使用而被引入的,它旨在使复杂脚本的运用能与直接向比特币地址支付一样简单。 在P2SH...
精通比特币(38):多重签名以及应用
多重签名 多重签名脚本设置了一个条件,其中N个公钥被记录在脚本中,并且至少有M个必须提供签名来解锁资金。这也称为M-N方案,其中N是密钥的总数,M是验证所需的签名的数量。 例如,2/3的...
精通比特币(37):区块链浏览器显示比特币地址的“余额”的原理
比特币地址和余额,在交易结构中不存在。 我们看到交易本身并不包含比特币地址,而是通过锁定和解锁比特币离散值的脚本进行操作。 这个系统中的任何地方都不存在余额。 为了构建“总接收”数量,区...
精通比特币(36):随机性在签名中的重要性
在签名算法中重用相同的k值会导致私钥的暴露! 如果在两个不同的交易中,在签名算法中使用相同的值k,则私钥可以被计算并暴露给世界! 重用k值的最常见原因是未正确初始化的随机数...
精通比特币(35):签名哈希类型(SIGHASH)及使用
数字签名被应用于消息,在比特币中,就是交易本身。签名意味着签字人对特定交易数据的承诺( commitment)。 在一个交易中一个签名可以只承诺(commit)一个数据子集。  ...