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