这是第三篇文章 系列 深入研究各个盟约提案,这些提案已达到了成熟度,值得深入崩溃。
txhash和checktxhashverify (TXHASH)由史蒂文·罗斯(Steven Roose)和布兰登·布莱克(Brandon Black)提出,目前未分配的BIP号码是“基于模板”的盟约,可以从概念上看作是schectemplateweration(CTV)的扩展版或更高级版本。
在进入TXHASH工作原理的小小的坚韧不拔之前,让我们刷新比特币交易中的数据部分。
在高级别上,您具有输出,输入和证人(或输入中非隔离交易的脚本SIG)。
全球交易字段:
- 版本
- 标记,指示具有标志值的segwit
- 标志,指示具有标志值的segwit
- 输入计数
- 输出计数
- Nlocktime,用于时间曲目
每个输入都包含:
- 以前的交易的TXID
- 该交易的输出的VOUT(索引)
- Scriptsig大小
- scriptsig(如果非透视事务)
- 序列编号(用于RBF标记和相对时间表)。
每个输出都包含:
- 分配给输出的Satoshis数量
- ScriptPubKeysize,锁定脚本的大小
- ScriptPubkey,实际锁定脚本
在考虑TXHASH或CHECKTXHASHVERIFY时,我们可以忽略证人字段,因为OpCode都不会限制证人字段以保留某些属性。
Txhash的工作原理
TXHASH(仅Tapscript)和CheckTxHashverify(Legacy Script和Tapscript)在堆栈上都具有不同的行为,因为旧版脚本和Tapscript之间的差异。出于本文的目的,这些差异不是重要的,因此我们只是忽略它们。
如果CTV是一种约束比特币输出的盟约操作码,仅以单数且完全定义的方式来花费,TXHASH是CTV的增压版本,可以让您确切地选择交易的部分受到限制,并且必须以准确的预定方式来花费,以及某人想要的东西可以是某人在浪费时间时的时间。
它为您提供了两全其美的最好,需要在花费盟约限制的硬币时会做些事情,但随后允许用户使用他们的其余资金或他们正在制作的交易来做他们想做的任何事情。
这是使用“ TXFieldSelector”完成的。
CTV只是使用预定义事务的单个哈希,以便在消费时间验证。借助Txhash,您需要一种方法来传达哈希致力于的信息,以及哪些信息不是。那就是TXFieldSelector的工作。
TXFieldSelector本质上是一系列字节(长度可能是可变的),每个位传达了交易中的哪些字段,可以通过将要验证的哈希进行验证。这使您可以选择交易,NLockTime,版本的特定字段。它使您可以选择输入和输出的特定字段,即或不包括序列号或先前的输出ID或Taproot Annex(特定于Taproot脚本的数据字段)。输出,是对scriptPubkey提交的,金额值,还是都不是。您还可以准确地确定这些限制适用于哪些输出和输入。
TXFieldSelector的结合方式有一些复杂性和灵活性,您可以阅读所有更细节的细节 这里 如果您对这些感兴趣,在拟议的BIP中,但是要带走的主要点是您可以选择 确切地 当某人去支出收支平衡的产出时,交易的哪一部分受盟约的限制,而哪些部分不是在非常刻薄的程度上。
什么对Txhash有用
首先,TXHASH允许您使用CTV来完成所有可能的事情。因此,TXHASH还提供了CTV提供的所有价值,以优化预先签署的交易的任何事物的协调成本。但是它大大增强了该能力。您不必承诺全部交易,而是可以仅仅致力于所关心的部分。
这在理论上有两个重大好处。首先,在第三层的乐队费用管理中,更容易处理。目前使用 锚输出 需要用子女支付父母支付的两层和解交易,在这些交易中,一项从未确认的交易中花费了一笔输出,可以增加两者的净费用。 TXHASH让您只能通过多方交易进行交易对手的输出,并让您的随意做您想做的任何事情(在这里需要做其他事情来确保此安全,因此第三方无法将所有资金纳入您的费用上),包括稍微减少交易的RBF。
其次,对于多方协议,现在开门了,以允许对链交易所承诺的颗粒状保证。一些用户现在可以保证他们的硬币将如何花费,但不必关心其他一些用户对他们的用户的处理方式。我可以确定一个TXFieldSelector可以保证我的硬币得到正确处理,并且我不必关心别人的硬币去向。
结合CheckSigFromStack(CSF),TXHASH可以促进完全概括的Sighash系统。 Sighash标志是签名的一部分,它可以传达交易中的哪些部分,以检查签名。他们目前是:
- sighash_all – 签名所有输入和输出
- sighash_none – 签名所有输入,没有输出
- sighash_single – 符合与此输入相同的索引的所有输入和输出
这些Sighash标志都不允许在不使交易无效的情况下向交易中添加任何新输入,但是每个人都有AnyOneCanpay版本,该版本仅签署其自己的输入和适当的输出,允许其他任何人添加新的输入,并为AnyOneCanpay版本的Sighash_none和Sighash_none和SighAsh_None和Sighash_single添加新输出。
通过能够使用CSF“侧载”新的TXFieldSelectors,用户可以效仿Sighash系统,该系统使他们可以选择和选择哪些交易的单独部分。
TXHASH还允许使用单个仅适用于您希望检查的输入或输出的单个值字段的单个TXFieldSelectors在输入和输出的值之间执行平等,然后确保其在堆栈上的哈希相同。
结束思想
TXHASH是CTV的潜在增压,使支出交易的内省程度非常出色,这可能非常强大,尤其是与CSF这样的结合。
但是,这种功能足够表达,可以打开一个令人难以置信的大型设计空间的门。一种可能会对比特币的整体激励措施产生重大影响。诸如确保跨输出或输入之间的数量平等之类的事情非常接近无信任的自动交换链所需的领域。这是矿工可提取价值(MEV)的严重来源,这是其他区块链要处理的非常严重的激励和集中化问题。
TXHASH绝对不应被驳回,因为它为协议开发人员提供了令人难以置信的强大基础,因此人们将使用它所建立的目标的潜在二阶含义应与阳性相抵触。