以下是對sparkswap即時結算技術的深入研究,這是一種交易加密貨幣而不在交易所存放資產的新方式。
無信任的原子跨鏈交換被認為是托管加密貨幣交換問題的潛在解決方案,但在很大程度上未能實現大量用戶采用。我認為,失敗的一個重要原因是普通金額交易的最終速度慢得讓人無法接受。使用2層解決方案的原子交換(如閃電網絡(和更普遍的支付通道網絡)有可能顯著提高這些交換的速度,但到目前為止,主要是針對具體實施的演示。
跨網絡預映像檢索是支付通道網絡上無信任原子交換的一種新機制,增加潛在的貨幣支持并簡化實施,同時保持鏈式交換的原子和無信任屬性。
托管交易所重新引入風險
今天的加密貨幣交易主要是在托管交易所進行的,在托管交易所中,用戶直接將其貨幣存入交易所,在交易所系統(tǒng)內進行交易,然后在以后提取新的貨幣余額。從交易所的角度來看,這一結構雖然最簡單,但它將托管風險重新引入了一個系統(tǒng)(比特幣/加密貨幣),該系統(tǒng)旨在消除托管風險并為其用戶提供金融主權。
因此,監(jiān)管交流表現出傳統(tǒng)金融體系的所有問題,盡管在某些情況下,行業(yè)的新的和大多數不受管制的性質加劇了這種問題。在過去的幾年里,數十億人從交易所被盜,資產經常被地方政府凍結,或者由于運營積壓,用戶根本無法將貨幣轉出。
原子互換交易速度太慢
無信任的原子交換是這個問題的潛在解決方案。使用加密貨幣原生的屬性(例如腳本),用戶可以構建兩個不同區(qū)塊鏈上的貨幣之間的交換,其中交易在各方之間是無信任的,不需要可信中介,并且是原子性的(即它完成或不完成,它不能部分完成)。
Decred已經在Script中發(fā)布了一個簡單易懂的原子交換合同,并生成了一個交換多種貨幣的示例實現(該研究擴展到包括以太坊)。
然而,通過鏈上交易使用原子交換需要相當長的時間來保持不信任——在使用比特幣(迄今為止最具流動性的加密貨幣)進行交易的情況下,這些交換需要一個多小時才能完成。對于價格在幾秒鐘和幾分鐘內變動的交易貨幣,這種緩慢的最終確定將導致其中一方退出交易。因此,它們不會像預期的那樣進行結算交換,而是完全沒有交換。
一些項目正在使用0確認事務和專用仲裁節(jié)點或類似系統(tǒng)的組合來嘗試提高交換的速度,這降低了交換的不信任性質。另一些機構則利用鏈上掉期的延遲方面,將其構建成類似期權合約的交易——這是一個很有前景的研究領域,但不能解決現貨交易問題。
閃電網絡交換目前受到限制
像閃電網絡這樣的2層解決方案以一般方式解決了比特幣和其他加密貨幣中的交易終結速度問題,并且也可以用于原子交換。事實上,原子交換在其白皮書中被列為閃電網絡的潛在應用。 閃電實驗室在2017年底使用閃電Daemon演示了BTC / LTC交換。
雖然BOLT規(guī)范是迄今為止最成熟的支付通道網絡,但它是為比特幣(理所當然地)構建的,并且可能無法支持用戶想要交換的更的多種加密貨幣。Raiden作為非BOLT兼容網絡的發(fā)展是朝這個方向邁出的明確一步。
作為鏈上和鏈下交換的混合解決方案,Alex Bosworth創(chuàng)建了潛艇交換,允許用戶使用鏈上交易支付閃電網絡發(fā)票。該軟件擴大了與其他貨幣的互操作性,并為閃電網絡發(fā)票提供了獨特的視角。但是,由于鏈上交易,結算速度仍然受到限制。
跨網絡原像檢索
基于閃電實驗室團隊和Alex Bosworth的工作,我們開發(fā)了一種新機制,使用支付通道網絡(如Lightning Network)執(zhí)行加密貨幣之間的無信任原子交換:
· 增加交換對其他區(qū)塊鏈和貨幣的潛在影響
· 簡化交換的實施
· 維護交換的不信任和原子屬性
我們稱這種機制為跨網絡原像檢索。
在我解釋這種機制的具體結構之前,我將簡要介紹支付通道網絡支付和交換的背景,這是了解跨網絡原像檢索的兩個關鍵組件。
支付通道網絡支付
在諸如閃電網絡之類的支付通道網絡中,支付是通過僅為最終支付的接收者所知的原像來調節(jié)的。在從起點(付款人)到目的地(收款人)的路線上不可撤銷地承諾付款,每個節(jié)點不可撤銷地承諾如果他們呈現對應于散列的前映像,則向下一節(jié)點支付給余額。
為了兌現她的付款,目的地節(jié)點將預映像呈現給倒數第二個節(jié)點,傳輸承諾的貨幣并完成付款。然后,倒數第二個節(jié)點使用該預映像來兌現到期的付款,依此類推,沿到原點的路線向后觸發(fā)整個結算鏈,使原點節(jié)點的貨幣更少,目標節(jié)點的貨幣更多,并且每個中間節(jié)點的余額沒有變化(例如提取費用除外)。
在接收到閃電網絡中的預映像時,用于不可撤銷地承諾付款的合同是一個哈希時間鎖定合同。
支付通道網絡交換
使用支付通道網絡的原子交換最好被視為循環(huán)支付。如果最簡單的多跳支付沿著從用戶A到用戶X到用戶B的路徑都在同一區(qū)塊鏈上,則最簡單的交換沿著區(qū)塊鏈1上的用戶A到用戶B的路由,以及從用戶B到用戶的路由。A區(qū)塊鏈2.此付款是一個循環(huán),其起源位于區(qū)塊鏈1上的用戶A和區(qū)塊鏈2上用戶A的目的地。由于這是一條路線的所有部分并且與一個前映像和散列相關聯,因此其結果是原子的。如果交換成功,則用戶A在區(qū)塊鏈1上用較少的貨幣結束,并且區(qū)塊鏈2上的貨幣更多(用戶B具有相反的結果)。
正如他們迄今為止所證明的,支付通道網絡交換依賴于用戶B在區(qū)塊鏈1和區(qū)塊鏈2上操作他的節(jié)點,這樣他就可以在區(qū)塊鏈1上收到支付承諾(HTLC),并在區(qū)塊鏈2上延長支付承諾,并在整個路徑上向后結算。
此設置為用戶B帶來了重大困難,即:
· 他運行的軟件必須支持他希望交易的每一個區(qū)塊鏈(或者:他必須擁有支持他希望每一筆交易的軟件)。
· 支付轉發(fā)機制必須支持本地交換,并且可以訪問(或邏輯)用戶的交易偏好。
#1顯著限制了理論和實踐中的兼容性,#2顯著增加了實現復雜性。
跨網絡原像檢索交換
使用跨網絡原像檢索的支付通道網絡交換要求每個參與者操作三個組件:
· 每個不同網絡的支付通道網絡節(jié)點(共兩個節(jié)點)
· 連接支付通道網絡節(jié)點的節(jié)點,我們稱之為鏈間路由器。
· 這些組件都是由同一個用戶控制和操作的,因此它們之間的交互模式是半可信的。
準備交換
設置交換,用戶A(發(fā)起方)在區(qū)塊鏈2上運行的支付通道網絡節(jié)點上創(chuàng)建一個只有她知道的原始圖像的發(fā)票。她將帶有此原像的哈希發(fā)送給用戶B帶外。
用戶B(轉移方)在他的支付通道網絡節(jié)點上為用戶A發(fā)送的哈希在區(qū)塊鏈1上創(chuàng)建發(fā)票。由于用戶B不知道該發(fā)票的原像,他將其標記為外部原像發(fā)票,或者從外部存儲原像的發(fā)票。
開始交換
然后,用戶A在收到區(qū)塊鏈1上的PCN節(jié)點到區(qū)塊鏈1上的用戶B的PCN節(jié)點的預映像(HTLC)后,通過延長不可撤銷的付款承諾來啟動交換。
區(qū)塊鏈1上的用戶B的PCN節(jié)點在收到此付款承諾后,通常會拒絕它,因為它沒有兌換它的映像。在我們的案例中,用戶B創(chuàng)建了一個特殊的外部映像發(fā)票,表明付款的映像可以通過外部服務獲得。區(qū)塊鏈1上的用戶B的PCN節(jié)點從外部服務請求映像,在我們的例子中是鏈間路由器。
跨區(qū)塊鏈轉換交換
鏈間路由器根據價格、交易對手和規(guī)模決定是否進行交換交易。如果鏈間路由器確實決定繼續(xù)交換,它通過使用區(qū)塊鏈2上的用戶B的PCN節(jié)點來轉換支付,以便在收到預映像(HTLC)后,將不可撤銷的支付承諾擴展到區(qū)塊鏈2上的用戶A的PCN節(jié)點。
解決交換的最后一步
區(qū)塊鏈2上的用戶A的PCN節(jié)點,在為其知道的預映像(見步驟1)擴展此付款后,結算付款,從而將預映像顯示給區(qū)塊鏈2上的用戶B的PCN節(jié)點。
跨區(qū)塊鏈轉換原像
區(qū)塊鏈2上的用戶B的PCN節(jié)點將預映像返回到鏈間路由器(發(fā)起支付)。一旦鏈間路由器具有預映像,它就可以將預映像返回到區(qū)塊鏈1上的用戶B的PCN節(jié)點。
結算交換的初始階段
現在擁有擴展到它的支付的預映像,區(qū)塊鏈1上的用戶B的PCN節(jié)點結算初始支付,觸發(fā)結算回區(qū)塊鏈1上的用戶B的PCN節(jié)點。
交換結果
結果是用戶A在區(qū)塊鏈1上減少貨幣以換取區(qū)塊鏈2上的貨幣,而用戶B則相反。
在正常操作中,此交換將在各自的支付通道網絡上進行兩次支付所需的時間內結算,在閃電網絡的情況下通常是在數百毫秒內。
增加互操作性
兩個支付通道網絡及其基礎區(qū)塊鏈需要具有的唯一共同屬性是為了使用跨網絡原像檢索完成原子交換,基于收到原像后不可撤銷的付款承諾和對同一個預映像的支持的支付過程。這些原像的哈希函數(例如sha256)。對于通過無腳本消除甚至是散列函數的通用性限制也有積極的研究,但即使沒有這樣的開發(fā),保持對單個散列函數的互操作性要求也會打開大量的潛在貨幣,包括目前正在開發(fā)的網絡。開發(fā)(如RAIDEN和閃電網絡)。
除了紙面上增加的互操作性外,跨網絡原像檢索通過消除對單個客戶機支持兩個區(qū)塊鏈的要求,提高了實際的互操作性。對于不同的足夠貨幣(如比特幣和zcash),即使是遵循相同規(guī)格的客戶(如bolt)也可能不同到需要(或至少建議)一個單獨的客戶。
簡化實施
消除兩個區(qū)塊鏈上的兩種貨幣同時在同一客戶機內共存的需求,顯著降低了交換實施的復雜性(正如Lightning Labs團隊為LND取消優(yōu)先級的并行多鏈支持所證明的那樣)。
此外,跨網絡原像檢索通常使用每個支付通道網絡都應該使用的原語。具體來說,它使用:
· 發(fā)送付款
· 結算付款
· 發(fā)票/原像創(chuàng)建
在一個區(qū)域中,支付通道網絡節(jié)點必須執(zhí)行非標準動作,即檢索存儲在外部服務上的原像。鑒于原像的潛在敏感性和分離問題的愿望,即使該功能可能最終在跨網絡交換之外具有實用性。
權衡
當然,這種方法也有取舍。最容易想到的兩個問題是減少隱私和限制跨網絡消息傳遞。
閃電網絡實驗室演示的交換只要求發(fā)起方用戶A知道用戶B的身份,即轉移方??缇W絡原像檢索要求每一方都知道對方的身份(至少在一個支付通道網絡上),因為每一方都負責構建一條路線。在我看來,這是一個可以接受的折衷方案,因為在進行交易時,交易對手的身份可能是一個相關細節(jié)。
此外,由于這是一種跨網絡和跨規(guī)范交換,因此將特定于網絡的消息傳遞回來的能力是有限的。這也可能是一個可以接受的折衷方案,因為在網絡間傳遞此類消息的需要也是有限的。
快速、簡單且可互操作的跨鏈交換
跨網絡原像檢索允許交換利用支付通道網絡帶來的速度,允許交易與當今保管加密貨幣交換所允許的速度相當,同時保持鏈上的原子性,無信任性和最終性交換交易。
這種新機制允許在不同基礎區(qū)塊鏈上構建的多個不同類型的網絡之間進行交換,這些網絡在不同的網絡客戶端中實現。它是一種更簡單的方法,能夠更好地利用這些網絡的內置功能,從而使其成為更強大的交換機制。
實踐中的跨網絡原像檢索
我們在構建Sparkswap的同時開發(fā)了跨網絡原像檢索,這是一種交換加密貨幣的新系統(tǒng),無需將資產存入第三方(如交易所)。這些交換正在為在測試網上運行的軟件提供動力,執(zhí)行比特幣/萊特幣交易,這些交易可以在幾秒鐘內完成。
評論
查看更多