《extension block proposal》—— Johnson Lau
該臨時(shí)BIP允許通過軟分叉來增加額外的區(qū)塊空間攒至。這對(duì)于當(dāng)前的錢包是完全透明的(無論是接收還是發(fā)送),但是利用額外塊空間的新錢包將有完全不同的用戶體驗(yàn)。
我確信這個(gè)提案具有爭論性,但是我認(rèn)為它是一個(gè)有趣的學(xué)術(shù)話題胧瓜。如果我們有任何完全一致的強(qiáng)制性雙向錨鏈設(shè)計(jì)狸棍,該提案就類似于這樣。
目標(biāo):
- 通過一個(gè)軟分叉提供更多的區(qū)塊空間
- 對(duì)于現(xiàn)存錢包是完全透明的
- 不破壞任何當(dāng)前的安全假設(shè)
規(guī)范和術(shù)語:
全稱/簡寫 : 解釋缀遍;
main block / block: 當(dāng)前的比特幣區(qū)塊(如果BIP141被激活赡矢,使用witness)
main transaction / tx : 當(dāng)前比特幣區(qū)塊網(wǎng)絡(luò)中的交易(使用witness)
main UTXO / UTXO : 正常的UTXO
Extension transaction / xtx : 使用與BIP141描述的隔離見證交易相同的格式杭朱,不帶簽名字段阅仔,并且flag 為0x02吹散。xtx的鎖定腳本僅允許隔離見證程序。
Extension block / xblock : xblock 是xtx 的集合八酒,當(dāng)軟分叉被激活后空民,每個(gè)block 可能含有0個(gè)或1個(gè)xblock.
Extension UTXO / xUTXO : extension block 的UTXO集合。
銜接隔離見證程序: 一個(gè)新的隔離見證程序被定義羞迷。該隔離見證的腳本的版本號(hào)為OP_2. 該程序的長度是在4-40字節(jié)之間界轩。首字節(jié)是必須是0x00[表示:block -> xblock]或0x01表示:xblock -> block。像P2WPKH和P2WSH, 銜接程序也可以被P2SH 封裝衔瓮。在主鏈上有兩種方法去花費(fèi)該種類型的交易:
- 像一個(gè)使用普通隔離見證程序的交易一樣去花費(fèi)它浊猾。例如:如果銜接程序是OP_2 < 0x000014{20 bytes}>, 它可以像版本號(hào)為0的20字節(jié)程序 一樣花費(fèi), 例如:P2WPKH. 在這個(gè)案例中沒有什么特殊的情況發(fā)生。
- 花費(fèi)它就像一個(gè)含有特殊xtx的普通隔離見證程序热鞍,這個(gè)創(chuàng)世的的xtx葫慎。在這個(gè)案例中衔彻,包含這個(gè)xtx的礦工需要做更多的工作,如下所述:
- 整合UTXO: 一個(gè)特殊的UTXO偷办,含有的 value > 所有已存在xUTXO total value的特性艰额,并且scriptPubKey 是OP_1, (為了使文檔更容易閱讀,這里假設(shè)我們有一個(gè)0值的UTXO椒涯,并且它以硬編碼的方式初始化整合UTXO柄沮,在這個(gè)例子中,將會(huì)有第一個(gè)礦工創(chuàng)造xblock废岂,以便用來構(gòu)建初始化的整合UTXO)祖搓。
- 整合交易:如果一個(gè)標(biāo)準(zhǔn)區(qū)塊含有一個(gè)拓展塊,則在標(biāo)準(zhǔn)塊的第二個(gè)交易必須是整合交易泪喊。交易輸入包含拓展塊中所有的初始xtx花費(fèi)的UTXO棕硫。如果它只是隔離見證程序,則隔離見證必須是空的袒啼。如果是一個(gè)P2SH隔離見證程序哈扮,則簽名腳本必須是銜接隔離見證程序,并且該隔離見證數(shù)據(jù)時(shí)空的蚓再。最后的輸入必須是原來的整合交易的UTXO滑肉,使用空的隔離見證和簽名腳本。如果沒有從xblock到main block的花費(fèi)摘仅,那么唯一的輸出是更新的整合交易的UTXO靶庙,交易輸出金額必須>=所有xUTXO的金額總和。
目前為止娃属,以描述了如何從main UTXO 發(fā)送比特幣到 xUTXO. 簡單來說六荒,人們發(fā)送金額到一個(gè)新格式的隔離見證程序。這個(gè)新格式的交易可以靈活的在main block 和拓展塊上進(jìn)行花費(fèi)矾端。如果人們發(fā)送金額到主區(qū)塊掏击,不會(huì)發(fā)生什么特殊的事情。如果人們發(fā)送金額到拓展塊秩铆,這些發(fā)送金額將會(huì)被整合交易的UTXO收集砚亭。
當(dāng)人們發(fā)送金額到拓展塊后,他們可以像main block一樣在拓展塊上進(jìn)行交易殴玛。由于xblock 對(duì)于軟分叉的用戶是不可見的捅膘,我們可以對(duì)xblock 有各種大小限制,這不是這個(gè)提案的主題滚粟。
棘手的部分是從xblock 發(fā)送至 main block.
Returning transaction :返回交易是一個(gè)特殊的xtx寻仗,使用方向標(biāo)識(shí)符0x01,發(fā)送金額到一個(gè)銜接隔離見證程序,這些銜接的隔離見證程序?qū)⒉粫?huì)被記錄在xUTXO集合中凡壤。另外署尤,一個(gè)交易輸出被添加到整合交易蔬咬,該交易輸出使用銜接隔離見證程序和對(duì)應(yīng)的金額,稱為"返回UTXO"沐寺。這個(gè)返回的UTXO集直到100個(gè)確認(rèn)后才可以被花費(fèi)林艘。更新的整合交易的UTXO是最后一個(gè)輸出,并且沒有100個(gè)100塊確認(rèn)的要求限制混坞。
Fees collection in xblock(在xblock中交易費(fèi)的集合): 類似于標(biāo)準(zhǔn)交易狐援,人們?cè)谕卣箟K中支付交易費(fèi),是通過制造交易輸出值<交易輸入值究孕,因?yàn)檎辖灰椎腢TXO的值 >= 所有已存在的xUTXO集合的值啥酱,如果在拓展塊中支付交易費(fèi),將減少整合交易UTXO的值厨诸,并且礦工通過普通的coinbase交易作為交易費(fèi)用被支付镶殷。
xblock commitment:2個(gè)xblock merkle 根,一個(gè)采用隔離見證微酬,一個(gè)未采用隔離見證绘趋,被恰好放置在coinbase交易隔離見證承諾結(jié)構(gòu)的后面。(也許我們可以使用coinbase的預(yù)留隔離見證值颗管,詳見TBD)陷遮。如果沒有xblock承諾結(jié)構(gòu),xblock 必須是空的垦江,并且整合交易是不被允許的帽馋。
類似于任何的雙向錨鏈提案,從側(cè)鏈發(fā)送金額值主鏈一直是棘手的部分比吭。但是不同于Rootstock的側(cè)鏈提案绽族,extension block 是完全強(qiáng)制共識(shí)性的,并且與現(xiàn)有的比特幣交易有相同的安全級(jí)別衩藤。為了保證上述的要求吧慢,對(duì)于Returning UTXO 100個(gè)塊的確認(rèn)期限是非常必須的,因?yàn)閴K鏈重組之后慷彤,整合交易的交易ID非陈Π可能改變怖喻,這將破壞來自它的交易鏈底哗。因此100個(gè)區(qū)塊的成熟度要求使我們回到了通常的假設(shè),即交易在100次確認(rèn)后變成永久锚沸。
注意:這將大幅度改變用戶體驗(yàn)跋选,因?yàn)闆]有用戶希望100個(gè)塊的鎖定時(shí)間(除了礦工)。這就是為什么我不允許Returning UTXO的含有隨意的鎖定腳本哗蜈,因?yàn)楫?dāng)前的用戶錢包根本沒有這樣的鎖定機(jī)制前标。使用一個(gè)特殊的鎖定腳本可以保證接收者必須理解這個(gè)實(shí)現(xiàn)坠韩。應(yīng)該給新錢包的用戶以警告,盡管他們可以在xblock中享受較低的手續(xù)費(fèi)炼列,但是他們可能很難再向傳統(tǒng)錢包轉(zhuǎn)錢只搁。這是一個(gè)巨大的限制。
也許我們創(chuàng)建一些分布式的市場(chǎng)(使用簡單的hash-time-lock鎖定交易)俭尖,從而允許人們?cè)趍ain block 與 xblock 之間進(jìn)行價(jià)值轉(zhuǎn)換氢惋,以繞過100個(gè)確認(rèn)限制,這實(shí)際上更便宜稽犁,因?yàn)橥暾姆祷亟灰仔枰獌刹窖嫱鴓2p的交換僅需要1步。
問題:
- 是否可能在不影響安全性的條件下簡化設(shè)計(jì)已亥?
- 是否可以接受沒有100個(gè)塊的成熟度要求的交易熊赖,從而打破一些長期假設(shè)?(這將大大提高可用性,直到重組發(fā)生)
- 即使需要成熟度要求虑椎,100個(gè)塊的成熟度是否過多震鹉?我們從來沒有一個(gè)分叉可能超過20個(gè)塊。另外捆姜,由于塊鏈的重組而導(dǎo)致交易鏈的斷裂已經(jīng)成為可能足陨,因?yàn)槿藗冊(cè)趬K鏈重組期間可能進(jìn)行雙花。
注意:除非明確要求娇未,否則方向標(biāo)識(shí)符是必須的墨缘,它可以保證接收者不會(huì)被支付一個(gè)Returning transaction。它可以與隔離見證的版本號(hào)組合零抬,使用同一個(gè)字節(jié)來標(biāo)識(shí)這個(gè)功能镊讼。
引用:
原文鏈接: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-January/013490.html
本文由 Copernicus團(tuán)隊(duì) 姚永芯
翻譯,轉(zhuǎn)載無需授權(quán)平夜。