• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 區塊鏈生態 查看內容
    • 15840
    • 0
    • 分享到

    關于區塊鏈底層架構的討論 DApp的現狀與困境解讀

    2019-8-23 11:38

    來源: DAPP實驗室

    DAPP分片的難題 —— 跨片交易完整性



    八、分片的難題 —— 跨片交易完整性


    在分片的方案中,每個分片上可以運行一到多個 DApp,不論 DApp 在不在同一分片,都要能互操作。首先要明確什么是跨片互操作?因為分片也都是區塊鏈,所以跨片等同于跨鏈。

    大家知道區塊鏈可以看成是分布式共識維護的狀態機,狀態機通過交易執行完成狀態轉移。跨鏈的互操作應該引發雙方的狀態轉移,也就是兩個互操作的鏈都執行了交易,而且執行交易之后的狀態具有一致性。

    或者說一個跨鏈交易要引起兩條鏈乃至多條鏈的狀態改變,而且這些改變要么都成功,要么都不成功,不存在中間狀態。這跟企業計算里分布式交易的概念上非常類似。

    只不過傳統分布式交易的參與者通常是多個數據庫,而跨鏈交易的參與者是多條區塊鏈。非技術背景的同學可能不熟悉狀態機和分布式交易的概念。因為跨鏈交易的概念對理解本次分享的結論很重要,我再用非技術語言解釋一下。

    假設你要從工行賬戶轉 1 萬塊錢到建行賬戶,這筆轉賬交易其實就是從工行賬戶上減掉 1 萬,在建行賬戶增加一萬。工行和建行各自都有數據庫存儲賬戶余額,那么就要有一個機制,保證兩個數據庫的操作,一加一減,在任何情況下要么都成功,要么都失敗。

    如果沒有這樣的保證,工行賬戶減掉了,建行賬戶沒加上,你少了 1 萬塊錢,你肯定不干。如果工行賬戶沒減掉,建行賬戶加上了,你多了 1 萬塊,銀行肯定不干。

    這就叫分布式交易的完整性或者原子性。簡單吧?其實做起挺難的,因為不論是工行建行哪家的服務器停電、斷網、軟件崩潰等等,各種極端條件,都要保證交易完整。在區塊鏈上,轉賬變成了轉通證。

    某通證發行在 A 鏈上,通過跨鏈轉 10 個通證到 B 鏈,跨鏈交易完成后,A 鏈上的 10 個通證被凍結了,B 鏈上多了 10 個通證。這兩個狀態改變在任何條件下,要么都成功,要么都失敗。

    由于區塊鏈可能分叉,跨片交易要比傳統的分布式交易更復雜。我們看圖,如果跨片交易在分片 1 上的部分是在 A 塊里被打包,在分片 2 上被 X’ 塊打包。兩個分片都可能出現分叉,A 塊和 X’ 塊也就可能成為被廢棄的孤塊。也就是跨片交易可能部分成功部分失敗,完整性被破壞

    怎么解決這個問題呢?我們來分析一下,造成跨鏈交易完整性被破壞的根本原因是,交易的多個部分被打包進區塊,但是鏈可以重組,塊可以變成孤塊。

    說白了就是交易進了區塊,但是靠不住,有可能反悔,正式說法是沒有明確最終性。最終性 finality 就是區塊必然被包含進區塊鏈。

    比特幣區塊鏈上,某個區塊后面連的區塊越多,它被逆轉或者說放棄掉的可能性就越低,但是永遠不能 100% 確定,所以稱為概率最終性或者漸進一致性。解決這個問題的辦法就是,要有機制讓區塊具有明確的最終性,不能含糊。

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    標簽: DApp 分片 區塊鏈
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频