基於 BSV 支付信道和 Oracle 的智能合約關注一下,BSV 最新資訊等着你!2019 年 12 月 26 日,BSV 學習羣講座,主講:郭家琪,BSV 開發者。

說明:文中的“支付通道”與 nChain 的論文中的“支付信道”“Payment Channel”爲同一技術詞語。

相關參考資料請點擊查看:支付信道和比特幣智能合約

基於 BSV 支付信道和 Oracle 的智能合約

大家好,感謝給我這個機會,非常榮幸能在 BSV 學習羣裏和大家分享。
自我介紹一下,我叫郭家琪,17 年開始跟隨 CSW 博士的文章學習比特幣知識,目前在上海讀本科並跟幾個朋友一起在 BSV 上做應用。今天分享的內容是我從 CSW 博士視頻和文章中學習到的一點知識 :\”支付通道的原理及其應用\”。一、什麼是支付通道?

支付通道是幾個參與方在鏈下通過比特幣交易進行溝通的通訊通道。

每個比特幣交易,均可含有多個輸入。對於每個輸入,都有一個稱爲序列號(sequence number)的參數,取值範圍是從 0x0 到 0xFFFFFFF,表示交易的新舊版本次序,取最大值時表示此輸入的交易是最終版,對於整個交易,有一個鎖定時間(locktime)的參數,整個交易在鎖定時間到來之前無效,無法被打包。如果一個交易的輸入的序列號不是最大值,那麼在鎖定時間到來之前,這筆交易的一個具有更大序列號的新版本,可以使花費相同輸入但序列號較小的較早版本失效。序列號和鎖定時間是原初比特幣就有的功能,創世紀升級後 BSV 將會恢復這些功能,到時基於支付信道技術會出現更多的新應用。支付信道的最基礎應用就是流式小額支付,比如在家庭電錶上使用支付信道付電費:智能電錶內置 SPV 錢包,當用戶回到家開始用電時智能電錶與國家電網打開一個支付信道。基於 BSV 支付信道和 Oracle 的智能合約(這個表是簡化版,沒有列出礦工費)電錶將此交易交給國家電網,國家電網將此交易廣播出去,因爲鎖定時間到期前這個交易無效所以這個交易暫時不會被打包,但是這個交易涉及到的 UTXO 已經被礦工鎖定,礦工不會再接受該 UTXO 的雙花交易。接下來每隔 5 分鐘電錶就根據用戶的用電量更新交易併發送給國家電網:基於 BSV 支付信道和 Oracle 的智能合約可見此交易的序列號爲 1,可以覆蓋上一個交易。等到晚上 12 點後,國家電網將會廣播最後收到的序列號最大的那筆交易從而拿到這筆錢。基於 BSV 支付信道和 Oracle 的智能合約因爲之前的 67 筆交易都是在鏈下傳輸,只有最後的交易上鍊,所以一天時間只需付出一筆礦工費。這種流支付方式可以低成本地將國家電網的應收賬款從一個月縮減到一天。比特幣最重要的特點之一就是極低的支付額和更低的支付費用,而在合適的場景應用支付通道可以讓支付費用再次大幅降低。比特幣彌補了互聯網缺失的小額支付部分後可以帶來不同於互聯網的業務模式。互聯網上的幾乎所有內容都是免費的,傳統方式無法爲數字服務支付小額費用。支付寶、微信、Paypal 都無法做到全球小額支付,這導致服務提供商們只能靠廣告盈利。調查顯示如果平臺提供無廣告的訂閱模式則他們的收入可能大幅增加。基於 BSV 支付信道和 Oracle 的智能合約以愛奇藝爲例,對於偶爾看一個視頻的用戶,要不就忍受廣告,要不就花一個月的錢買會員,兩種方式都很噁心,用戶體驗很差,而對於平臺來說,現在的會員機制,不管一個月看 500 個視頻還是 5 萬個視頻都是固定的幾十塊錢,明顯做不到利益最大化。而通過使用 P2P 支付通道,愛奇藝可以實現無廣告、無會員、按照實際觀看量實時小額收費,提高用戶體驗和平臺收入,真正的“you pay you play”。這裏所說的 P2P 支付通道不僅可以進行流支付,更可以傳輸數據,大家知道互聯網的 OSI 模型有 7 層:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層,而在比特幣模型中,我們有以下層級結構 :l 0= 物理層,l 1= 數據鏈 (網絡,例如 IP 和互聯網或其他) ,l 2= 網絡–P2P 網絡和用戶與節點之間的交易交換,l 3= 比特幣交易 l 4= 腳本 P2P 支付通道在這裏就相當於 TCP,用戶訪問愛奇藝打開一個視頻,即訪問愛奇藝的 IP (IPv6)時,愛奇藝返回一個交易模版,這個交易模版就像 TCP 的數據包,模版包含了愛奇藝的收費地址、該視頻每分鐘的價格、該視頻第一分鐘的內容。其中的視頻第一分鐘的內容是放在 pushdata 裏,比特幣的 pushdata4 操作碼支持 4GB 的內容。基於 BSV 支付信道和 Oracle 的智能合約客戶端收到第一分鐘的內容後即可開始播放視頻,並根據模版簽署付費交易傳輸給愛奇藝打開支付通道:
基於 BSV 支付信道和 Oracle 的智能合約愛奇藝收到交易並驗證無誤後將廣播該交易並返回帶有第二分鐘視頻內容及收費標準的交易模版,客戶端播放第二分鐘的視頻並簽署第二筆交易,如此循環下去直到用戶停止播放視頻,等鎖定時間到期後礦工打包最後一筆序列號最大的交易,愛奇藝就能拿到錢了。二、基於支付通道和 Oracle 的智能合約

比特幣的智能合約有多種形式:腳本、支付通道、第三方 Oracle,這次所說的智能合約只是其中一種而已。

這是一個全球範圍內實時對戰的公平安全的圍棋平臺,對戰的玩家將會贏取或輸掉 BSV。

一局遊戲的參與者有:玩家 A,玩家 B,平臺服務器 O。遊戲開始,首先同時構建出資交易和退款交易,三方把該籤的名都簽好:基於 BSV 支付信道和 Oracle 的智能合約出資交易:A、B 各出資 1BSV,這筆 2BSV 存放在 A、B、O 的 2-3 多籤腳本里,集齊其中任意兩方就可以動用這筆錢,出資交易要馬上廣播到 BSV 網絡生效。基於 BSV 支付信道和 Oracle 的智能合約退款交易:將 A、B 的錢原路返回給 A、B。有兩個特點要注意:

  1. 退款輸入的序列號爲 0,而接下來開始玩遊戲時生成的交易的序列號會是 1、2、3、4、5………… , 退款交易的一個具有更大序列號的新版本,可以使花費相同輸入但序列號較小的較早版本失效,因此退款交易只有在玩家沒有開始過遊戲的情況下才有效,比如玩家 A 出資完之後掉線了,B 可以使用退款交易。只要進行過一回合的遊戲就以那一回合的序列號爲 1 的結果結算。

  2. 退款輸入的序列號爲 0,因此驗證過程將查看鎖定時間字段,在 24 小時內這筆退款交易無效,無法廣播至 BSV 網絡。

退款交易由 A、B、O 分別保存在本地暫時不廣播,遇到遊戲流局的情況等到 24 小時後任意一方將退款交易廣播一下就能將所有資金原路返回。遊戲沒有流局的話就開始第一回合,在這裏將圍棋簡化爲只有 3 路,A 執黑先手:

基於 BSV 支付信道和 Oracle 的智能合約

A 生成了一個這樣的交易:基於 BSV 支付信道和 Oracle 的智能合約(110)表示棋盤 1 行 1 列處沒有子,(220)→(22 黑)表示 A 這一步在 2 行 2 列處下了一顆黑子。因爲這一步走完的局勢還是平局,所以輸出的資金分配仍是原路返回。交易鎖定 5 小時表示平臺設置的這一局對局最多持續 5 小時。這個交易的輸入只有 A 簽了名所以暫時是個無效交易。A 將這個交易發給服務器 O,O 將會檢查 A 的簽名是否有效,根據圍棋規則檢查棋盤狀態和 A 的下子是否有效,根據局勢檢查資金分配是否正確,防止 A 在任何地方作弊。如果全部有效,O 將對交易簽名,此時交易有 A、O 兩個簽名,等 5 個小時就能成爲有效交易,O 將簽好的交易發給 A、B,這個交易就成爲了最新的共識,就像遊戲的存檔點,這個交易有目前最大的序列號 1。將這個交易廣播以鎖定 UTXO,如果接下來有人掉線流局沒有第二步,等該交易鎖定時間到了即可被打包生效。如果繼續遊戲,該 B 下棋了:基於 BSV 支付信道和 Oracle 的智能合約B 生成交易:基於 BSV 支付信道和 Oracle 的智能合約跟第一步原理過程都一樣。接下來該 A 走第三步:基於 BSV 支付信道和 Oracle 的智能合約基於 BSV 支付信道和 Oracle 的智能合約接下來 B 走第四步:

基於 BSV 支付信道和 Oracle 的智能合約

基於 BSV 支付信道和 Oracle 的智能合約接下來 A 走第五步:

基於 BSV 支付信道和 Oracle 的智能合約

基於 BSV 支付信道和 Oracle 的智能合約這一步開始不一樣了,A 落子後喫掉了 B 兩顆子,假如我們約定好的規則是喫掉對方 1 個子就贏 0.1BSV,這樣資金分配就是 A 得到 1.2BSV,B 得到 0.8BSV。A 現在把這個交易發給服務器 O 審覈,O 查看簽名,查看棋盤,查看資金分配都沒問題之後也簽名。現在 2-3 多籤已經完成,5 小時後廣播即可生效,B 無法反悔不承認這個結果,B 只能按照規則繼續往下玩或者直接掉線離開。下面的過程省略,原理都一樣,就是一步一個檢查點,遊戲過程全部在支付通道內完成,直到遊戲結束或者一方中途退出,將最後一個檢查點廣播生效即可。在這裏 Oracle 的意義是提供信任。我們可以看到,所有跟圍棋有關的部分全部是在 OP_return 裏完成的,所以上面的過程完全不侷限於圍棋這個遊戲,只要更改 OP_return 裏的機制就可實現其他功能,比如應用在回合制的對戰遊戲中,如問道、寶可夢、刀塔自走棋,每一方的回合結束後根據這一回合打出的傷害更新資金分配,簽名後發給 oracle 複覈,然後等其他人完成回合。也可以應用在任務合同領域,例如礦池與其中的礦工之間的資金合同:基於 BSV 支付信道和 Oracle 的智能合約又例如 showjob 平臺的模式可以這樣實現,用戶 A 出資 5BSV 發佈任務:帶着 BSV 標誌在大會會場的 5 個位置合影,用戶 B 接下任務後與 A 和平臺 O 開通支付通道,隨着 B 不斷提交完成任務的證明,平臺 O 將 A 的出資逐次支付給 B。在這種基於支付通道的智能合約中,Oracle 並不是必須存在的,因爲支付通道智能合約已經具有信任的特性:強制執行如果任何一方試圖作弊,另一方僅需簡單地發佈上一個達成共識的交易來索取交易輸出。鑑於比特幣交易的性質,作弊方獲得的收益不可能超過上次約定交易的預期。換句話說,執行的強制性繼承於這個成對交易的特性:出資交易和退款交易。信任支付通道不需要 A 和 B 和 Oracle 彼此信任。一旦出資交易上鍊,他們將嘗試在支付信道中溝通並達成共識。如果沒能形成共識,他們總是可以回到上一個達成共識的交易。這是從強制執行特性中繼承來的。Oracle 的存在可以爲智能合約帶來更多信任,當一方試圖作弊時,另一方可以和 Oracle 一起達成最新的共識而不是退回到上一個共識,這點小小的差別可以帶來更好的用戶體驗。一臺圍棋 Oracle 服務器運行過程中會在鏈上留下記錄,這些記錄就是它積累的信譽,Oracle 作弊的成本就是之前積累的所有信譽,Oracle 作弊收益低於成本時就可以信任 Oracle,我在網上跟全世界範圍內的陌生網友下棋,我肯定希望有一臺靠得住的服務器來保障我的遊戲體驗。而在礦池與礦工的例子中,如果雙方已經合作多年彼此信任,合作中就可以直接使用支付通道智能合約,不需要額外的 Oracle。需不需要 Oracle,是根據具體場景、參與方之間的關係、涉及金額等多個條件來決定的,由參與方自己判斷。Oracle 的類型也有多種,遊戲運行商的 Oracle、有信譽的第三方合同 Oracle 公司、包括法院也可以在線提供 Oracle 服務,簽訂重要合同時可以選擇法院提供的 Oracle,如果一方作弊,另一方直接提交證據給法院由法院使用 2-3 多籤判決資金分配,畢竟 Code 不是 Law,Code 只能提供證據,Law 纔是 Law。

基於 BSV 支付信道和 Oracle 的智能合約

基於 BSV 支付信道和 Oracle 的智能合約

第五屆 CoinGeek 大會 將在倫敦舉行

2020 年 2 月 20 日至 21 日

歡迎加入區塊鏈行業先鋒們的討論,你會發現 BSV 激動人心的發展——這是唯一一款監管友好、可用於商業、可大規模擴展的區塊鏈。 你將成爲 BSV 的早期參與者和創新者,BSV 即最初的比特幣,它正朝着其引爆點邁進,並在全球範圍內被廣泛採用。

不要錯過 2020 年最大的區塊鏈會議之一!

Bitcoin SV (BSV):區塊鏈的未來

大會訂票微信號:bitcoinassociation

基於 BSV 支付信道和 Oracle 的智能合約

大會網址:https://coingeek.com/

基於 BSV 支付信道和 Oracle 的智能合約