關於位元幣的小額支付通道(micropayment channel),網上大多說的雲裡霧裡。自己查閱了一些英文文件,整理彙總下吧。
應用場景:
比如a為b工作,從b取得報酬。由於各種原因(比如不信任b),所以a要求每完成乙份工作就取得乙份報酬,而不是最後一起支付。 而b認為支付太多次會付出過多手續費。這種情況下,可以採用小額支付通道。
支付流程:
1. b建立一筆交易,支付一筆較大金額給2-2多重簽名指令碼,稱為保證交易(bond transaction)。
<- 等於b出了一筆押金,需要a和b共同簽名才能取出,防止b最後賴賬。這時保證交易還沒有公開到網路。
2. b建立一筆輸入為上面的保證交易,輸出為b的位址的交易,稱為初始的返還交易(refund transaction)。這筆交易被標註為某個時間(比如一天)之後才生效。
b無法憑自己的簽名就完成返還交易,所以他把返還交易給a確認,讓a來簽名。a確認內容並簽名之後,把初始返還交易給b。
<- 如果a拒絕工作的情況下,等一天以後b可以拿回全部金額(刨去手續費)。
3. a從b取得保證交易,並檢查保證交易和初始的返還交易的內容。
<- 讓a確信b付了押金,並且無法提前取出。
4. a把保證交易公開到網路。
5. a工作一段時間(比如乙個小時),要求b重新建立一筆支付交易,以上面的保證交易為輸入,把乙個小時的報酬給a的位址,剩下的給b的位址。交易為立刻生效。這筆交易由b簽名後交給a。對於這筆交易而言,a可以隨時簽名並發布到網路以拿到這筆錢。
<- a如果不打算繼續工作了,那麼可以立刻簽名發布交易確認收入。否則a會暫時保留交易而不發布,因為如果發布的話,那麼保證交易的utxo會被花掉,a拿到1小時的錢,b拿回剩餘金額,等於通道關閉,無法繼續付錢。
6. a繼續工作,每過一段時間(比如乙個小時),就要求b重新建立一筆支付交易,以保證交易為輸入,把現時點的報酬給a的位址,剩下的給b的位址。交易都是立刻生效,由b簽名後交給a。
7. a到不想工作的時候,或者是快到一天的時候,就需要選擇簽名最新的支付交易並發布到網路以拿到錢。這種情況下,b拿回其他所有的金額,然後通道關閉。
<- 第二天需要開闢新通道。
注意: 如果a由於網路故障等原因過了一天還沒有發布交易,那麼初始的返還交易會生效,b拿回全部金額,a就等於白幹了。所以才說這種方式,只適合小額支付。
位元幣中的雙重支付問題
本質 位元幣是基於utxo的交易模式,每次交易都只是檢查前一次交易的合法性。例如b是乙個惡意節點,前一次交易 a b 是合法的,現在b已經向c支付了一定量的金額了 這筆金額是從a b中取得 但是b還想用這筆金額向d再支付一次,d只是檢查了一下 交易a b 是合法的,就接受了。以上的描述就是我理解的d...
自己理解的位元幣雙重支付
用乙個位元幣多次支付。發給a的交易成為交易a放在未確認的交易池 傳送b的交易成為交易b放在未確認的交易池 a先寫入區塊鏈驗證有效,這時b就驗證無效 但如果兩個交易驗證,區塊鏈就會產生兩個分支,等待下乙個區塊在哪個分支上先出現,區塊鏈分支更長的那乙個就是確認的那個,另乙個分支就無效,當然如果再次兩個分...
位元幣 位元幣的實現
位元幣系統是乙個基於交易的賬本,這意味著儲存在賬本中的是一筆筆交易。那麼在使用者進行轉賬交易時,首先就需要確保使用者所持有的數量要大於或等於將要交易的。這要做的目的是為了避免雙花問題。這種基於交易的賬本好處在於隱私保護性比較好,缺點在於每次交易都需要說明幣的 在位元幣的全節點中,會在記憶體中維護乙個...