Nakamoto high-frequency transactions
在比特币 0.1 版中实现的功能包括交易替换 [2],输入序列 (nSequence) 和时间锁定 (nLockTime) ,它们允许两方或多方在确认之前重复更新未确认交易的状态。
Satoshi Nakamoto 在个人电子邮件中向比特币开发人员描述了这种技术:[3]
未记录的打开交易可以继续被替换,直到 nLockTime。它可能包含多方付款。每个输入所有者签署他们的输入 对于要编写的新版本,每个版本都必须签署更高的序列号(请参阅 IsNewerThan)。通过签署,一位投入所有者说:“如果每个人都投入资金并且产出就是这个,我同意把钱存入。” SignatureHash 中还有其他选项,例如 SIGHASH_SINGLE,这意味着 “我同意,只要这个输出(即我的)是我想要的,我不关心你对其他输出做什么。” 如果用高 nSequenceNumber 编写,那么除了那个规定之外,该方可以退出谈判,或者签署 SIGHASH_NONE 并完全退出。
各方可以通过使用 OP_CHECKMULTISIG 创建更高的 nSequenceNumber tx 来创建预先商定的默认选项,该 OP_CHECKMULTISIG 需要签署一方的子集以完成签名。各方保留此 tx,如果需要,将其传递给它,直到它有足够的签名。
nLockTime 的一个用途是在一组方之间进行高频交易。他们可以通过一致同意不断更新 tx。捐款方将是第一个签署下一版本的人。如果一方停止同意更改,则最后一个状态将记录在 nLockTime。如果需要,可以在每个版本之后准备默认交易,因此 n-1 方可以推迟无响应方。不需要广播中间交易。只有最终结果才会被网络记录下来。就在 nLockTime 之前,各方和一些见证节点广播他们看到的最高序列 tx。
这种设计并不安全:[ 引证需要 ] 一方可以与矿工勾结以提交交易的非最终版本,可能从另一方或多方窃取资金。
https://en.bitcoin.it/wiki/Payment_channels
根据中本聪发给比特币开发人员 Mike Hearn 的电子邮件,这个基本结构是中本聪的想法:
nLockTime 的其中一个用途是参与者间可以进行高频交易。他们可以通过一致同意不断更新。支付的人是下一个版本的第一个签署人。如果任何一方不同意更新,则最后一个状态将记录为 nLockTime 。如果需要的话,可以在每个版本之后准备一个默认的交易,这样同意 n-1 的参与者们可以将没有反应的人给剔除。中间交易不需要广播。只有最后的结果需要被记录到网络上。就在 nLockTime 发生之前,参与者们和几个见证节点广播他们见证的最高序列的 tx 。
事实上,nlocktime 可用于一组参与者之间的高频交易。 各参与方可以通过一致同意来不断更新 tx。付钱的一方将首先签署下一个版本。如果一方停止同意更改,那么最后一个状态将记录于 nLockTime。如果需要,可以在每个版本之后准备一个默认交易,以便 n-1 当事方可以将一个不响应的当事方除名。中间交易不需要广播。只有最终的结果才被网络记录。在 nLockTime 之前,当事方和一些见证节点广播它们所看到的最高序列 Tx。“
最后,我们可以创建支付通道及更多,这包括高频交易和即时拍卖在内的交易。