SmartRaiden 無網微支付解讀
SmartRaiden 無網微支付解讀
在網際網路十分發達的今天,很多人已經習慣了數字支付,只要有網,隨時都可以進行轉賬操作;但是依舊有許多情況下沒有網路連線,比如一些偏遠地區、島嶼、地下室等網路訊號難以覆蓋的地方或者手機停機等突發狀況,這時候如何進行支付呢?有人可能會說支付寶微信即使沒有網路也可以出示付款碼,但這種方式的前提是對方(收款方)必須有網,我們在前面列舉的一些場景中是交易雙方都沒有網路連線的,這就需要某些新技術和解決方案了,SmartRaiden 無網微支付就很好地解決了這一問題,下面我們就來看看它到底是什麼。
介紹
SmartRaiden 無網微支付是基於 Raiden 網路擴充套件的 SmartMesh 支付協議,SmartMesh
使用者之間通過手機 WiFi 或其他直連訊號,P2P 傳輸簽名加密交易資訊,進行無網支付。SmartRaiden 是使用 Golang 編寫的標準的 Raiden 網路協議,它可以在移動平臺上實現離線交易,並且可以在沒有網際網路連線時執行。
Raiden Network
Raiden Network 是一種 off-chain 的可擴充套件性解決方案,可在 Ethereal 上實現符合 erc-20 標準的 token 傳輸。它允許參與者之間在沒有任何全域性共識機制的情況下進行安全的 token 交易,這是通過預先設定的帶有數字簽名和鎖雜湊的鏈上存款支付來實現的。因為仍要依賴於幾個鏈上的操作來開啟和關閉一對節點的支付通道,所以網路上的每對節點都難以建立通道。但是,如果(至少)存在一個通道,通過網路中的其他節點來連線兩個支付節點,那麼我們就不需要為這兩個節點建立單獨的通道了。該網路被命名為 Raiden Network,它具有類似路由演算法和互鎖通道通訊的所有合約。

支付通道網路圖
Smartraiden 使用與 raiden 網路相同原理的支付通道網路技術,但 Smartraiden 是為更好地適應移動節點而特別設計的。我們將包含移動節點的支付渠道網路稱為 smartraiden 網路,以區別於傳統的 raiden 網路。
SmartRaiden的主要功能和特性
SmartRaiden 的主要目標是構建一個結構,為 SmartRaiden Network 實施一個 off chain 可擴充套件性解決方案,從而提高可用性,相容性和安全性。
其常規功能包括查詢,註冊,通道依賴和不同場景下的傳輸,API 詳見ofollow,noindex">rest_api 。
其他功能包括:
-
跨平臺和移動端適應
SmartRaiden 網路支援多個平臺,並且可以實現移動智慧裝置上的分散式微支付。SmartRaiden 目前可以在 Windows,Linux,Android,iOS 等上執行。SmartRaiden 在 XMPP 而非 P2P上構建自己的訊息傳遞機制,同時具備單獨的節點和啟動過程,確保它能夠在具有正確操作的多個平臺上執行。
-
節點狀態同步
為了保證交易安全,SmartRaiden 採用狀態機來設計節點,確保相關操作是原子性的。例如,它能確保接收到的資料解鎖記錄和ACK報文傳送的資訊一致,兩者都成功或者都不成功,不存在中間狀態。在交易處理過程中,如果出現任何錯誤的情況,都會確保雙方的交易狀態一致,在崩潰恢復後,要麼交易繼續,要麼交易失敗,沒有任何 token 損失。
-
無網付款
它是 SmartRaiden 中新增的一項特殊功能。通過 meshbox 中的網路構建功能,SmartRaiden 能夠在不依賴網際網路的情況下實施 off chain 的資金轉移。
-
第三方代委託
第三方委託服務,也稱為 SmartRaiden 監控,主要用於在移動裝置在離線時由第三方委託來幫助在區塊鏈上強制執行 UpdateTransferDelegate 或 WithDraw 操作。第三方服務與其系統外部的 App,SmartRaiden 和 spectrum 三部分進行互動。
-
固定費用
與 Lightning Network 類似,我們在 token 轉賬的過程中還有一個額外的固定費率收費功能。受此費用的激勵,該路由上的所有節點將保留通道的餘額,以提高效率和交易的成功率。
SmartRaiden 交易展示
假設我們有一個節點使用 AET 令牌連線到我們的通道網路,在這種情況下,該節點連線到另外 5 個節點,可以輕易將 token 轉移到其直連節點。如果這個通道網路變得複雜,那麼我們通過幾個節點轉移 token,這個通道的節點狀態會連續改變。
交易前:

交易後:

在該圖中,五個節點的地址分別是:
- node 1 : 0x69C5621db8093ee9a26cc2e253f929316E6E5b92
- node 2 : 0x31DdaC67e610c22d19E887fB1937BEE3079B56Cd
- node 3 : 0xf0f6E53d6bbB9Debf35Da6531eC9f1141cd549d5
- node 4 : 0x6B9E4D89EE3828e7a477eA9AA7B62810260e27E9
- node 5 : 0x088da4d932A716946B3542A10a7E84edc98F72d8
交易流程從節點 1 開始,到節點 5 結束。然而,在圖中我們只有一條到 5 的路徑,即 1 到 2 到 4 到 5。交易完成後,此通道中 token 餘額的變更為:
node 1 to node 2 : 0xc4327c664D9c47230Be07436980Ea633cA3265e4
node 1 initial deposit : 200
node 2 initial deposit : 100
node 1 balance : 150
node 2 balance : 150
node 2 to node 3 : 0xd1102D7a78B6f92De1ed3C7a182788DA3a630DDA
node 2 initial deposit : 100
node 3 initial deposit : 100
node 2 balance : 100
node 3 balance : 100
node 2 to node 4 : 0xdF474bBc5802bFadc4A25cf46ad9a06589D5AF7D
node 2 initial deposit : 200
node 4 initial deposit : 100
node 2 balance : 150
node 4 balance : 150
node 4 to node 5 : 0xd5CF2248292e75531d314B118a0390132bc7a5F0
node 4 initial deposit : 100
node 5 initial deposit : 100
node 4 balance : 50
node 5 balance : 150
SmartRaiden 合約和通道的生命週期
SmartRaiden 合約包括:
- Netting Channel Library : 0xad5cb8fa8813f3106f3ab216176b6457ab08eb75
- Channel Manager Library : 0xdb3a4dbae2b761ed2751f867ce197c531911382a
- Registry Contract : 0x68e1b6ed7d2670e2211a585d68acfa8b60ccb828
- Discovery Contract : 0x1e3941d8c05fffa7466216480209240cc26ea577
Spectrum 合約釋出地址 = 0x41Df0be8c4e4917f9Fc5F6F5F32e03F226E2410B
通道生命週期
- 通道不存在
通道不存在有兩種情況:一種是我們的通道永遠不存在,另一種是我們已經完成了交易,因此通道和參與者的所有資料都已被刪除。在這兩種情況下,我們無法驗證節點之間的交易,除非為交易再建立通道。
- 通道開放
在節點與其直連節點之間建立通道時,通道的建立者有權指定 token 的地址,對方的地址,要存入的 token 的數量以及結算的時間段。一旦通道開啟,參與者就可以進行交易。
- 通道存款
在支付通道開啟後,只有一個節點進行存款,因此只有這個節點可以將他的 token 轉移給他的交易物件。然後該節點可以傳送訊息,通知已存在為對方開啟的交易支付渠道,之後對方也能夠存入其 token。
- 通道轉賬
一旦節點通過 AET 令牌連線到支付通網路,它就可以訪問另外 5 個節點。這個節點很容易將其 token 傳送到另一個直連的節點,但如果想要傳送到它們之間的中間節點,它們都需要構建到中間節點的通道,如果這些節點中的 token 可以滿足此交易,則發生交易。
- 通道關閉
如果任何節點想要關閉連線到它的某個通道,他可以呼叫 close 方法。之後,通道關閉操作者及其對應節點需要在結算期間提交餘額證明。
- 通道結算
一旦呼叫 close 方法, timeout 開始計時。在此期間,兩個節點都會提交最新訊息。 timeout 結束後,通道完成結算。
結論
前面講了有關 SmartRaiden 的概念和功能。如需進一步使用,請參閱安裝說明 和教程 或SmartRaiden 規範