基于一種區(qū)塊鏈技術(shù)設(shè)計(jì)的微支付解決方案
比特幣主鏈(包括BTC、BCH和BSV)進(jìn)行小微支付,有兩個(gè)問(wèn)題,第一是礦工費(fèi)太貴,和支付金額下限太高。BTC就不用說(shuō)了。一個(gè)理想的小微支付,應(yīng)該是支持超小的金額和超低的礦工費(fèi),比如可以發(fā)送1聰?shù)慕痤~,1聰/筆交易。但現(xiàn)在比特幣網(wǎng)絡(luò)都有防塵攻擊的設(shè)定,最小支付金額是546聰,礦工費(fèi)為最小1聰/字節(jié),一筆交易至少為225聰。
小微支付的第二個(gè)問(wèn)題是會(huì)對(duì)網(wǎng)絡(luò)積壓太多的歷史交易。小微支付必然是數(shù)量巨大,肯定會(huì)遠(yuǎn)遠(yuǎn)超過(guò)現(xiàn)在的主鏈上的支付數(shù)量。區(qū)塊鏈網(wǎng)絡(luò)是需要保存所有的歷史交易的,每筆交易都至少225字節(jié),巨大的交易會(huì)對(duì)網(wǎng)絡(luò)造成巨大的硬件需求。這可能會(huì)傷害去中心化。
對(duì)于確認(rèn)時(shí)間,小微支付并不敏感,接受零確認(rèn)就好了。
BTC+閃電網(wǎng)絡(luò)還需要進(jìn)一步發(fā)展才可能解決小微支付,本文不對(duì)此做過(guò)多的評(píng)價(jià)。
能否構(gòu)建這么一個(gè)方案:
1,不發(fā)新的幣,而是在現(xiàn)有的比特幣(無(wú)論是BTC、BCH還是BSV)構(gòu)建一種新的交易格式,專(zhuān)門(mén)用來(lái)完成小微支付。
2,小微支付的歷史記錄可以被裁剪。
我們額外構(gòu)建一種特殊的交易,使用軟分叉的方式進(jìn)行更新。
現(xiàn)在假定,所有的協(xié)議規(guī)則下,包括了P2PKH和P2SH這兩種交易格式(只是舉例,還有很多其他交易格式,這里為了描述方便做了假設(shè))?,F(xiàn)在要增加一種新的交易格式P2MP(Pay to Micro Payment)。
P2MP專(zhuān)門(mén)用于微支付,使用新的地址格式,交易金額默認(rèn)為小于等于10000sat,大于0sat,礦工費(fèi)默認(rèn)為固定的每字節(jié)0.01sat(現(xiàn)有的百分之一)。
構(gòu)建一個(gè)新的區(qū)塊(我們稱之為微支付區(qū)塊),和現(xiàn)有區(qū)塊(我們稱為主區(qū)塊)進(jìn)行一對(duì)一錨定。P2MP交易專(zhuān)門(mén)用新區(qū)塊收集。
微支付區(qū)塊使用擴(kuò)展區(qū)塊的設(shè)計(jì),擴(kuò)展區(qū)塊設(shè)計(jì)請(qǐng)參見(jiàn)《擴(kuò)展區(qū)塊Github文檔中文翻譯》
在微支付區(qū)塊內(nèi)部的轉(zhuǎn)賬,應(yīng)該非常容易實(shí)現(xiàn)。難點(diǎn)在于如何實(shí)現(xiàn)從主區(qū)塊支付到微支付區(qū)塊,以及如何從微支付區(qū)塊支付到主區(qū)塊。
在主區(qū)塊的末尾設(shè)計(jì)一筆特殊的收集所有從主區(qū)塊支付到微支付區(qū)塊的交易,我們稱之為主區(qū)塊尾部coinbase(這和區(qū)塊頭部的挖礦獎(jiǎng)勵(lì)coinbase交易相對(duì)應(yīng))。尾部coinbase交易的輸入(input)為所有進(jìn)入微支付區(qū)塊的交易的輸入;尾部coinbase交易的輸出是一筆特殊的鎖定腳本,這個(gè)腳本的公鑰部分留空,簽名部分設(shè)計(jì)為滿足特定條件就為true。這樣的輸出就類(lèi)似于一個(gè)任何人都可以花費(fèi)的UTXO。
主區(qū)塊coinbase尾部交易輸出:
scriptPubKey: 留空
scriptSig: 特殊條件為T(mén)rue
每一個(gè)主區(qū)塊的最新高度里的尾部coinbase交易的輸入,都要包含上一個(gè)區(qū)塊的尾部coinbase交易的輸出。
最新高度主區(qū)塊尾部coinbase的輸出金額=上一個(gè)區(qū)塊的尾部coinbase交易輸出金額+進(jìn)入微支付區(qū)塊的金額-離開(kāi)微支付區(qū)塊的金額-微支付區(qū)塊交易的礦工費(fèi)
微支付區(qū)塊里的第一筆交易,輸入是留空的,這個(gè)和主區(qū)塊的挖礦coinbase交易是一樣的,輸出是對(duì)應(yīng)著從主區(qū)塊所有進(jìn)入微支付區(qū)塊交易的輸出。
主區(qū)塊的尾部coinbase交易和微支付區(qū)塊的頭部coinbase交易,就形成一個(gè)橋接,把主區(qū)塊里的幣轉(zhuǎn)移到了微支付區(qū)塊。
而從微支付區(qū)塊要支付到主區(qū)塊,則按上面的過(guò)程,反過(guò)來(lái)。
微支付區(qū)塊是可以拋棄的。驗(yàn)證區(qū)塊時(shí),微支付區(qū)塊的存在與否不會(huì)影響主區(qū)塊的驗(yàn)證,但驗(yàn)證微支付區(qū)塊必須要拿到對(duì)應(yīng)的主區(qū)塊才能完成驗(yàn)證。這樣的設(shè)計(jì)下,任何一個(gè)主區(qū)塊,哪怕是拋棄了微支付區(qū)塊,也不會(huì)影響合法性,這樣就可以讓完整節(jié)點(diǎn)拋棄掉微支付區(qū)塊。
可拋棄式微支付區(qū)塊,讓微支付形成的歷史交易數(shù)據(jù)不對(duì)主網(wǎng)形成成本壓力。
微支付區(qū)塊里的交易可以設(shè)定一個(gè)時(shí)間,比如過(guò)了10萬(wàn)個(gè)區(qū)塊,節(jié)點(diǎn)可以拋棄掉微支付區(qū)塊。
微支付區(qū)塊甚至可以設(shè)計(jì)成是賬戶制。賬戶制不會(huì)產(chǎn)生大量的細(xì)碎UTXO,每一次支付都是修改余額,而不是像UTXO這樣刪掉原來(lái)的UTXO,再生成新的UTXO。賬戶制甚至可以植入一個(gè)虛擬機(jī),像以太坊和EOS那樣,讓比特幣網(wǎng)絡(luò)真正使用智能合約。
從技術(shù)實(shí)現(xiàn)角度上讀,擴(kuò)展區(qū)塊的代碼已經(jīng)寫(xiě)好了,是基礎(chǔ)bitcoin core0.13寫(xiě)的。是在2017年寫(xiě)好的。在這套代碼上修改成微支付擴(kuò)展區(qū)塊,應(yīng)該沒(méi)有太大的難度。
就目前的技術(shù)發(fā)展來(lái)說(shuō),BTC、BCH和BSV有可能實(shí)現(xiàn)類(lèi)似的方案嗎?在技術(shù)發(fā)展路線上,BTC主要發(fā)展閃電網(wǎng)絡(luò)來(lái)解決微支付場(chǎng)景。BSV不支持在主鏈上大做修改。BCH到不會(huì)在技術(shù)路線上設(shè)限,但這個(gè)理念還是沒(méi)人提起。