在本文中,我們介紹了一種叫作虛擬通道的新型狀態通道結構。虛擬通道不僅使得付費文件流等新型應用場景成為可能,還可以簡化去中心化的Graph查詢支付、Filecoin內容檢索、帶有經濟激勵機制的狀態提供者網絡等有趣的應用場景。
動機
讓我們來設計一個免信任的付費文件流支付系統。這個系統中有seeder和leecher。leecher從多個seeder那里付費下載一份文件的不同部分。使用以太坊主網交易來支付費用是不可能的,因為以太坊主網的吞吐量低于每秒50筆交易,而且最低轉賬成本也在2美元以上。OptimisticRollup和ZKRollup可以提高吞吐量并降低交易成本。StarkEx的ZKRollup可以將吞吐量提高至每秒3000筆交易,同時將每筆交易的成本降至0.03美元。假設leecher愿意支付1美元下載1GB大小的文件,且整個文件以256KB為單位切分成了多個部分,leecher需要支付大約5000筆費用。當網速為20MB/s時,用戶每秒支付80次費用,且每筆費用為0.0002美元。Rollup的吞吐量達不到許多leacher的要求,而且交易成本還是太高了。
為了達到交易吞吐量和成本要求,基礎狀態通道是個不錯的選擇。狀態通道創建完成后,leecher就可以免費進行多筆小額付款,且吞吐量只受leecher和seeder之間通信信道的帶寬以及二者所使用硬件的影響。基礎狀態通道帶來的挑戰是,leecher需要提交交易到主網上,與每位擁有他所需文件部分的seeder都建立狀態通道。由于leecher與多位seeder都需要短暫交互,創建多條狀態通道的成本是極其昂貴的。
虛擬通道可以完美解決我們的設計問題。虛擬通道尤其適用于軸輻式拓撲結構。多位參與者先與一個免信任的中間方建立連接,然后任意兩位參與者再通過質押的方式創建私密通道。中間方并不知道私密通道內運行的是什么應用。另外,任何參與者都可以發起鏈上挑戰找回自己的資金,即使通道內的其他參與者和中間方處于離線狀態或作惡。
迪士尼CEO:過去一年一直在探索如何利用Web3技術:9月14日消息,在迪士尼兩年一度的 D23 Expo 大會上,該公司首席執行官鮑勃·查佩克稱迪士尼正在繼續探索和制定虛擬世界計劃,而且在過去一年時間里一直在悄悄探索如何利用 Web3 技術。鮑勃·查佩克表示,迪士尼希望使用來自物理世界和數字世界的數據來推動其元宇宙戰略,來自主題公園訪問數據和消費者流媒體習慣數據將使迪士尼元宇宙戰略中最關注的兩大領域。(nftevening)[2022/9/14 13:30:06]
通過虛擬通道連接各方
總的來說,只要Alice和Bob之間有經過中間方的路徑,無論網絡拓撲結構是什么樣的,虛擬通道都可以讓Alice開設與Bob之間的私密通道。
背景知識
不同的區塊鏈生態系統都將狀態通道視為一種可以讓少數參與者:
建立鏈上聯系并存入資金;
私下交換信息,有條件地在參與者之間轉移資金;
關閉鏈上通道,完成各方之間資金結算的方法。
我們之前已經在statechannels.org網站上發文介紹了如何構建狀態通道,以及如何通過一個叫作賬本通道的架構讓一條狀態通道為另一條狀態通道提供資金。這些架構要求通道參與者必須在鏈上建立直接聯系。換言之,如果Alice和Bob之前從未交互過,現在卻想開通狀態通道,他們必須簽署協議,并將資金存入合約內。
但虛擬狀態通道可以實現以下應用場景:
Alice與免信任的中間方創建狀態通道。假設這個中間方叫作Irene。
Bob同上。
在Irene以及創建好的通道的幫助下,Alice和Bob可以創建一條新的私密通道并存入資金。創建這個私密通道不需要通過鏈上交互。我們將Alice和Bob之間的通道叫作虛擬通道。
就付費文件流這個應用場景而言,Alice先要通過主網交易與中間方Irene創建一條通道。接著,她可以通過虛擬方式與任意數量的對等節點相連,只要后者與Irene之間也存在鏈上通道。一旦連接成功,Alice就可以持續支付數據下載費。
直播|Higer :DeFi與ETH2.0如何引領下一個區塊鏈時代?:金色財經 · 直播主辦的金點Trend《2020 DeFi Dai飛嗎?》馬上開始!DeFi生態里,我們還應該狙擊哪些項目?成長空間是多少?應該關注哪些風險?16:00準時開播!本場嘉賓來自區塊鏈研習社的創始人Higer分享“DeFi與ETH2.0如何引領下一個區塊鏈時代”,請掃碼移步收聽。[2020/7/31]
我們的協議Nitro可以實現以下應用場景:
幫助Alice和Bob創建虛擬通道的中間方Irene實際上不在這個虛擬通道內。Irene只是幫忙創建通道,并在通道關閉時結算資金而已。因此,Alice和Bob之間可以實現完全私密的交流,并將Irene排除在這個應用的關鍵路徑之外。更重要的是,Alice和Bob可以在私密通道內運行多個不同的應用,無需Irene針對這些應用實現任何新的邏輯。因此,虛擬通道是通用可編程的多跳狀態通道,因為每條狀態通道都可以根據自己的一套“規則”來創建。Alice可以向Bob付費購買某個文件內容。Bob也可以向Alice付費進行Graph查詢。
所有Nitro通道都是可組合的。因此,獲得資金的通道可以通過遞歸的方式為其它通道提供資金,無論前者是通過何種方式獲得資金的。一旦某條通道獲得資金,它就可以運行任何應用或為其它通道提供資金。
Nitro的替代方案
其它協議可以讓兩位參與者無需在鏈上存入額外資金,即可通過中間方創建通道。一個成熟的模式是,使用經過哈希的時間鎖通過中間方將Alice的付款路由給Bob。這個模式有一個很明顯的缺點:所有付款必須通過中間方路由。
一些比較新穎的架構可以讓Alice和Bob通過中間方創建通道后實現點對點付款。然而,這些架構依然需要中間方理解Alice和Bob所運行的應用,因為通道余額最終要通過中間方取回。有了Nitro虛擬通道,中間方就可以被隔離在Alice和Bob之間的通道外。
通道內部的資金轉移
本文將深入介紹Nitro通道是如何獲得資金的,以及免信任的安全虛擬通道是如何實現的!
直播 |“后浪”仙女力場-大丹如何乘風破浪:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第7期20:00 力場|大丹將在直播間聊聊“幣圈‘后浪’仙女如何乘風破浪”,感興趣的朋友掃碼移步收聽![2020/7/6]
Alice和Bob之間的Nitro通道的資金來自:
Alice和Bob聯合簽署鏈下協議,使用特定的初始結果創建通道。
Alice和Bob按照初始結果指定的順序存入資金,增加鏈上裁決者合約中記錄的通道holdings。
這里的“結果”是一個指示裁決者在通道最終敲定時如何分配資金的結構在Nitro中,“結果”列出了{目標、數量}對的優先級:
{A:7,B:3}命令通道C的裁決者先將7枚代幣支付給A,再將3枚代幣支付給B,并將C的結果歸零。
這么說有一點不準確:我們其實是按照字典中鍵的順序在為目標分配優先級。因此,{B:3,A:7}會先付款給Bob,然后才輪到Alice。你可以將它看作是Python3.7+式的有序字典。
上圖顯示了Alice和Bob是如何根據{A:7,B:3}這一結果從通道C中取走代幣的。根據鏈上裁決者的記錄,通道中共有10枚代幣。Alice或Bob將通道結果記錄到鏈上。這個結果記錄下來后,Alice和Bob就可以取走代幣。于是,Alice的外部賬戶中增加了7枚代幣,Bob的外部賬戶增加了3枚代幣。
雖然上述結果暗示目標是用戶賬戶,但是在Nitro中,通道本身也可以是目標。這樣一來,通道L也可以充當“私密賬本”,因為Nitro可以讓一次性一次性將資金存入賬本通道,然后為多條子通道提供資金。Nitro避免了回到Layer1的需求,以及由此產生的延遲和成本!例如:
假設C2是一條Nitro通道,{A:4,B:1,C2:5}命令裁決者向Alice支付4枚代幣,再向Bob支付1枚代幣,然后將C2的代幣持有量增加5。
BM:對代理如何運作和“dApp開發者”如何計費的理解可能需要調整:北京時間今日凌晨,BM在開發者群發表對代理如何運作和“dApp開發者”如何計費的理解:
??1)所有CPU/帶寬都是“執行操作的用戶”;
??2)所有存儲都按照dApp的選擇向用戶或dApp付費;
??3)dApp開發人員希望授權用戶將帶寬委托給用戶;
??4)授權帶寬理論上可以用于任何dApp。
現在想象一下,你是一個社交媒體公司,希望為用戶提供免費賬戶。用戶在您的網站上注冊,您為他們創建一個區塊鏈賬戶,然后將一些帶寬委托給他們。您的應用可以選擇為每個授權用戶支付有限的存儲空間,這使他們能夠在他們需要攜帶自己的存儲空間之前,擁有N份杰出的帖子和V張投票。如果您的應用不想為用戶支付存儲費用,則該應用可能完全是BYOS(注:Bring your own storage,使用你自己的存儲)和BYOB(注:Bring your own Bandwith,使用你自己的帶寬)應用。如果用戶不繼續他們的訂閱或停止使用您的服務,那么您可以將帶寬重新分配給其他用戶。[2018/4/30]
C1是賬本通道,C2是從賬本通道獲取資金的通道
以上是一個簡短的介紹。如果你想要深入了解Nitro,請查看我們的相關博客文章!
如何利用保證來實現免信任架構
接下來,我們將介紹當兩位參與者沒有鏈上關系時,如何通過一個安全的架構來創建三方通道。這個架構不僅能讓賬本通道為其它通道提供資金,還能實現虛擬通道。兩位參與者分別是Alice和Bob,中間方是Irene。
我們首次嘗試使用一個通道來連接A、B和I。請注意,這不是免信任型架構。
初始設置:三條獨立通道。
如何讓比特幣的尸體飄過:財新專欄作家王立仁今日發文,盡快讓比特幣的尸體飄過來的方法核心點就在于影響其交易過程和記賬過程,從而破壞對比特幣系統的信任。他還論述了7大攻擊比特幣的方法:花錢硬碰硬的算力攻擊(Brute Attack)、巧取通訊環節(SmartAttack)、攻擊記賬系統、攻擊代碼、攻擊法幣與數字貨幣的通道、路由分割(RoutingSplitting)攻擊和直接硬分叉。[2017/12/4]
首先要有一對賬本通道L和L'。通常情況下,L和L'是早就創建好的。這是因為Irene存在的目的就是在人們之間建立連接——Alice可以使用L來同時連接Bob、Cheryl、David和Eve。如果L和L'不存在,L可以使用結果{A:4,I:6}創建,L'可以使用結果{B:6,I:4}創建。L和L'各自在鏈上存儲10枚代幣。
另外還有一條獨立通道J是使用結果{A:4,B:6,I:10}創建的。請注意,在向通道存入資金之前,參與者必須先就這一結果達成共識。一旦J有了資金之后,這條通道就可以用來為Alice和Bob之間創建的任意一條私密應用通道提供資金。
步驟1和2:賬本通道轉變為向J提供資金。
Alice和Irene將L的結果轉變為{J:10}。Bob和Irene將L'的結果轉換成{J:10}。
這個設計夠好了嗎?
Alice必須考慮以下幾點:
Bob和Irene是不是可信的?
Alice無法控制L'上發生的事。
我們來思考一下步驟2之后如何取走J的資金。
L和L'的結果被記錄到鏈上。
L和L'的資金都被轉移到J。代幣經由轉賬操作從一條通道轉移到另一條通道。J現在有了20枚代幣,可謂資金充足。
Alice可以從J中取走4枚代幣,Bob可以從J中取走6枚代幣。Irene可以從J中取走10枚代幣。
漂亮!現在每個人都取走了自己應得的代幣。但是,我們來設想一個場景:Alice和Bob串謀起來欺騙?Irene。假設步驟1發生后,Bob拒絕參與步驟2。然后就會發生以下情況:
L的結果被記錄在鏈上。現在,J有了10個代幣,記錄在鏈上的結果是{A:4,B:6,I:10}。
Alice和Bob分別取走4枚和6枚代幣。
請注意,Bob從J那里獲得了6枚代幣,盡管他自己根本沒有向J轉過代幣。結果變成了:Alice獲得了4枚代幣,Bob獲得了6枚代幣,Irene什么也沒有。Irene被坑慘了!
你可能會想,如果調換一下結果{A:4,B:6,I:10}中目標的順序,就可以創建出一個安全的架構。然而,無論怎么調換順序,總會有人蒙受損失!
保證是如何發揮作用的
在上述場景中,我們使用了轉賬操作在通道之間轉移資金。通過轉賬操作,資金可以從一個通道轉移到目標通道。在本小節中,我們將引入索取操作來將資金從目標通道轉移至特定的目標地址1。為了實現索取操作,我們需要保證。
我們先來介紹一個新的數據結構。保證是指定以下的結果:
目標,即,一條通道;
數量;
優先級,即,目標的優先級列表。優先級的作用是指示裁決者如何改變目標通道的結果項的優先級。
我們第二次嘗試使用一個通道來連接A、B和I。這次已經是免信任架構了
我們來看一下J是如何獲得資金的:
初始設置:創建三個獨立的通道。
通道J是使用結果{A:4,B:6,I:10}創建的。
L是使用結果{A:4,I:6}創建的。
L'是使用結果{B:6,I:4}創建的。
步驟1和2:賬本通道轉變為向J提供資金:
L的結果更新為{J:{amount:10,priorities:}。請注意,我們使用了一種新的符號來表明L的結果只有一項,即,包含目標J、數量和地址優先級列表的保證。
L'的結果是{J:{amount:10,priorities:}。
L和L'的結果各自包含一個保證。由于轉賬操作不支持這些保證,我們代之以索取操作。索取操作接受保證以及保證的目標通道作為輸入。
我們來看一下索取操作是如何運作的。假設
J的結果{A:4,B:6,I:10}被記錄到了鏈上。
L的結果{J:{amount:10,priorities:}}被記錄到了鏈上。
如果有人請求執行L的結果中的保證,則會觸發三個效果:
將4枚代幣發送給A,6枚代幣發送給I。
因為,A和I的余額在J的結果中被調整為{B:6,I:4}。
L的結果被調整為{}——保證被刪除。
在這個操作中,優先級的目的是告訴裁決者跳過帶有B的結果項,這樣Irene就可以拿回她在創建L時出的那部分資金。因此,裁決者會先看到保證中優先級最高的目標A,并將4枚代幣轉給A,J的結果會相應更新。然后,裁決者才會看到目標I。在J的結果中,Irene應該獲得10枚代幣,但這時只剩下6枚代幣。因此,這6枚代幣被發送給了Irene,J的結果再次更新。請注意,優先級一定要是而非。如果優先級是,Irene就會通過索取操作獲得10枚代幣,Alice就失去了原本屬于她的4枚代幣!
有了索取操作,Alice和Bob再也不能串謀起來騙取Irene的資金了。
?最理想的情況
你可能已經注意到了,為了讓Alice他們取回資金,總共需要3個鏈上操作:將聯合通道和轉賬結果記錄到鏈上,并調用索取操作。請注意,這是最糟糕的情況。假設Bob將4枚代幣轉給Alice后,Alice和Bob想要關閉J。如果Bob和Irene配合的話,則:
Alice、Bob和Irene同意以結果{A:8,B:2,I:10}敲定J。
Alice和Irene可以更新L,安全地刪除為J提供資金的保證。L的結果變成了{A:8,I:5}。
現在,Alice可以使用L里的代幣為其它通道提供資金了。Alice也可以選擇取走資金。
總而言之,在協作式案例中,Alice可以使用L內的資金為多條不同的應用通道提供資金,也可以從這些取走資金,無需進行任何鏈上交易。
虛擬通道
在上一節中,我們已經介紹了如何在兩個參與方不存在鏈上關系的情況下創建三方通道。細心的讀者應該注意到了,更新J必須經過中間方簽字。在本文的開頭,我們打算在A和B之間創建一條私密通道。幸運的是,Nitro的可組合性讓我們可以創建一條由J提供資金的私密應用通道X。具體架構如下圖所示。你已經掌握理解這個架構所需的一切概念了。不過,如果你有任何問題,歡迎向我們提問!
X是一條虛擬通道
未來計劃
本文介紹的虛擬通道架構是Nitro協議論文中介紹的架構的進化版。最值得一提的是,這個架構不需要創建專門的保證者通道。
Nitro虛擬通道即將引入另一個更新,免去對聯合通道的需求。有了這個更新,賬本通道L和L'就可以為應用通道X提供資金。
本文由MikeKerzhner和AndrewStewart基于TomClose所著論文《Nitro協議》撰寫,感謝?RobertDrost、JosephChow、GeorgeKnee和ColinKennedy的反饋。
注
我們還可以將索取操作理解成:
將資金從L轉入J,改變J的結果。
將資金從J轉入目標地址。
如果賬本通道的結果是{J:{amount:10,priorities:}且J的結果是{A:4,B:6,I:10},索取可以描述成:
將10枚代幣從L轉入J。
J的結果變成{A:4,I:6,B:6,I:4}
然后在J上調用面向A和I的轉賬。
Tags:ICEALICEALILICPrice Gapalice幣會漲到多少TaralityMy Neighbor Alice
習近平總書記在中央局第十八次集體學習時指出,“要把區塊鏈作為核心技術自主創新的重要突破口”。2020年4月21日,區塊鏈被國家發改委正式納入“新基建”范圍.
1900/1/1 0:00:00文章系金色財經專欄作者牛七的區塊鏈分析記供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.
1900/1/1 0:00:00尊敬的用戶: 大家好!感謝大家一直以來對NAChain的支持與信任,關于NAChain6月的詳細進展匯報如下,請大家審閱.
1900/1/1 0:00:00DeFi強勢反彈DeFi板塊全線反彈 BTC在3萬上方震蕩已有相當一段時間了,近期市場的低落情緒肉眼可見.
1900/1/1 0:00:00加密貨幣出現了很長一段時間以來的最大跌幅。整個加密貨幣市場下跌了約44%。比特幣價格低于32000美元,是幾個月來的最低價格。結果,整個加密市場受到了限制.
1900/1/1 0:00:00今年五六月份是礦工生存最難的兩個月,由于政策的原因,很多人被迫離開礦圈,隨之而來的是市場上出現了大量二手礦機和礦卡.
1900/1/1 0:00:00