這次我們就要再次用到上文提到的哈希密鑰鎖了。
現在我們考慮過了兩天,Bob要向Alice轉1個BTC,即雙方發生第二筆交易B。類似他們仿照上述第一筆交易操作進行第二次記賬,此時應當是Alice 5個,Bob 5個。
一個最大的區別是建立第二筆交易B之前,兩人會相互交換第一筆交易中的密文,即對方第一把鎖的鑰匙。這么做的目的在于作廢第一筆交易記錄A,使得兩人都只能承認最新的交易記錄B有效。
設想Bob在第一筆記錄中擁有6個比特幣,而第二筆記錄變成了5個,那么如果他想作弊去簽名并廣播第一條記錄呢?
結果是他將失去通道內所有的比特幣!
因為Bob簽名并廣播了下圖交易之后,Alice立馬會獲得4個BTC,同時Bob則必須等待1000個區塊之后才能解鎖6個BTC。然而,由于此時Alice已經獲得了密文即鑰匙1,所以Alice可以趕在Bob之前解鎖這6個BTC。綜合來看,只要Bob想要廣播舊交易記錄,他就會一無所有。
有了能作廢舊賬的保證,雙方就可以在通道內反復任意多次交易,每次交易之后的狀態都是資金池資金的劃分比例的最新確認狀態。
最后,關閉通道。如本文第二部分所講,有兩種方式關閉通道,一是單方面強制關閉,即某一方將自己控制的最新交易簽名后廣播出去即可。二是商議后關閉,此時雙方再從最開始的多簽地址構建一筆交易。
至此,我們明白了如何在無信任的條件下如何建立雙向支付通道。
2.閃電網絡:如何使路由節點保持誠實?
同樣的,在建立閃電網絡的時候,我們同樣會遇到信任問題:Alice想轉給Carol 1個BTC,需要經過Bob,但Bob會擔心自己給Carol轉1BTC后,Alice耍賴;同樣Alice會擔心如果先給Bob轉了1BTC,Bob也耍賴不轉給Alice。在傳統的金融系統中,是由大型知名金融中介機構的信用提供保證的。但閃電網絡中,并沒有這樣一個獨立于交易者的第三方去提供信用擔保。
閃電網絡采用了一種HTLC(哈希時間鎖定合約)完美解決了這個問題。
過程是這樣的,第一,Carol會選擇一個隨機密文并運算得到其哈希值,再將此哈希值交給Alice。第二,Alice拿到哈希值后,會構建一筆轉賬給Bob的交易。這筆交易需要Bob拿到Carol的密文才能解鎖,如果Bob在限定的時間內沒有解鎖成功,這筆錢則退回給Alice。第三,Bob從Alice處拿到哈希值,他也構建一筆轉賬給Carol的交易,Carol必須拿密文來解鎖。第四,當Carol提供密文從Bob處獲得1個BTC,Bob立馬會拿密文從Alice處獲得1個BTC,這就完成了從Alice給Carol轉賬的任務。
上述過程可以看作一個智能合約。故事類似于這樣:A想經過B轉賬給C,那么C先給A一把鎖,C有鑰匙A有錢。A跟B說,你從C那里拿到了鑰匙,我的錢就是你的了。B就拿著鎖去找C,用錢跟C換鑰匙,然后拿鑰匙去換A的錢。如此一來,就實現了錢和鎖從A到B再到C,鑰匙從C到B再到A的一個流轉。
當然,在實際操作過程中,Alice給Bob轉賬金額需要大于1個BTC,支付必要的路由費以激勵Bob充當路由節點。
其次,要注意兩筆交易之間的哈希時間長度設置,第二步時間必須長于第三步時間。如果Bob在Alice關閉交易之后拿到Carol的鑰匙,他將無法找Alice拿回1個BTC。 到這里,我們已經明白了閃電網絡中通過路由節點達成交易的技巧,最后一步只需把之前兩步整合進交易即可,就不再贅述了。
閃電網絡原理科普就到這里了,下一篇筆者會講一下閃電網絡對改善比特幣擴展性的優勢與不足,包含路由節點中心化,路由費等問題。
< END >此文由 中國比特幣官網 編輯,未經允許不得轉載?。?a href="http://www.huohuxiazai.com/">首頁 > 比特幣行情 » 閃電網絡很難懂?你需要看看這篇文章 | 硬核科普