时间锁是只允许在一段时间后才允许支出的交易。比特币从一开始就有一个交易级的时间锁定功能。它由交易中的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)一个数据子集。  ...
精通比特币(34):数字签名如何工作?
数字签名是一种由两部分组成的数学方案: 第一部分是使用私钥(签名密钥)从消息(交易)创建签名的算法; 第二部分是允许任何人验证签名的算法,给定消息和公钥。 创建数字签名 在比特币的ECDSA算法的实现...
精通比特币(33):比特币中使用的数字签名简介
维基百科对 “数字签名 ”的定义: 数字签名是用于证明数字消息或文档的真实性的数学方案。 有效的数字签名给了一个容易接受的理由去相信:1)该消息是由已知的发送者(身份认证性)创建的; 2)发送方不能否...
精通比特币(32):如何验证脚本?
每一个比特币验证节点会通过同时执行锁定和解锁脚本来验证一笔交易。每个输入都包含一个解锁脚本,并引用了之前存在的UTXO。 验证软件将复制解锁脚本,检索输入所引用的UTXO,并从该UTXO复制锁定脚本。...