
這是第五篇深入研究各個(gè)盟約提案,這些提案已達(dá)到了成熟度,值得深入崩潰。
在Bip 347中,Ethan Heilman和Armin Sabouri在Tapscript中提出重新激活,這不是盟約。這是一個(gè)最初包含在比特幣版本中的OPCODE,用于操縱堆棧上的數(shù)據(jù)元素。它在2010年與其他許多Opcodes一起停用,因?yàn)閾?dān)心拒絕可能會(huì)崩潰節(jié)點(diǎn)的服務(wù)攻擊。還添加了執(zhí)行腳本時(shí)堆棧上任何單個(gè)項(xiàng)目的全局最大限制為520個(gè)字節(jié)。?
您應(yīng)該已經(jīng)對(duì)堆棧上的腳本評(píng)估以及比特幣交易的基本部分有了基本的了解,因此OP_CAT確實(shí)沒有太多的先決條件解釋。?
雖然OP_CAT本身可能不是盟約,但由于Schnorr簽名的工作方式,它可以模仿盟約。這是一個(gè)深入的主題,由Blockstream的Andrew Poelstra完全解釋,因此我將堅(jiān)持高水平的視野。每個(gè)橢圓曲線都有一個(gè)發(fā)電機(jī)點(diǎn),本質(zhì)上是“ 1”,用于橢圓曲線數(shù)學(xué)中用于密鑰生成和簽名。使用Schnorr,您可以使用發(fā)電機(jī)點(diǎn)作為鍵進(jìn)行簽名,并給出或采用幾個(gè)字節(jié),您必須重復(fù)簽名才能正確,實(shí)際上,簽名實(shí)際上與您簽名的交易的哈希相同。?
擱置了現(xiàn)在的數(shù)學(xué)工作方式的機(jī)制,然后記住以后要記住,這些“怪異”簽名使您可以在堆棧上獲得當(dāng)前的交易TXID。?
?OP_CAT的工作原理
OP_CAT將堆棧上的兩個(gè)數(shù)據(jù)項(xiàng)占據(jù)了頂部,并將它們串聯(lián)在一起。因此,如果堆棧上的前兩個(gè)項(xiàng)目是“ 1”和“ 2”,則OP_CAT將其刪除兩個(gè),然后將“ 12”放在堆棧頂部。那。?
什么是op_cat有用的
好吧,這大不了嗎?為什么每個(gè)人都對(duì)op_cat感到恐懼,即使它如此簡(jiǎn)單,其工作方式的解釋甚至都沒有花費(fèi)完整的段落寫作??
盡管鑒于op_cat的性質(zhì),但我不能保證這兩個(gè)原因是唯一的兩個(gè)原因。 OP_CAT允許直接在堆棧上構(gòu)建和驗(yàn)證Merkle樹,這為一些有趣的行為和功能打開了門。由于上述“怪異”的schnorr簽名,它還允許模仿盟約,從而實(shí)現(xiàn)全顆粒狀的內(nèi)省。?
Merkle證明驗(yàn)證是Taproot的關(guān)鍵組成部分,但是它實(shí)現(xiàn)了Merkle樹驗(yàn)證的方式僅在驗(yàn)證tapscript支出路徑的背景下發(fā)生在root Schnorr公共密鑰中的root Schnorr公共密鑰中,在所花費(fèi)的硬幣的輸出腳本中。 Taproot不支持通用的Merkle證明驗(yàn)證。?
OP_CAT允許完全通用的方式。只需提供正確的順序提供葉子哈希(ES),然后提供內(nèi)部哈希節(jié)點(diǎn),然后依次調(diào)用OP_CAT,就可以使您重建一個(gè)默克爾根哈希,并與腳本中的預(yù)定的哈希進(jìn)行比較。您可以這樣做以提供共享UTXOS的單方面撤回路徑,您可以將交易取決于已包含在有效工作的塊中的其他交易,您幾乎可以根據(jù)任何可以通過Merkle證明進(jìn)行驗(yàn)證的交易。?
現(xiàn)在,對(duì)于能夠充分自省的盟約仿真。您要做的是確保交易必須具有某些特征才能有效?,F(xiàn)在請(qǐng)記住,“怪異”簽名獲得了堆棧上的交易哈希。實(shí)際上,在原始交易中實(shí)際上并未完成交易簽名,而是通過其哈希進(jìn)行的。這使我們能夠做一些有趣的事情。?
您可以使用OP_CAT構(gòu)建非常復(fù)雜且令人費(fèi)解的腳本,以將交易的各個(gè)原始部分作為證人的一部分,并慢慢將它們與OP_CAT一起放在堆棧上。一路上,可以通過has hass和使用OP_Equal來檢查交易的各個(gè)部分。在腳本的末尾,您可以在堆棧本身上進(jìn)行完整的交易,并可以將必要的數(shù)據(jù)附加到它上,然后將其放置,然后再次將其與OP_Equal進(jìn)行比較,這次與“怪異”簽名。如果該檢查通過,則可以運(yùn)行正常的檢查,并且只要在交易中進(jìn)行“怪異”簽名,所有內(nèi)容都將執(zhí)行為有效。?
沿途交易的單個(gè)部分的OP_E均等檢查確保交易的那些部分正是應(yīng)有的。如果其中任何一個(gè)未能進(jìn)行驗(yàn)證,則交易無效。這實(shí)施了模擬盟約。最后,如果通過OP_CAT構(gòu)建的交易哈希和“怪異”簽名匹配,則最終檢查可以確保使用OP_CAT構(gòu)建的事務(wù)并針對(duì)模擬盟約進(jìn)行檢查,以匹配當(dāng)時(shí)花費(fèi)的實(shí)際交易。?
結(jié)束思想
OP_CAT打開內(nèi)省和正向數(shù)據(jù)完全攜帶的門。內(nèi)省可以達(dá)到所需的任何顆粒度,而交易的每個(gè)字段都可以獨(dú)立承諾。它具有TXHASH具有的所有相同內(nèi)省功能,然后是一些。?
驗(yàn)證通用默克爾證明的能力也是一個(gè)強(qiáng)大的功能,但是質(zhì)疑如何使用該功能,以及可以創(chuàng)造哪種類型的激勵(lì)措施。只要使用使用比特幣腳本可用的哈希功能構(gòu)建的默克爾樹,就可以在外部區(qū)塊鏈系統(tǒng)上構(gòu)建比特幣腳本,以便在外部區(qū)塊鏈系統(tǒng)上進(jìn)行一些交易。?
雖然OP_CAT本身不是盟約,但它允許完全仿真具有效率較低的區(qū)塊鏈占地面積(以及開發(fā)人員犯錯(cuò)誤和賺錢的潛力)。提出的建議是,盡管它本身非常簡(jiǎn)單,但應(yīng)該謹(jǐn)慎對(duì)待它的大量設(shè)計(jì)空間。?






.png)





















