新闻资讯NEWS

比特币交易时间锁

发表时间:2020-04-07 06:50:05  作者:ope官网-opebet体育官网-ope体育注册  来源:ope官网-opebet体育官网-ope体育注册  浏览量:30

  网络不断产生新的交易,人们根据规则,将这些交易“塞到”新箱子里,随后将它摞在之前整理好的最后一个箱子上。

  容易想象,网络中的交易,被不断整理到箱子中,这些依次摞起来的箱子,形成了一条不断延长的“箱子”链。

  比特币网络的总帐本,就是这样的一条链,交易填充区块,一个个区块前向引用,形成区块链。

  Unix 时间戳是一种时间表示法,它的值,表示从1970年1月1日 0时0分0秒 UTC开始,经历的秒数。

  设想这样的需求,父亲想立个遗嘱,在自己去世后,儿子可以拥有自己所有的比特币,并需要保证:

  这笔交易是合法的,但因为时间锁的设置,即使向网络“展示”这笔交易,它也不会被提前写入账本。转账不会在父亲 80 岁前发生,即儿子不会在父亲 80 岁前拿到这笔钱。

  如果父亲去世时没到 80 岁,儿子也可以在未来,在父亲 80 岁这天之后,向网络“展示”交易,拿到这笔钱。

  完成操作 [1] 后,之前那笔签名过的交易会变得无效,因为对应的 UTXO 已经被消费。

  一般的,Alice 签名了一笔交易,付款到 Bob 的公钥哈希,并将交易的nLocktime设为三个月后。Alice 把这笔交易发送给 Bob,此时,两人都知道:

  这正是nLocktime的局限性。nLocktime唯一能保证的,是这笔交易在时间锁释放之前,无法被写入账本,即收款人无法在时间锁释放之前,收到资金。

  为了改善交易nLocktime时间锁的局限性,有更细粒度的控制,时间锁需要跟 UTXO 关联,即放到锁定脚本中。

  我们说,这是一个被CLTV锁定的 UTXO,只能在锁定脚本中的CLTV时间锁释放后才可以被消费。

  即,只有在当前区块高度超过[过期时间],或当前 Unix 时间戳超过[过期时间]时,CLTV时间锁才会释放,这个 UTXO 才可以被消费。

  逻辑上CLTV很好理解,但其工作方式稍显复杂,具体在BIP-65里定义,这里也做个说明。

  你能看到,交易要消费CLTV锁定的 UTXO,还需要配合使用nLockTime字段。

  这些条件组合有些复杂,与当前区块高度或当前 Unix 时间戳,好像并没有什么关系。

  画个图,直观的看一下。如果当前时间Tc,未到CLTV锁定的过期时间Tb:

  那么,你找不到这么一个nLockTime值T,同时满足T = Tc(交易即时生效)且T = Tb(释放时间锁)。

  那么,nLockTime可以被设置为大于等于Tb且小于等于Tc的任意值,一般的,都直接设置为当前的区块高度或当前的 Unix 时间戳Tc。

  nSequence字段最初被设计为,标识某些还未被写入账本(仍在内存池中)的交易,允许它们在之后被更新。

  BIP-68通过复用交易输入的nSequence字段,实现交易粒度的相对时间锁。

  那么,这笔新交易不会被写入账本,除非当前区块高度已经达到或超过 10,100。

  只有在满足了所有输入上的nSequence相对时间锁(如果有)要求后,交易才被认为合法,才会被写入账本。

  简单的说,被CSV锁定的 UTXO,从创建它的交易被写入账本开始计时,只有在经过一定的秒数或一定的区块数后,这个 UTXO 才可以被消费。

  与CLTV类似,在消费一个CSV锁定的 UTXO 时,要求满足下列所有条件。

  绝对时间锁,在达到指定的区块高度或具体的 Unix 时间戳前,这笔交易不会被写入账本

  相对时间锁,这笔交易不会被写入账本,除非其输入引用的那笔已经被写入账本的交易,经过了指定的时间或区块数

  绝对时间锁,在达到指定的区块高度或具体的Unix时间戳前,这笔 UTXO 无法被消费

  相对时间锁,在创建这个 UTXO 的交易写入帐本后,除非经过了指定的时间或区块数,否则这个 UTXO 无法被消费

  关于 Median Time-Past 和 Fee Sniping,因为需要理解区块和挖矿的相关内容,所以我把他们放在之后的文章中再介绍。

  时间锁的概念非常好理解,但细节繁多略显晦涩,建议你在阅读本文的同时,也看看下面的参考资料。

  学习就要学习本质:今天看看比特币到底是什么?1、未花费交易输出(UTXO:Unspent TransXtion Out):用比特币拥有者的公钥(锁定)加密的一个数字(1)UTXO==比特币(2)比特币...博文来自:weixin_34315665的博客

  先来看一则旧闻:图3-1 关于比特币内存池的旧闻这里说的比特币内存池,里面都是还没有被纳入区块链中的交易,因此也叫交易池。当用户使用比特币发起交易之后,会通过P2P网络广播发送到各个节点,每个节点再把...博文来自:akjw008的专栏

  时间戳:他的提出主要是为用户提供一份电子证据,证明用户的某些数据的产生时间。广泛运用于合同签字,知识产权保护,金融账务等方面的字符序列,他可以表示一份数据,在某个特定时间之前就已经存在的,完整的,可验...博文来自:Master 林

  本文解释了比特币交易的内容,目的和结果。下面的解释适用于新手和中级比特币用户。作为加密货币用户,你需要熟悉交易雏形——为了你对这种不断发展的创新有信心,以及作为理解新兴多签名交易和合约的基础,这两者都...博文来自:weixin_33755554的博客

  7.1介绍在上一章中,我们介绍了比特币交易的基本元素,并且查看了最常见的交易脚本类型,即P2PKH脚本。在本章中,我们将介绍更高级的脚本,以及如何使用它来构建具有复杂条件的交易。首先,我们将看看多重签...博文来自:老杨的博客

  比特币协议通用标准: 1 hashes 比特币中的哈希需要被被计算两次。哈希算法,大多数:SHA-256; ROPEMD-160 在需要较短哈希时被使用(例如: 当创建一个比特币地址),ROPEMD-...博文来自:yyxyong的博客

  比特币交易源码研读一(交易脚本)比特币交易本质是数据结构,还有比特币参与者和价值转移的相关信息,比特币区块链是全球复式记账总账本,每个比特币交易是在比特币区块链上的公开记录。交易实例一、交易数据结构由...博文来自:TuxedoLinux的博客

  比特币交易构成转自:交易类型产量交易(Generation) 每个Block都对应一个产量交易(Generation TX),该类交易是没有输入交易的,挖出的新币是所...博文来自:weixin_33733810的博客

  比特币期货合约和区块链智能合约可不相同,比特币期货合约一般是以比特币价格指数为标准的标准化合约,而它通常是以比特币来交易。...博文来自:weixin_43556404的博客

  有兴趣朋友也可以进一步关注公众号“架构之道与术”, 获取原文。 或扫描如下二维码: 在第9课 Transaction数据结构、UTXO、钱包 – 详解中,我们对Transaction的数据结构进行...博文来自:软件开发与架构领域 -体系化知识分享

  原文链接:郭老师的备课资料在上一篇中介绍了比特币交易的一些基本概念,简单介绍了比特币脚本,并且详细分析了最常见的P2PKH交...博文来自:不思量

  版权声明:可以转载,但请备注原文链接:?p=430关键字:比特币、区块链、交易脚本、智能合约、UTXO账户模型、价值转移1.比特币的UTXO模型首先,在讲比特币交易过程之前...博文来自:weixin_33739541的博客

  来源大致在网络上整理了区块链常见问答题,有需要可以参考学习下。问答来源:/elwingao 高志豪(weibo.com/elwingao) 以太坊开发:博文来自:sxjinmingjie的博客

  问:你认为区块链技术中的区块意味着什么?区块链由所有金融交易的信息组成。一个块只不过是一个记录列表。当这些列表相互结合时,它们被称为区块链。例如,一个组织有100个分类账簿,其中的组合被称为区块链,单...博文来自:weixin_34090562的博客

  原文链接:点击打开链接所谓比特币交易就是从一个比特币钱包向另一个中转账,每笔交易都有数字签名来保证安全。一个交易一旦发生那么就是对所有人都公开的,每个交易的历史可以最终追溯到相应的比特币最初被挖出来的...博文来自:Aaron的博客

  比特币交易流程总结 摘要:比特币是一个分布式的点对点网络系统。它被设计成为一种完全通过点对点技术实现的电子现金系统,可以不通过中间任何的金融机构直接由一方发起并支付给另外一方。比特币系统基本单位是UT...博文来自:zhangmin2016的博客

  本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。博文来自:Tony.Dong的专栏

  程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。...博文来自:敖丙

  作者 Rocky0429来源 Python空间大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻…网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网...博文来自:Rocky0429

  周末躺在床上看《拯救大兵瑞恩》周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。01、Alibaba Java 代码规...博文来自:沉默王二

  相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢?我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果:搜索一下:产品经理猝死,只有400万条的搜索结果,从搜...博文来自:曹银飞的专栏

  声明:本文以jdk1.8为主!搞定HashMap作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不...博文来自:编码之外的技术博客

  我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。博文来自:敖丙

  阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时01-08