比特幣的交易網絡最為人詬病的一點就是交易性能:全網每秒7筆的交易速度(遠遠低於傳統線上交易的速度)並且,還需要等待 6 個塊的可信確認,所以0導致約 1 個小時的最終確認時間。
比特幣的區塊鏈機制自身提供了很好的可信保障,但是很慢;另一方面考慮,對於大量的小額交易來說,是否真實需要這麼高的可信性?
於是,比特幣社區提出一種設想:可不可以通過擴容(擴展比特幣區塊容量)這種方式,來提升比特幣處理交易的速度?
答案是擴容。而擴容又分成鏈上擴容和鏈下擴容。但是鏈上擴容意味著要直接在比特幣區塊鏈系統上動手術,去修改比特幣區塊鏈系統的基礎規則、區塊大小、共識機制等等,這樣做很麻煩,還被扣上了「違背比特幣初衷」的罪名;
而鏈下擴容則不需要修改比特幣區塊鏈系統的代碼就能夠提升交易速度。採用鏈下擴容,我們的交易都在鏈下處理,根本不需要對比特幣區塊鏈系統做什麼大的改動,因為我們壓根兒就不走它的路。
很多人覺得鏈下擴容的方式不錯,能夠原汁原味地保留比特幣系統的「原始基因」。那麼我們今天所說的「閃電網絡」,便屬於鏈下擴容。
先來舉一個通俗的例子,方便大家對「閃電網絡」的基本原理有一個認知:假設我們現在正在打撲克,輸贏的支付方式是比特幣。正常情況是每打完一局,輸的一方要給贏的一方轉帳一定的比特幣。但這樣是非常不划算的一件事情,因為每次都要支付礦工高昂的手續費,再加上比特幣網絡處理交易的速度太慢,每打完一局都要等好久,這種體驗實在是太差了。
現在我們換一種方式,我們準備一個帳本,帳本上記錄著我們的輸贏情況,我們規定每打完幾局之後再統一算帳,看看誰贏了多少,誰輸了多少,誰應該向誰支付多少比特幣。這樣一來,我們只需要支付一次礦工手續費就可以了,也不用每一局都要停下來等待系統處理交易,這樣的體驗就好多了。
這種統一結算的方式,就跟閃電網絡的思想有些類似了。閃電網絡的原理,我們可以理解為:不是每做一次交易就要走一次區塊鏈網絡,而是經過了好幾次交易之後,才走一次區塊鏈網絡。這樣一來,就能夠極大提升交易速度,實現閃電般的處理速度。
不過,這裡問題又來了,我們和熟人打撲克,因為我們是互相信任的,所以指定一個人記帳就好了,誰都不會賴帳。但是在區塊鏈的世界裡,我們如何保障兩個陌生人之間能夠達成信任完成交易呢?
閃電網絡通過引入「支付通道」的手段來解決以上問題。支付通道相當於在比特幣系統的主網之外又構建了一個點對點的網絡,只不過在這個點對點的網絡上交易幾乎不需要手續費,因為不需要佔用區塊內存,也不需要共識機制來記帳。
支付通道本質上是一個智能合約,通過代碼來進行管理。閃電網絡之所以能夠實現「鏈下擴容」,支付通道這個智能合約發揮了主要作用。
通過「支付通道」,我們可以進行多次的交易,只有我們多次交易之後想要關閉通道的時候,才會跟區塊鏈系統發生接觸,我們在鏈外交易的最終結果才會被記錄在區塊鏈上。
如果兩個人之間頻繁地進行交易,那麼它們可以保持支付通道一直是打開的。支付通道打開的狀態下,兩個人之間的交易只是承諾所有權的轉讓而已,並不涉及到鏈上記錄,所以速度非常快。
當兩個人決定暫時停止交易進行結算時,他們便將支付通道關閉,把裡面的錢拿走,這時交易信息才會被記錄在區塊鏈上。
這就是「閃電網絡」的支付通道運作方式,通過這樣的支付通道,人們可以在鏈下進行大量的交易,而不佔用區塊容量,這樣一來交易速度就大大提升了。