有了這兩個工具,讓我們看看那群程序員天才們是如何構想出一個程序,使得互不相識的雙方能夠誠實記賬的。
在原理的白話版我們已經講過了關于通道的三個步驟:開啟通道,通道內交易,關閉通道。
開啟通道較為簡單,Alice和Bob分別向多簽地址1轉入5個BTC。這是一個2/2地址,也就是必須兩人都簽名,此地址的比特幣才可以轉出去。
接下來是通道內交易,我們需要講解Alice和Bob之間的兩次交易才能完全明白雙向支付通道的巧妙之處。第一次Alice需要向Bob支付1個BTC,第二次Bob需要向Alice支付1個比特幣。
第一次交易的流程是,Bob首先在自己電腦的閃電網絡軟件上構建交易,如下左圖所示。
Bob在構建交易時需要通過閃電網絡軟件的通信模塊和Alice建立聯系,獲得Alice創建的密文的哈希值,然后把這個哈希值作為哈希鎖放在自己構建的交易里。這筆交易Bob把10個比特幣分別轉給Bob控制的普通地址6個和另一個“多簽地址2”4個BTC。
(通俗來講,就是A和B的財產放在一起,但是B主動從A那里要了一把鎖把A的財產鎖住了,沒有A的鑰匙B也無法打開。)
多簽地址2是一個1/2地址,也就是兩個條件有一個滿足即可解鎖。具體來說,需要Bob用自己的私鑰和Alice的密文(此時Bob只有密文的哈希值,并不知道密文,所以Bob是不可能獲得這6個比特幣的)同時來解鎖;或者Alice等待1000個區塊后用私鑰來解鎖。如下圖,這兩個條件是雙向支付通道的精髓所在,請先記住它,稍后分析中會講設計的原因。
Bob構建完交易后會簽名,然后把這筆未完成的交易以點對點方式發送給Alice,而不是廣播到全網。顯然,上述交易是對Bob有利的,一旦Alice簽名并廣播,Bob可以立即獲得6個比特幣,而Alice需要等到1000個區塊之后才能擁有4個比特幣。
這也就是上文提到的單方面“起訴離婚”會受到延時懲罰的技術實現細節。然而,這筆對Bob有利的交易的主動控制權卻掌握在Alice手里,因為Alice不簽名并廣播的話,這筆交易暫時不會生效的。
在Bob創建這筆對自己有利的交易同時,Alice也創建了類似的一筆對自己有利的交易,兩者是一種鏡像。
這個過程相當于是Alice幫Bob在他的小本本上記了一筆賬,這10個比特幣Bob占6個,Alice占4個,同理Bob也幫Alice記賬了。具體來說,就是Alice電腦里保存著Bob創建并簽名的未完成交易,Bob保存著Alice創建并簽名的未完成交易。兩者合在一起,就完成了他們之間第一筆交易的記賬過程,完整過程如下圖。
這個過程并不需要互相信任,只需雙方同時在線,建立聯系并交換哈希值,再在各自的電腦里創建交易最后發送給對方。整個過程不需要經主鏈由礦工打包確認,所以非常快速并且沒有手續費。也可以看到,任何一方都可以隨時強制關閉通道,將自己占主動權的交易簽名并廣播全網,代價是1000區塊延時。
但是這里仍然有一個問題,就是外界無法知道通道內的交易次序,因此無法鑒別通道關閉后廣播出去的交易,是否為最終交易。例如,如果雙方在這個通道里不斷發生交易,最后導致Alice手中有9個,Bob手里有1個,但假設最后Bob強制關閉交易通道,并廣播出去Alice有5個,Bob有5個,Bob便能憑空賺得4個。(雖然這4個要等到1000個區塊后才能獲得,但這是值得的。)該怎么解決這個問題呢?
此文由 中國比特幣官網 編輯,未經允許不得轉載?。?a href="http://www.huohuxiazai.com/">首頁 > 比特幣行情 » 閃電網絡很難懂?你需要看看這篇文章 | 硬核科普