1. 程式人生 > 實用技巧 >微支付基礎:零確認支付及簡易支付模型

微支付基礎:零確認支付及簡易支付模型

稍微瞭解過比特幣的使用者應該都知道,比特幣設計的是每10分鐘產出一個區塊。如果把比特幣系統當作是一個完整的賬本的話,那麼一個區塊就相當於這個賬本的一頁,把這個賬本的每一頁都連結起來形成一個鏈條,就稱之為“區塊鏈”。這也就是區塊鏈(BlockChain)這個名詞的來歷。

所以在比特幣之前的相當長一段時間,大眾對於比特幣轉賬速度的錯誤認知都是至少需要10分鐘才能到賬,也就是必須等到一個區塊確認,收款方才能確定支付方已經支付成功。10分鐘的轉賬速度,對於跨國轉賬、跨行交易這類交易需求當然是足夠高效的,但是對於日常消費,卻成為難以逾越的鴻溝,你很難想象,在你付款購買一件商品之後,過了10分鐘店家才確定收到你的付款。

這種10分鐘的等待在某些時候是可以接受的,例如:您可以在付款購買一杯咖啡之後,坐下來品嚐咖啡,等到10分鐘後店家收到區塊確認之後再走人。但是對於微支付來說,10分鐘的等待是致命的,共享wifi使用者從您家門口經過使用了10秒鐘的網路,卻要等待超過10分鐘,這簡直讓人難以忍受。所以基於比特幣的“即時到賬”就成為微支付的一個剛性需求,這裡就需要引入一箇中本聰提出的概念:零確認支付。

比特幣基礎概念

在講解零確認支付及簡易支付模型之前,我們先普及一下比特幣的基礎知識,可以讓完全沒有接觸比特幣的使用者也可以很容易的理解。

UTXO:可以理解為“錢“;類似於現實生活中的”借條“,可以在其上描述:”張三“給”李四“轉賬XXX元。

SPV:可以理解為“錢包“;SPV可以用於構建UTXO進行支付,也可以用於接收UTXO進行收款。SPV僅儲存與個人相關的交易賬本,而不必關心所有人的賬本。SPV具有基礎的接受UTXO、廣播UTXO、構建UTXO的能力。

全節點:可以理解為“總賬本“或常稱為的”礦池“;如果說SPV僅記錄與個人相關的交易行為,那麼全節點就會記錄所有人相關的交易行為。顯然,某筆UTXO是否被”雙花“,全節點一目瞭然。包含所有人交易行為的”總賬本“將成為這個系統中最”權威“的存在。

交易池:可以理解為“賬本的紙質單頁“;加入交易池意味者全節點將這筆轉賬已經記錄在區塊中,但是這個單頁還沒有寫完,一旦寫完,就可以蓋上全節點的印章,表示這一個單頁已經完成,可以進行下一個單頁的書寫。

零確認支付

零確認支付,顧名思義,就是不需要區塊確認就能夠滿足完成支付的所有條件。我們來還原現金模式下生活中一筆交易產生需要哪些條件:

1.您走進商店,挑選商品——建立信任。

2.您拿到商品,到收銀臺付款——詢價及確認交易內容。

3.您掏出100元支付給店家,支付手中商品的5元——構建轉賬行為。

4.店家拿到100元,要確認這100塊不是假鈔或殘次鈔票——支付介質的鑑定。

5.店家將100元收下,給您找零95元——支付過程結束。

眾所周知,不同於傳統支付,比特幣交易一個很重要的過程就是“支付介質的鑑定”,也就是常說的“雙花“,店家需要確定您所構建的這筆UTXO是合法的,並且沒有被”重複花費“。在傳統的比特幣模型中,如果需要等待10分鐘才能確定UTXO是合法的並且沒有被”雙花“將是難以接受的。

基於中本聰願景實現的BitcoinSV採用的方法是,UTXO構建之後傳送到交易池中,並且根據UTXO是否合法、是否有被”雙花“的結果決定是否加入交易池,店家拿到全節點返回的加入交易池結果後來決定是否給予商品,至此,零確認支付行為完成。

經過以上的步驟,很多人都有一個疑問,如何確定零確認支付一定是可靠的?難道不擔心全節點在把UTXO加入交易池之後,再把UTXO拿出來修改或刪除嗎?BitcoinSV給出了很好的解決方案:

  1. 全節點與全節點之間,採用“小世界網路“進行連線,使得任意節點與任意節點之間的平均跳轉次數為1.3次。也就是說,當這筆交易加入某個全節點的交易池之後,幾乎同時加入了所有全節點的交易池。關於”小世界網路“,後面會有更詳盡的闡述。

  2. 所有全節點都需要宣告自己的“MinerID“並且與現實公司或團體進行繫結。當全節點進行”作惡“後,其會被誠實的節點進行孤立,其後期所有產出的區塊將不會被其他全節點所接受,也就意味者該全節點前期的投入成為泡影。惡意修改賬本會讓全節點陷入不利的局面,並且有可能會招來法律的制裁。

  3. “作惡“是需要付款方和全節點一起配合的,而作惡的成本又很高,在這種博弈關係中,”作惡“的相當不划算的。舉個現實生活中的例子:記得某個新聞說,某假幣制造者造出16萬一元硬幣,其成本高達18萬元。造假幣的成本(製作、運輸、使用以及其背後的法律風險)導致了造假幣者幾乎不太可能去製做小額的假幣。
    Alt

  4. 收款方同樣也會權衡利弊。現實生活中,店家如果收到1元或5元紙幣,其實是不會主動去進行驗鈔的,但是收到50元或100元,就會主動驗證一下鈔票的真偽。同樣,在BitcoinSV中,遠低於全節點運營成本(至少高達數千萬)的交易,也幾乎不太可能全節點配合作惡。也就是說,日常生活中幾千塊的交易轉賬,完全不用擔心會出現惡意篡改的情況,對於較大的轉賬,完全可以等到一個或多個區塊確認後,再完成實際的交易行為。現實生活中,向銀行存入100萬,可能光點鈔就需要一兩個小時,對應於比特幣系統,完全夠出6個區塊而做到完全無法篡改。

簡易支付模型

上面闡述了零確認支付的原理和可行性,下面開始描述簡易支付模型。

現實生活中,對於交易雙方來說,誰更關心轉賬是否到賬?是付款方還是收款方?當然是收款方,收款方更關心是否是假鈔、是否是殘次鈔票、轉賬是否到賬;付款方才不管你是否到賬呢,付完錢就可以走了。

同樣在比特幣系統中,由收款方來廣播交易,並獲得交易結果才是正確的途徑。付款方構建一筆交易的UTXO,通過NFC將UTXO傳送給收款方,收款方廣播交易,並且得到交易合法性的結果以及加入交易池的結果來決定是否達成該筆交易。由於零確認支付的存在,交易雙方可以快速完成該筆交易,而不用等待10分鐘。
Alt
簡易支付模型讓比特幣系統的支付速度遠高於傳統的微信、支付寶等支付方式。而比特幣系統有一個長期被人誤解的邏輯,那就是:在系統內的轉賬行為,比特幣系統效率低於微信、支付寶;而在跨系統的轉賬行為,其效率高於微信、支付寶,尤其是跨行跨國轉賬。通過上述簡易支付模型,我們可以看到,無論是系統內,還是系統外,比特幣系統的轉賬效率,都可以完爆傳統支付系統。

上文《微支付:基於比特幣的顛覆式創新》一文中,我們曾討論過支付寶這類傳統支付模式的支付過程。我們可以明顯看到,在交易完成之前,信任建立、賬戶查詢、檢索等過程,都需要中央伺服器的參與,訪問伺服器的次數在5次以上。而在比特幣的簡易支付模型中,只有在最終交易完成時會廣播交易到全節點,其訪問伺服器的次數僅為1次。
Alt
更低頻率的伺服器訪問、儘可能多的減少伺服器消耗,使得比特幣系統可以支撐全球海量微支付,讓微支付成為可能。

對於微支付的解讀,後期會繼續進行更新,感興趣的讀者可以持續關注該欄目。

注:該文中所指的比特幣僅指代根據中本聰願景實現的BitcoinSV,簡稱BSV。

本文作者:一聰微付創始人-曉天

一聰微付:全球首家微支付產品與解決方案供應商。