? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?子彈OTC支付:區(qū)塊鏈支付渠道的發(fā)展
脫鏈交易似乎是比特幣擴展的最佳選擇,盡管多家公司正在構(gòu)建和測試脫鏈交易基礎(chǔ)設(shè)施,但很少有人能體驗到它們的工作方式。
問題
首先,為什么我們?nèi)匀恍枰趨^(qū)塊鏈之外進行交易?使用比特幣的人們正在尋找安全性,而區(qū)塊鏈無疑是實現(xiàn)安全交易的最佳方式。當(dāng)然,問題在于,區(qū)塊鏈非常昂貴且效率低下,因為網(wǎng)絡(luò)中的每個參與者都存儲了整個歷史的副本,并且必須限制其使用以保持可持續(xù)的網(wǎng)絡(luò)參與。
可以放在區(qū)塊鏈上的有限數(shù)量的數(shù)據(jù)引發(fā)競爭,將交易包括在分類賬中,從而推高了交易成本。因此,為了保持區(qū)塊鏈層的輕巧和安全,我們需要盡可能少地使用它,并找到其他交易方式。
鏈下支付渠道
支付渠道基于交易替換的思想,可以在將未確認交易的狀態(tài)廣播到網(wǎng)絡(luò)之前對其進行更新。這個概念比大多數(shù)人認為的要古老,實際上Satoshi自己在第一個比特幣發(fā)行版中實現(xiàn)了類似的功能(但是他當(dāng)時的目標(biāo)不是提高可伸縮性,而是實現(xiàn)一組交易方之間的高頻交易)。
通過在廣播之前替換交易,無需使用昂貴且緩慢的區(qū)塊鏈即可進行大量交易。脫鏈支付渠道可以分為三類:
單向支付渠道
基于時間的雙向支付渠道
基于懲罰的雙向支付渠道
單向支付渠道
單向支付渠道最早可追溯到2013年,當(dāng)時Matt Corallo和Mike Hearn增加了對BitcoinJ的支持,但它們的用例非常有限,因為它們只允許您將資金從A轉(zhuǎn)移到B,而不能反過來。
單向支付渠道的基本設(shè)計如下:
愛麗絲將1個BTC發(fā)送給愛麗絲和鮑勃之間的2?比?2?多重簽名合同。
為了向Bob發(fā)送0.1 BTC,Alice創(chuàng)建并簽名了一筆交易,該交易給她自己0.9 BTC,給Bob 0.1 BTC并將其發(fā)送給Bob。
要第二次發(fā)送其他0.2 BTC,愛麗絲更新通道的狀態(tài),創(chuàng)建另一個事務(wù),該事務(wù)向自己發(fā)送0.7 BTC,向鮑勃發(fā)送0.3 BTC。
愛麗絲無法向網(wǎng)絡(luò)廣播,并且其中任何交易都包含在區(qū)塊鏈中,因為她沒有鮑勃的要求簽名(請記住,資金已鎖定在多重簽名合同中)。
鮑勃總是被激勵只廣播頻道的最后一個狀態(tài),因為這代表了他收到更多比特幣的結(jié)果。
為了保護Alice免受Bob響應(yīng)遲鈍,不合作廣播任何頻道狀態(tài)的風(fēng)險(也阻塞Alice的資金)的風(fēng)險,在多次簽約合同開始時創(chuàng)建了一項限時交易,用于向Alice退還一個BTC。需要時間鎖定以確保僅在Bob無響應(yīng)的情況下Alice才能使用此事務(wù)。
在時間鎖定期結(jié)束之前,Bob將廣播通道的最后狀態(tài),以避免Alice廣播時間鎖定事務(wù)的風(fēng)險。
但是,時間鎖定事務(wù)不是理想的解決方案,因為它容易受到延展性攻擊的影響。為了緩解這種情況,2015年協(xié)議升級引入了CLTV(檢查鎖定時間驗證),該協(xié)議允許將時間鎖定包括在合同本身的腳本中,而不是創(chuàng)建特定交易,從而避免了延展性問題。
注意:此類付款渠道有預(yù)定的有限使用期限,對于鮑勃來說,在時間鎖定到期后繼續(xù)使用該渠道確實是不安全的,需要在該日期之前關(guān)閉該渠道。
基于時間的雙向支付渠道
雖然在單向支付渠道中,只有愛麗絲可以將錢匯給鮑勃,但不能相反,但在雙向渠道中,資金流可以雙向流動。
單向支付渠道的安全性是基于這樣的事實,即鮑勃沒有動機來廣播該渠道的舊狀態(tài),因為它只會使愛麗絲受益(后者缺少鮑勃的簽名,無法自己廣播舊狀態(tài)。 )。但是,在雙向信道中,雙方都可能有動機在不同時間廣播信道的舊狀態(tài),因此需要不同的安全模型。為此,有兩種不同的方法:基于時間的安全和基于懲罰的安全。我們將開始分析前者。
一個基于時間的通道通過時,鎖定交易,這樣通道的最后狀態(tài)始終最低的時間鎖定實現(xiàn)安全,這意味著它是第一個可以在blockchain播出。具有較低時間鎖定的每個新事務(wù)都會使所有先前的事務(wù)無效,從而更新通道的狀態(tài)。
為了使這種系統(tǒng)真正變得不信任,有必要創(chuàng)建第一筆交易,在將任何比特幣轉(zhuǎn)移到multisig之前將資金退還給雙方,以防萬一雙方都不響應(yīng)。但是,創(chuàng)建花費未經(jīng)確認的交易的交易方會使各方面臨延展性攻擊的風(fēng)險,這意味著在此過程中只能使用SegWit交易,因為與正常交易不同,它們不受延展性問題的影響。
然而,這種設(shè)計存在明顯的問題,只有在第一個時間鎖定期滿之前,才能保證通道的安全性,然后必須將其關(guān)閉(即,將資金發(fā)送給兩方),從而使通道具有預(yù)定的有限使用壽命。
為了克服這個問題,可以使用相對時間鎖代替以前看到的絕對時間鎖來實現(xiàn)略有不同的設(shè)計。具有相對時間鎖定,只有在將事務(wù)包含在塊中之后,時鐘才會開始計時。為了使用相對的時間鎖定來實現(xiàn)沒有到期日期的渠道,我們需要構(gòu)建一個由雙方預(yù)先簽署的特殊啟動交易,以激活時間鎖定(開始計時)。然后僅在當(dāng)事方之一希望單方面關(guān)閉該頻道時廣播該廣播(如果雙方都同意,則他們可以使用正確的金額將簡單的交易發(fā)送到相應(yīng)的地址)。在啟動交易發(fā)生之前,時間鎖定被凍結(jié),并且可以無限期地處于該狀態(tài)。
盡管此設(shè)計極大地改善了支付渠道的使用壽命,但仍然存在巨大的局限性:如果您進行許多事務(wù),您很快就會用光時間,因為每次渠道更改其狀態(tài)時,時間鎖定都會減少,直到達到零。幸運的是,有一個技巧可以進一步延長渠道的壽命:當(dāng)交易的時間鎖變得太短時,您無需再向兩方匯款,而是將比特幣再次匯入多簽名,從而產(chǎn)生了另一個開端。一系列新的鎖定交易的交易??梢愿鶕?jù)需要多次重復(fù)此過程,以使頻道保持活動狀態(tài),但是要權(quán)衡的是,要單方面關(guān)閉頻道,必須廣播更多交易,而費用可能很高。
這種結(jié)構(gòu)需要一些區(qū)塊鏈監(jiān)控,以查看另一方是否廣播了啟動交易,因為在這種情況下,很重要的一點是,在廣播之前的交易之前,準(zhǔn)備好以最后一個狀態(tài)關(guān)閉通道非常重要。
懲罰性支付渠道
創(chuàng)建沒有到期日的渠道的另一種方法是將安全性基于對惡意交易對手的懲罰,而不是按時。這個想法仍然是將資金鎖定在參與該渠道的兩方之間的多重簽名合同中,但是要保證尊重正確的行為,雙方都要簽署交易,而交易要花費更復(fù)雜的智能合約設(shè)計,以確保交易替換的安全。這種支付渠道設(shè)計就是用于照明網(wǎng)絡(luò)的實現(xiàn)。
要設(shè)置頻道,首先愛麗絲和鮑勃必須生成一個秘密(即隨機數(shù))并交換哈希。雙方創(chuàng)建了一筆資金交易,并在2比2的多重簽名合同中存入了一些硬幣,假設(shè)他們各自投入0.5 BTC,但是在將其廣播到網(wǎng)絡(luò)之前,他們都創(chuàng)建了資金交易的后續(xù)交易,即所謂的承諾交易。在承諾交易中,愛麗絲向自己發(fā)送0.5個BTC,向合約發(fā)送0.5個BTC,在該合約中,鮑勃可以在預(yù)定時間后(例如,交易在區(qū)塊鏈上進行一周之后)或由愛麗絲使用,包括交易中的硬幣。鮑勃產(chǎn)生的秘密。
此時,Alice簽署了交易并將其交給Bob,Bob現(xiàn)在也可以簽署該交易,并在他希望關(guān)閉渠道的任何時候廣播(以防Alice沒有響應(yīng)或他需要鏈上的流動性)。
同時,鮑勃創(chuàng)建了一個類似于愛麗絲的承諾交易,向自己發(fā)送了0.5 BTC,向合同發(fā)送了0.5 BTC,合約中的硬幣可以由愛麗絲在一周后或由他自己使用,包括愛麗絲產(chǎn)生的秘密。
Alice的承諾交易腳本將遵循以下模板:
輸出0:0.5 BTC到以下合同
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
產(chǎn)出1:下一個合約的0.5 BTC
OP_IF
“ +7天” OP_CHECKSEQUENCEVERIFY OP_DROP
<鮑勃公鑰> OP_CHECKSIG
OP_ELSE
OP_SHA256 OP_EQUALVERIFY
<愛麗絲公鑰> OP_CHECKSIG
OP_ENDIF
此時,資金交易可以發(fā)生,并在區(qū)塊鏈上廣播?,F(xiàn)在,愛麗絲知道,如果交易對手對鎖定在渠道中的資金失去反應(yīng),她可以單方面簽署并發(fā)送由鮑勃(Bob)收到的交易,以收回比特幣。但是,她必須等待一個星期才能使時限到期,但是在這段時間內(nèi),Bob無法花費合同的另一分支,因為他仍然不知道Alice的秘密。
多重簽名地址Alice和Bob正在發(fā)送比特幣的腳本將如下所示:
OP_2 OP_2 OP_CHECKMULTISIG
到目前為止,我們所要做的只是安全地建立通道,但是第一個真正的脫鏈交易仍然必須發(fā)生。與我們在基于時間的渠道中已經(jīng)看到的類似,脫鏈支付是通過交易替換來實現(xiàn)的,但是這次舊交易將使用機密而不是時間鎖來使無效。
當(dāng)Bob想要向Alice支付0.1 BTC時,首先他們都需要生成一個新機密并共享相應(yīng)的哈希,這將用于構(gòu)建具有與前一個相同結(jié)構(gòu)的新的承諾交易,而不是發(fā)送0.5 BTC。送給Alice,送給自己0.5,現(xiàn)在送給Alice 0.6 BTC,送給自己0.4 BTC。
現(xiàn)在存在兩個不同但都是有效的承諾交易。由于Bob可以嘗試在區(qū)塊鏈上廣播舊交易(這會給他0.1額外的BTC),因此使其無效并啟用安全交易替換非常重要。為此,雙方現(xiàn)在可以共享他們?yōu)橄惹敖灰咨傻拿孛?。這樣,如果Bob試圖廣播舊交易,Alice有整整一周的時間花在合同中鎖定的資金,以提供Bob的機密,然后Bob才能將任何BTC移出?,F(xiàn)在,鮑勃(Bob)受到極大的動力去嘗試廣播舊的交易,因為他會失去在頻道上投入的所有資金。
所描述的過程實現(xiàn)了安全的交易替換,允許通道無限期地保持打開狀態(tài),在發(fā)生許多交易之后(不會優(yōu)于基于時間的通道),結(jié)算成本不會增加,但是仍然需要進行一些區(qū)塊鏈監(jiān)控以確保安全性。
向前進
支付渠道是鏈下擴展解決方案的基礎(chǔ),但僅憑它們還不夠,因為它們需要與您要與之進行交易的每個人開放一個渠道(并鎖定流動性)。為了解決這個問題,閃電網(wǎng)絡(luò)引入了一些額外的基于哈希鎖的加密魔術(shù),這些魔術(shù)使不同的支付渠道相互通信,形成一個網(wǎng)絡(luò)(可以簡化一下,您可以在此處了解有關(guān)閃電網(wǎng)絡(luò)的更多信息)。
全球多個團隊和開發(fā)人員正在探索提高比特幣支付可擴展性的其他解決方案,例如幫助重新平衡支付渠道的渠道工廠,Schnorr簽名和MAST腳本以減小規(guī)模(同時改善隱私性) )鏈上結(jié)算交易和許多其他了不起的建議。
擴大區(qū)塊鏈規(guī)模并不容易,目前只有有限的資源可用于基礎(chǔ)設(shè)施的改善。比特幣要與主流集中式解決方案競爭可能要花費一些時間,但是比特幣在這里已經(jīng)存在了多個世紀(jì),因此完全有必要等待適當(dāng)開發(fā)所需的時間。
所以總結(jié)來說子彈OTC支付可以帶來更加快捷的支付手段,