為什么跨鏈這么麻煩
跨鏈最基礎的目標是,某一條鏈上發生的交易在另一條鏈上被認可,也就是鏈二同意鏈一上發的交易確實發生,然后以此為基礎做一些操作,實際上就是鏈二能接受鏈一上產生的交易數據。
就單純的用數據庫來說,只需要鏈二提供接口給鏈一的客戶端查詢就可以了,就像支付寶能查到你銀行卡里面還有多少錢一樣。(當然這個實現得應該也挺復雜的,需要多層的身份認證--支付寶需要認證用戶身份,銀行需要認證支付寶身份,支付寶還不能擁有用戶的銀行身份),不過總歸是有一個合理的實現。但是,對于區塊鏈就不一樣了。
為什么鏈間的信息交互這么難?
在我看來,原因大概只有一個,區塊鏈是一個去中心化,去信任的機構。
區塊鏈內部本身就是節點間相互不可信的(當一個集體中相互之間都不信任,這時候少數服從多數就是一個很明智的共識,人越多,互不信任的越強,系統就越安全,當然區塊鏈也設計了很多方案防止有個別人注冊大量賬戶,沖大頭),所以區塊鏈的信任取決于而大多數節點真實的判斷。
如果沒有做出真實的判斷就有可能受到共識算法中設計的懲罰,所以更多的節點愿意向組織提供真實的數據(這個涉及到區塊鏈的獎勵機制),除非有人提供超過獎勵機制的錢給大多數節點,形成一個獨權結構產生錯誤的結果。
所以區塊鏈本生是不相信任何單點信息的,也就是說我們大可以在鏈上設計節點做 spv 驗證,但是,來自少數節點的 spv 認證不會被大多數仍可,當然也可以設計成其他節點默認認可,但這將導致少數幾個節點成為攻擊的對象。
總結一下也就是:最終決定不能是少數節點認可的。
于是乎,最簡單的解決方案就是讓鏈上的大多數節點都能作為 spv 驗證節點,來解決這個問題,但這樣一方面會導致鏈上節點過于龐大,并且對于收費鏈來說也將消耗大量代幣,
第一個解決方案 btc relay
想法很簡單,只要一條鏈上擁有另外一條鏈上的全部區塊頭,那么在鏈上認證時只需要驗證一下默克爾樹就可以了,這樣每個節點都可以非常簡單的認證區塊信息。
但這有存在一個問題,誰來提供這個區塊頭,是一個人提供嗎,如果是這不又是單點信任問題了嗎?
實際上這個項目最終真的是只有一個人在提供區塊頭(剛開始的時候人比較多,能在一定程度上做判斷,如果有而已提供者也能發現出來),但是是每次向etc寫入區塊頭都要消耗gas(錢),很多relayer放棄。所以在最近兩年,最后一個relayer下線,btc relay dead。
btc relay的嘗試向我們展示了跨鏈到底有多難,但他也慢慢暗示了區塊鏈跨鏈比較大的可能性。
簡單分析一下btc relay 給我們什么提示了。
-
鏈間不依賴中間方的信息傳遞幾乎是不可能的。
-
跨連通信并不需要某條鏈對另外一條鏈的交易達成共識,只需要一個能證明交易發生的數據即可。但這個數據又有可能存在單點信任問題。
-
要解決上面提到的單點信任問題,那么向鏈提供數據的結構就得是個去中心化的機構。
套娃跨鏈:因為去中心化的去信任關系,那么,這個去中心化的機構與鏈的數據交互就又需要一個去中心化的機構做橋。
網關+中繼鏈
網關+中繼的方案是目前比較普遍的方案,向bitxhub就是典型網關+中繼,這里目前不做展開,但感覺還是有點問題,如何保證網關不會出現問題呢,如果黑客入侵了某個網關,制作虛假的信息,中繼鏈好像也是判斷不出來。
預言機跨鏈
后面兩部分等我了解更多再寫。
但目前可以大概總結一下我的觀點
如果能加入網關,那么將會省很多事,網關幾乎可以完成所有的鏈上操作。但網關將會帶來一個極大的不確定性,并且網關存在中心化的風險。
我認為網關需要保留,即使他的短板很明顯,目前我個人感覺需要處理的是削弱網關的權力,減少網關擁有的權限,比如說對交易進行hash鎖定,可以防止網關惡意篡改交易信息。另外還需要增加機制校驗網關的忠誠,我個人感覺預言機在這方面可能有用武之地。

浙公網安備 33010602011771號