為了兌現她的付款,目的地節點將預映像呈現給倒數第二個節點,傳輸承諾的貨幣並完成付款。然後,倒數第二個節點使用該預映像來兌現到期的付款,依此類推,沿到原點的路線向後觸發整個結算鏈,使原點節點的貨幣更少,目標節點的貨幣更多,並且每個中間節點的餘額沒有變化(例如提取費用除外)。
在接收到閃電網路中的預映像時,用於不可撤銷地承諾付款的合同是一個雜湊時間鎖定合同。
支付通道網路交換
使用支付通道網路的原子交換最好被視為迴圈支付。如果最簡單的多跳支付沿著從使用者A到使用者X到使用者B的路徑都在同一區塊鏈上,則最簡單的交換沿著區塊鏈1上的使用者A到使用者B的路由,以及從使用者B到使用者的路由。A區塊鏈2.此付款是一個迴圈,其起源位於區塊鏈1上的使用者A和區塊鏈2上使用者A的目的地。由於這是一條路線的所有部分並且與一個前映像和雜湊相關聯,因此其結果是原子的。如果交換成功,則使用者A在區塊鏈1上用較少的貨幣結束,並且區塊鏈2上的貨幣更多(使用者B具有相反的結果)。
正如他們迄今為止所證明的,支付通道網路交換依賴於使用者B在區塊鏈1和區塊鏈2上操作他的節點,這樣他就可以在區塊鏈1上收到支付承諾(HTLC),並在區塊鏈2上延長支付承諾,並在整個路徑上向後結算。
此設定為使用者B帶來了重大困難,即:
· 他執行的軟體必須支援他希望交易的每一個區塊鏈(或者:他必須擁有支援他希望每一筆交易的軟體)。
· 支付轉發機制必須支援本地交換,並且可以訪問(或邏輯)使用者的交易偏好。
#1顯著限制了理論和實踐中的相容性,#2顯著增加了實現複雜性。
跨網路原像檢索交換
使用跨網路原像檢索的支付通道網路交換要求每個參與者操作三個元件:
· 每個不同網路的支付通道網路節點(共兩個節點)
· 連線支付通道網路節點的節點,我們稱之為鏈間路由器。
· 這些元件都是由同一個使用者控制和操作的,因此它們之間的互動模式是半可信的。
準備交換
設定交換,使用者A(發起方)在區塊鏈2上執行的支付通道網路節點上建立一個只有她知道的原始影象的發票。她將帶有此原像的雜湊傳送給使用者B帶外。
使用者B(轉移方)在他的支付通道網路節點上為使用者A傳送的雜湊在區塊鏈1上建立發票。由於使用者B不知道該發票的原像,他將其標記為外部原像發票,或者從外部儲存原像的發票。
開始交換
然後,使用者A在收到區塊鏈1上的PCN節點到區塊鏈1上的使用者B的PCN節點的預映像(HTLC)後,透過延長不可撤銷的付款承諾來啟動交換。
區塊鏈1上的使用者B的PCN節點在收到此付款承諾後,通常會拒絕它,因為它沒有兌換它的映像。在我們的案例中,使用者B建立了一個特殊的外部映像發票,表明付款的映像可以透過外部服務獲得。區塊鏈1上的使用者B的PCN節點從外部服務請求映像,在我們的例子中是鏈間路由器。
跨區塊鏈轉換交換
鏈間路由器根據價格、交易對手和規模決定是否進行交換交易。如果鏈間路由器確實決定繼續交換,它透過使用區塊鏈2上的使用者B的PCN節點來轉換支付,以便在收到預映像(HTLC)後,將不可撤銷的支付承諾擴充套件到區塊鏈2上的使用者A的PCN節點。
解決交換的最後一步
區塊鏈2上的使用者A的PCN節點,在為其知道的預映像(見步驟1)擴充套件此付款後,結算付款,從而將預映像顯示給區塊鏈2上的使用者B的PCN節點。
跨區塊鏈轉換原像
區塊鏈2上的使用者B的PCN節點將預映像返回到鏈間路由器(發起支付)。一旦鏈間路由器具有預映像,它就可以將預映像返回到區塊鏈1上的使用者B的PCN節點。
結算交換的初始階段
現在擁有擴充套件到它的支付的預映像,區塊鏈1上的使用者B的PCN節點結算初始支付,觸發結算回區塊鏈1上的使用者B的PCN節點。
交換結果
結果是使用者A在區塊鏈1上減少貨幣以換取區塊鏈2上的貨幣,而使用者B則相反。
在正常操作中,此交換將在各自的支付通道網路上進行兩次支付所需的時間內結算,在閃電網路的情況下通常是在數百毫秒內。
增加互操作性
兩個支付通道網路及其基礎區塊鏈需要具有的唯一共同屬性是為了使用跨網路原像檢索完成原子交換,基於收到原像後不可撤銷的付款承諾和對同一個預映像的支援的支付過程。這些原像的雜湊函式(例如sha256)。對於透過無指令碼消除甚至是雜湊函式的通用性限制也有積極的研究,但即使沒有這樣的開發,保持對單個雜湊函式的互操作性要求也會開啟大量的潛在貨幣,包括目前正在開發的網路。開發(如RAIDEN和閃電網路)。
除了紙面上增加的互操作性外,跨網路原像檢索透過消除對單個客戶機支援兩個區塊鏈的要求,提高了實際的互操作性。對於不同的足夠貨幣(如比特幣和zcash),即使是遵循相同規格的客戶(如bolt)也可能不同到需要(或至少建議)一個單獨的客戶。
簡化實施
消除兩個區塊鏈上的兩種貨幣同時在同一客戶機內共存的需求,顯著降低了交換實施的複雜性(正如Lightning Labs團隊為LND取消優先順序的並行多鏈支援所證明的那樣)。
此外,跨網路原像檢索通常使用每個支付通道網路都應該使用的原語。具體來說,它使用:
· 傳送付款
· 結算付款
· 發票/原像建立
在一個區域中,支付通道網路節點必須執行非標準動作,即檢索儲存在外部服務上的原像。鑑於原像的潛在敏感性和分離問題的願望,即使該功能可能最終在跨網路交換之外具有實用性。
權衡
當然,這種方法也有取捨。最容易想到的兩個問題是減少隱私和限制跨網路訊息傳遞。
閃電網路實驗室演示的交換隻要求發起方使用者A知道使用者B的身份,即轉移方。跨網路原像檢索要求每一方都知道對方的身份(至少在一個支付通道網路上),因為每一方都負責構建一條路線。在我看來,這是一個可以接受的折衷方案,因為在進行交易時,交易對手的身份可能是一個相關細節。
此外,由於這是一種跨網路和跨規範交換,因此將特定於網路的訊息傳遞回來的能力是有限的。這也可能是一個可以接受的折衷方案,因為在網路間傳遞此類訊息的需要也是有限的。
快速、簡單且可互操作的跨鏈交換
跨網路原像檢索允許交換利用支付通道網路帶來的速度,允許交易與當今保管加密貨幣交換所允許的速度相當,同時保持鏈上的原子性,無信任性和最終性交換交易。
這種新機制允許在不同基礎區塊鏈上構建的多個不同型別的網路之間進行交換,這些網路在不同的網路客戶端中實現。它是一種更簡單的方法,能夠更好地利用這些網路的內建功能,從而使其成為更強大的交換機制。
實踐中的跨網路原像檢索
我們在構建Sparkswap的同時開發了跨網路原像檢索,這是一種交換加密貨幣的新系統,無需將資產存入第三方(如交易所)。這些交換正在為在測試網上執行的軟體提供動力,執行比特幣/萊特幣交易,這些交易可以在幾秒鐘內完成。