999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于區塊鏈非同質化代幣的軟件訂閱模型

2022-01-14 03:01:48張展鵬彭凌祺闞海斌
計算機工程 2022年1期

張展鵬,張 亮,彭凌祺,闞海斌

(1.復旦大學計算機科學技術學院,上海 200433;2.上海市區塊鏈工程技術研究中心,上海 200433;3.上海市智能信息處理重點實驗室,上海 200433;4.上海華虹計通智能系統股份有限公司,上海 201206)

0 概述

隨著云計算技術的快速發展,軟件銷售模式正在發生變化,軟件訂閱和支持(Subscription and Support,S&S)模式將逐漸取代軟件存儲介質和產品密鑰封裝銷售模式。S&S 是軟件即服務(Software as a Service,SaaS)的應用模式之一,用戶可以自行下載和安裝軟件,在購買授權開始使用并根據意愿選擇續訂,在軟件訂閱期限內可以聯系銷售商獲得支持和幫助[1],改善了用戶體驗,提高了用戶自由度。然而,S&S 一般使用中心化形式授權,限制了授權效率并降低了安全性。如果授權服務器被攻擊,則授權信息會被篡改[2],用戶很可能不能正常使用購買和訂閱的軟件,未經授權的用戶則可以惡意使用和傳播軟件,從而存在盜版隱患。

區塊鏈是一個去中心化數據庫,通過分布式同步協議解決了信任問題,區塊鏈數據具有公開性和不可篡改性[3]。以太坊[4]是一種被廣泛應用的區塊鏈技術,支持可編程節點,開發者通過編寫和部署智能合約[5]可以使節點完成指定功能[4]。目前,區塊鏈不限于作為點對點的電子現金系統提供支付服務[3],已經成為無權威第三方的可信服務提供者[6]。以太坊改進建議(Ethereum Improvement Proposals,EIP)由以太坊開源社區提出,改進了以太坊的方案并被并入以太坊的官方標準。EIP-721 通過了新代幣標準——非同質化代幣(Non-Fungible Token,NFT)。NFT 代表獨特、不可替換的資產,具有唯一且不可分割性,能較好地映射真實世界的個人財產、虛擬藏品、資產負債等[7]。本文將區塊鏈技術應用到軟件購買和訂閱場景中,基于NFT 的軟件訂閱模型,使真實世界的軟件購買和訂閱證書映射為NFT,通過NFT 的鑄造、授權、鑒權和銷毀實現軟件使用權限管理。

1 相關研究

1.1 軟件支持和訂閱

在市場經濟背景下,軟件銷售模式從“賣產品”轉向“賣服務”。20 世紀90 年代,IBM 提出服務科學、管理與工程(Service Science,Management and Engineering,SSME)學科體系。Amazon、Google、Yahoo 等公司紛紛轉型成為軟件服務公司[8],SaaS 快速發展。SaaS 將應用程序當成Web 服務交付,并根據用戶使用計劃收費,該模式推動了軟件銷售中永久許可向訂閱許可的轉變。

S&S 是SaaS 的典型代表,用戶可以自行下載和安裝軟件,在完成購買或續訂后連接服務器獲得使用授權;用戶向授權服務器提交登錄信息,授權服務器完成用戶認證后向用戶頒發數字憑證。在訂閱有效期內,客戶端使用該數字憑證請求服務端資源。軟件訂閱降低了用戶的擁有成本,用戶能自由地使用軟件并始終保持軟件為最新版本。以S&S 模式銷售軟件使銷售商的資金流更平穩[9],降低了經營管理風險[1]。這一方面決定了S&S 容易成為創業團隊的選擇;另一方面,創業團隊的安全方案也容易受到客觀條件限制。S&S 依賴中心化的認證和授權,假如中心化服務器被攻擊,用戶認證和訂閱信息將可能被篡改,造成軟件資源被盜用[10]。

S&S 模式已在軟件銷售中取得了很大進展,然而針對授權服務器的攻擊是中心化場景的固有隱患,盜版問題也長期威脅軟件服務業。在軟件購買和訂閱的授權環節探索和應用去中心化方案將對解決上述問題具有積極作用。

1.2 區塊鏈

經過十余年的發展,區塊鏈應用領域從可編程貨幣拓展到了可編程金融和可編程社會,已在數字世界中形成了可信賴、可溯源[11]的生態系統[12]。區塊鏈是存儲交易歷史的分布式數據庫,全體節點運行共識算法[13-15],根據結果將交易歷史儲存在區塊上。2008 年,中本聰設計了一種點對點的電子現金系統,首次出現了對區塊鏈的描述和應用。在比特幣網絡中,區塊以單鏈表數據結構存儲在節點上。節點可以參與通過暴力枚舉尋找下一個合法區塊頭的競爭,俗稱“挖礦”,優勝者將獲得比特幣作為獎勵;當下一個區塊被找到時,這個新區塊會記錄本區塊全體交易和上一個區塊的哈希。比特幣的交易歷史是不可篡改的[16],原因是哈希逆運算極為困難,即使比特幣網絡超過50%的計算能力被作惡者控制,作惡者篡改交易歷史也將付出指數爆炸的計算能力,作惡獲利將小于參與“挖礦”的收益[3]。

2013 年,以太坊初創白皮書[4]發布,被普遍認為開啟了區塊鏈2.0 時代。以太坊是一個公開無需許可的區塊鏈,實現了節點可編程??删幊坦濣c的本質是一個在以太坊上自動運行的去中心化應用程序(Decentralized Application,DApp),由Solidity[17]等圖靈完備的高級編程語言實現[18]。DApp 繼承了以太坊的去中心化、不可篡改、可驗證、公開透明[19]等關鍵特征。智能合約拓展了區塊鏈的功能,允許開發者在繼承以太坊關鍵特征的同時實現諸多新應用。以太坊的應用熱點集中于去中心化金融(Decentralized Finance,DeFi)、NFT 等新領域。一些優秀的應用項目贏得了研究者、開發者和投資者的青睞,例如去中心化交易所Uniswap、服務于鏈下數據獲取的預言機Chainlink、基于NFT 的養貓游戲《以太貓》(CryptoKitties)等。

1.2.1 去中心化金融

DeFi 是指建立在以太坊上的點對點金融基礎設施[20],主要包括去中心化借貸、區塊鏈預言機(Blockchain Oracle)和去中心化交易所。DeFi 是在以太坊上開發的成功DApp 之一,處于爆發式增長期,繼承了以太坊的安全性和透明性,允許任何人或機構隨時隨地開展金融活動。去中心化借貸在理論上不需要身份認證,用戶可以借出閑置資金,也可以有抵押或無抵押地借入數字資產,上述數字資產買賣均須通過合約交互完成。區塊鏈預言機提供了將鏈下數據可信地映射到鏈上的機制[21],已被用來為鏈上金融活動服務,為去中心化借貸提供基準價格,防止抵押、兌換等價格偏離市場[22]。去中心化交易所是完全匿名的,基礎功能是去中心化借貸,通過引入穩定幣、預言機等機制保證交易公平性。

DeFi 的技術進步不僅體現在金融領域,而且證明了一種無權威第三方、可公開審計、完全開放的金融架構在技術上是可行的。同時,研究者和學習者也應該注意到去中心化金融活動是難以被監管的,合約安全漏洞、詐騙、非法金融活動等均會威脅DeFi生態。

1.2.2 非同質化代幣

NFT 是在EIP-721 上被提出并通過的以太坊代幣標準,也被稱為ERC721 代幣[7]。與ERC721 代幣相對的概念是ERC20 代幣[23],即同質化代幣。以太幣(Ether,ETH)是典型的ERC20 代幣。與同質化代幣不同,同種NFT 之間不等同也不可互換,每個NFT不可再分也不可合并。NFT 最初的思想是WANG等[24]在2017 年提出的染色代幣設想,該設想用染色代幣在比特幣網絡上表示真實世界資產。以太坊社區通過NFT 實現了在以太坊上映射大量(至少2128個[7])同類資產。為了清晰地展示非同質化代幣的特征,本文對ERC721 代幣與ERC20 代幣進行了比較,如表1 所示。

表1 ERC721 代幣與ERC20 代幣的比較Table 1 Comparison between ERC721 and ERC20 tokens

第一個被熟知的基于NFT 實現的以太坊DApp是于2017 年被推出的《以太貓》。以太貓的本質是以太坊上的NFT,通過遞增的ID 保證每一只以太貓都是獨一無二的,即NFT 的tokenId[7],ID 越小的以太貓價值越高。從2017 年起,NFT 促進了藝術品、奢侈品等真實世界資產的通證化。另外,借助NFT,在以太坊上公開、不可篡改地標記票據、許可證等票證也變得容易實現。NFT 雖然被廣泛地應用于真實世界資產標記上鏈,但是相關基礎研究及理論體系仍然處于欠缺狀態[19]。

2 系統設計

NFT 從設計之初[24]就適合在以太坊上表示真實世界資產,在軟件訂閱場景中銷售商需要大量認證和分發激活令牌。本文設計一種基于NFT 的軟件訂閱認證系統Smart-Subsc,通過NFT 支持的原生操作[7]對應實現軟件激活和服務端資源訪問權限的管理。與傳統的中心化認證方案不同,基于NFT 的訂閱認證信息存儲在以太坊,具有公開透明性和不可篡改性,這將有助于提升訂閱者與銷售商之間的信任。

2.1 Smart-Subsc 需求分析

針對傳統客戶端-服務端模式的訂閱和授權場景中,服務端在受到攻擊后用戶的授權信息可能被篡改的問題,Smart-Subsc 將提供解決方案,實現下列功能:

1)訂閱信息不能被惡意篡改,訂閱者已經購買的訂閱不能被攻擊者轉讓,也不能被惡意銷毀;被訂閱者取消和到期的訂閱將永久失效,不能被恢復。

2)訂閱者和銷售商的操作應該足夠簡單,訂閱者可以自由地購買,也可以自由地提前取消并獲得退款;銷售商能夠查詢訂閱狀態,激活即將生效的訂閱,在訂閱到期后使訂閱永久失效。

3)軟件訂閱會定期生效,在生效前,訂閱者可以取消訂閱并獲得退款;一旦開始生效,訂閱者將無權限對訂閱執行操作。在訂閱有效期內,有且僅有銷售商能對訂閱執行操作。當訂閱到期后,它會永久失效,任何人都不能操作它。在用戶不主動轉讓訂閱的前提下,除訂閱者和銷售商外,其他人不能對訂閱執行任何操作。另外,訂閱者可以自由地提前訂閱,銷售商只需要定期驗證并激活即可。

2.2 Smart-Subsc 功能設計

本文在傳統客戶端-授權銷售商的基礎上應用基于NFT 的智能合約對軟件訂閱進行管理。訂閱者可以調用合約方法完成購買和提前取消,也可以查詢訂閱價格等必要信息;銷售商可以通過合約調用查詢和按期確認訂閱,以及使過期的訂閱永久失效。

圖1 給出了Smart-Subsc 主要功能時序圖。訂閱購買者需要擁有鏈下身份(例如用戶名、電子郵箱)和鏈上身份(即以太坊地址)。在步驟1~步驟3 中,訂閱購買者向軟件銷售商提交自己的鏈上身份,軟件銷售商通過驗證訂閱購買者對消息的簽名來確認鏈上身份真實性[25]。在步驟4 和步驟5 中,訂閱者通過與Smart-Subsc 合約交互,在以太坊發起轉賬來購買訂閱,Smart-Subsc 合約會在購買成功后返回訂閱對應NFT 的ID。在步驟6 中,訂閱者在鏈下向銷售商發送消息,提供自己已經成功購買的訂閱及其對應的tokenId。在步驟7 和步驟8 中,銷售商可以通過與Smart-Subsc 合約交互來驗證訂閱者的購買,即驗證對應NFT 的存在性和擁有者。在步驟9~步驟11中,銷售商可以按期再次驗證和激活訂閱者的訂閱,在激活成功后,銷售商向訂閱者頒發該期軟件訂閱的激活數字憑證,授權訂閱者在對應期限內正常使用軟件。文獻[25]指出通過分發激活令牌作為使用訂閱軟件的數字憑證屬于單點登錄(Single Sign On,SSO)場景。在步驟12 和步驟13 中,當該期訂閱到期時,銷售商再次與合約交互,銷毀對應的NFT,訂閱者也不能再使用過期的令牌訪問軟件資源。

圖1 Smart-Subsc 主要功能時序圖Fig.1 Sequence diagram of the main functions of Smart-Subsc

相比文獻[25]給出的模型中只能通過NFT 余額驗證訂閱者是否完成購買最近一期訂閱,本文模型允許訂閱者提前購買任意多期訂閱,也允許訂閱者在任意時候提前取消。另外,本文模型基于NFT 原生支持的操作權限管理充分實現了訂閱的按期激活和失效,客觀和完整地將軟件訂閱流程映射到鏈上。本節的功能設計要求訂閱者在鏈上支付以太幣購買訂閱,針對以太幣支付受到以太幣對法定貨幣匯率波動的影響[26],將在下文中討論對應的解決方案。

2.3 Smart-Subsc 合約設計

在傳統客戶端-授權服務端的基礎上設計與實現了基于NFT 的智能合約,支持訂閱者通過與合約交互完成購買和取消訂閱,銷售商也能通過與合約交互查詢、確認、激活訂閱者的有效訂閱,以及使過期訂閱永久失效。Smart-Subsc 智能合約去中心化地管理了全體訂閱的狀態,充分利用了NFT 的特性。

Smart-Subsc 合約存儲了銷售商的服務端地址server、當前訂閱價格 price、取款服務費率serviceFeeRate、下一個NFT 的ID tokenIdMax 和訂閱者余額deposit,具體功能如下:

1)server。在合約構造時初始化為合約構造者,之后保持不變。

2)price。在合約構造時初始化,只能由銷售商更新。

3)serviceFeeRate。在合約構造時初始化,只能由銷售商更新;訂閱者在提取余額時會扣除服務費來補償合約支付的轉賬手續費。

4)tokenIdMax。初始化為0,每鑄造一個新NFT時遞增;tokenId 是NFT 的唯一標識,與訂閱一一對應。

5)deposit。構造成訂閱者地址到余額的映射,訂閱者支付訂閱的余額會存在合約,訂閱者余額表給出了每個訂閱者的余額;訂閱者可以隨時提取自己的余額。

當購買訂閱時,訂閱者可以調用合約的purchaseSubscription 函數。購買訂閱實際上會鑄造(mint)[7]新NFT,tokenId 由遞增的tokenIdMax 指定。另外,新NFT 只會批準(approve)[7]銷售商的以太坊地址執行轉賬操作。在購買過程中,訂閱者的余額可以部分或完全抵扣支付金額。算法1 給出了purchaseSubscription 函數的調用流程。

算法1purchaseSubscription 函數調用

訂閱者只被允許在訂閱生效前取消訂閱,通過調用合約的cancelSubscription 函數實現。取消訂閱實際上會直接由訂閱者銷毀(burn)[7]對應的NFT。在訂閱生效前,訂閱者可以在任何時候銷毀它。

在新的訂閱周期開始時,銷售商將根據訂閱者的以太坊地址和NFT 的ID 來確認訂閱者的訂閱并充當NFT 的消費者,將對應的NFT 轉賬給自己。銷售商將通過調用合約的activateSubscription 函數激活新的訂閱,activateSubscription 在運行前須確認NFT 的擁有者是即將訂閱生效的訂閱者,批準者是銷售商的以太坊賬戶。在訂閱生效且NFT 從訂閱者到銷售商的轉賬完成后,訂閱者將無權再對NFT 做任何操作,即訂閱者不能對已經生效的訂閱進行取消操作。在訂閱周期結束時,銷售商會將到期訂閱對應的NFT 銷毀,通過調用合約的expireSubscription 函數實現。這樣任何人不能通過惡意篡改使已經過期的訂閱重新生效。

在activateSubscription 和expireSubscription 執行前,合約會分別檢查訂閱對應的NFT是否滿足被激活和被失效的條件,即校驗函數subscriptionNotActivated和subscriptionNotExpired 是否返回真。這樣的校驗是通過確認NFT 的擁有者(owner)[7]和批準者(approver)[7]實現的。算 法2 和算法3 分別給出了subscriptionNotActivated 和subscriptionNotExpired 函數的調用流程。

算法2subscriptionNotActivated 函數調用

算法3subscriptionNotExpired 函數調用

Smart-Subsc 合約為訂閱者提供了余額賬戶,這樣做可以允許訂閱者更加靈活地選擇支付時機。在購買訂閱時,訂閱者的余額可以用來支付;在取消訂閱時,退款會自動轉到訂閱者的余額。訂閱者可以在任意時候通過調用合約的withdraw 函數提現余額,從余額賬戶取款到自己的賬戶,退款將被扣除服務費。

另外,Smart-Subsc 合約也提供了基本的查詢函數,支持訂閱者查詢服務端地址、訂閱價格、服務費率和訂閱者余額。針對合約的管理者,即軟件銷售商,Smart-Subsc 合約提供了updatePrice 和updateServiceFeeRate 函數分別更新價格和服務費率。

圖2 給出了Smart-Subsc 合約的軟件架構。Smart-Subsc 合約通過調用EIP-721[7]合約實現了各項功能;訂閱者和銷售商分別與合約交互完成各自的操作,更新價格、服務費率以及激活和使訂閱過期的功能只允許銷售商的以太坊賬戶操作。通過合約提供的余額賬戶deposit,為訂閱付款與訂閱生效之間充分解耦,訂閱者在購買和提前取消操作上具有更高的自由度。由于NFT 的鑄造、轉賬和銷毀都通過向以太坊發送交易完成,訂閱的狀態改變會被永久且不可篡改地記錄在鏈上,這些訂閱歷史也是可追溯且公開的。

圖2 Smart-Subsc 合約的軟件架構Fig.2 Software architecture of Smart-Subsc contract

本文實現的合約支持以太幣支付。文獻[26]指出:以太幣對真實世界中貨幣的匯率存在波動性。為了更好地將真實世界中軟件銷售映射到鏈上,一種可供考慮的方案是支持使用匯率波動更小的數字貨幣支付。事實上,Smart-Subsc 可以支持任意ERC20 代幣[23],例如穩定幣USDT、DAI 等。穩定幣可以更好地將訂閱的真實世界價值映射到鏈上。雖然穩定幣錨定了真實世界中法定貨幣的價值,但是它并非像以太幣一樣是以太坊賬戶在鏈上發起交易所必需的。為了使用穩定幣支付訂閱,訂閱者通常需要在交易所將以太幣兌換成穩定幣,但這會導致額外的手續費開銷。

2.4 區塊鏈預言機應用研究

為了使Smart-Subsc 更好地在鏈上映射鏈下的軟件訂閱銷售,將從系統設計的角度討論數字貨幣與真實世界中法定貨幣之間的價值映射問題。在2.3 節中提及直接在合約支持穩定幣支付會給訂閱者帶來額外的手續費開銷,這可能從經濟角度限制了其應用。

穩定幣本身是受信任的機構發行的代幣,類似地,提供以太幣與法定貨幣之間匯率的區塊鏈預言機也是受信任的第三方服務,它以合約形式被部署在鏈上,充當了鏈上數據與鏈下信息的中間層。相比支持穩定幣支付,應用匯率報價預言機的方案會根據以太幣與指定貨幣之間的匯率更新以以太幣為單位的價格,訂閱者在支付交易手續費的同時無須兌換其他數字貨幣,減輕了經濟負擔。文獻[27]對區塊鏈預言機的工作機制做了總結,一般地,區塊鏈預言機的設計模式包括即時讀、發布-訂閱和請求-響應3 種,具體如下:

1)即時讀。實現方法為數據被靜態存儲在預言機,通過合約函數調用讀取。優勢為實現簡單,用戶幾乎不需要支付手續費。劣勢為以太坊存儲成本高,難以適應大規模數據,且不適合存儲高頻變化的數據。

2)發布-訂閱。實現方法為預言機以發送交易的形式廣播數據,用戶同步以太坊狀態即接收數據。優勢為適合高頻變化數據,用戶沒有額外的網絡資源開銷。劣勢為發布者將為每一次數據更新發送的交易支付手續費。

3)請求-響應。實現方法為用戶主動請求預言機,在與鏈下資源交互獲得結果后,預言機發送交易,異步返回結果。優勢為充分地發揮了鏈下資源,例如服務器磁盤和CPU 在存儲和運算時成本較低。劣勢為相比發布-訂閱,請求-響應是有狀態的,預言機需要記錄用戶與請求之間的對應關系,開銷更高。

Smart-Subsc 銷售的軟件訂閱以美元標價,需要獲得以太幣(ETH)對美元穩定幣(USDT)之間的匯率ETH/USDT,更新以以太幣為單位的價格。由于很多數字資產交易所會提供受到相關投資者認可的匯率報價,因此假設Smart-Subsc 找到了一個受信任的匯率報價預言機,可以從交易所的資金池等渠道獲得相關投資者共識的ETH/USDT 報價。

ETH/USDT 報價處于實時變化[26],不適合應用即時讀設計模式,否則預言機會被頻繁更新,導致預言機擁有者支付大量手續費。關于請求-響應設計模式,客戶端合約獲得ETH/USDT 報價的過程對預言機而言無須實現成有狀態的,也不涉及鏈下大規模運算,因此請求-響應設計模式也是不必要的。發布-訂閱設計模式適合用來獲得ETH/USDT 報價:一方面,用戶訂閱的匯率報價完全以交易形式在全網廣播,不存在額外的網絡資源開銷;另一方面,匯率報價更新是合約在相關函數被調用時主動完成的,軟件銷售商可以根據匯率變化控制更新時機,主動控制匯率報價更新帶來的手續費開銷。另外,價格更新過程發生在鏈上,對軟件訂閱者是公開透明的。

3 實驗結果與分析

Smart-Subsc 合約使用Solidity[17]基 于Truffle 框架[28]開發,由Ganache[28]提供以太坊測試網,測試文件遵循Mocha 測試庫[28]標 準。Smart-Subsc 調用了OpenZeppelin 庫[29]對EIP-721[7]的實現,使用兩兩互異的NFT 表示已購買的軟件訂閱,應用NFT 支持的轉賬、批準和銷毀操作實現訂閱權限管理,并且開放了Smart-Subsc 的源代碼,參 見https://github.com/KofClubs/Smart-Subsc。針對最近以太幣價格處于高位,以太坊主網中交易手續費價格較高的問題,本文給出解決方案。

3.1 Smart-Subsc 鏈上操作開銷

與比特幣網絡[3]類似,以太坊的狀態轉移也是交易驅動的[4]。對Smart-Subsc 合約,更新價格和服務費率,NFT 的鑄造、轉移和銷毀本質上均會使以太坊發生狀態轉移,需要合約函數的調用者發送交易來實現,并支付交易手續費。以太坊的交易手續費以gas 為單位,根據交易對應的以太坊虛擬機匯編指令計算得到[6]。全網gas 價格(gasPrice)[4]在不斷變化。一般地,在全網待處理交易(pending transaction)較多時,為了使自己的交易被更快確認,交易發起者需要提供更高的gas 價格。

在本地以太坊網絡測試Smart-Subsc 構造函數(constructor)、updatePrice、updateServiceFeeRate、activate Subscription、expireSubscription、purchaseSubscription、cancelSubscription 和withdraw 對應的交易手續費開銷,以gas 為單位。表2 給出了上述合約函數調用者為交易支付的手續費開銷范圍。值得注意的是,調用purchaseSubscription 支付的交易手續費與NFT 鑄造量和訂閱者余額均有關。

表2 Smart-Subsc 合約函數調用開銷Table 2 Call overhead of Smart-Subsc contract function

對Smart-Subsc 合約的部分函數,在不同情形下調用它們需要的交易手續費是不同的。造成這種差異的主要原因是以太坊的存儲資源珍貴,把零值寫成非零值將帶來更多手續費開銷,把非零值歸零將被退還部分手續費作為激勵[6]。分析造成不同情形下交易手續費差異的原因,參考OpenZeppelin 庫的實現,無論是ERC20 代幣[23]還是ERC721 代幣[7],它們記錄每個以太坊地址對應的代幣余額都會使用映射(mapping(address=>uint 256))數據類型。當代幣合約被構造時,余額是初始零值。當某個地址被轉入第一筆金額時,它的賬戶余額會從零值變成非零值,相比賬戶余額從非零值變成另一個非零值,前者會消耗更多的交易手續費。當某次交易后,某個地址的余額被清零時,這筆交易被退還手續費,導致實際的手續費開銷更少[6]。

以太坊虛擬機在更新映射數據類型的值時,會執行sstore 指令。當32 Byte 的以太坊虛擬機存儲空間被從零值設置成非零值時,這步操作(sset)被收取的手續費是20 000 gas;當相等長度的存儲空間發生其他更新,即從非零值到零值或從非零值到另一個非零值時,這步操作(sreset)被收取的手續費是5 000 gas。值得注意的是,當32 Byte 的存儲空間被清零時,這步操作(sclear)將被退還15 000 gas,但是每次交易最多被退還一半手續費[6]。

表3 給出了不同情形下調用purchaseSubscription函數的交易手續費??梢钥闯觯旱谝淮舞T造NFT 會帶來更多的手續費開銷,因為NFT 的ID 是從0 遞增的;在購買過程中,超額支付的部分會被存入余額賬戶,向余額為0 的余額賬戶存款會帶來更多的手續費開銷;如果直接使用余額抵扣購買,那么將余額賬戶清零所需要的交易手續費更少。另外,當tokenId不為0 且訂閱者未超額支付時,交易手續費與購買前余額是否為0 無關。

表3 不同情形下的purchaseSubscription 函數調用開銷Table 3 PurchaseSubscription function call overhead under different situations

對其他涉及以太幣和NFT 轉賬的合約函數進行類似分析,總結影響交易手續費的主要因素:

1)訂閱者余額賬戶deposit 是否從0 開始被更新或歸零,更新零值的手續費開銷更高,歸零將節省手續費。

2)被操作的tokenId 是否為0,鑄造首個NFT 時,總發行量會由零值變成非零值,會產生更高的手續費開銷。

3)代幣轉賬的發起者在轉賬后余額是否為0,接收者在接收前余額是否為0。向余額為0 的賬戶轉入代幣將消耗更高的手續費;代幣余額歸零將被退還手續費作為獎勵。值得注意的是,銷毀NFT 的本質是向零地址轉賬[7],是否被首個銷毀也會影響手續費開銷。

4)訂閱者以太幣余額在支付后或退款前是否為0,原理與因素3 類似。

圖3 給出了訂閱者大量購買訂閱且其中一部分被提前取消的場景下,訂閱者和銷售商為每次購買訂閱平均支付的手續費。假設訂閱者購買了1 000 次訂閱并以不同退訂率提前取消,對于每次購買訂閱,訂閱者平均支付的手續費是87 681~113 345 gas,銷售商平均支付的手續費是0~71 520 gas。當購買退訂率變高時,訂閱者將為cancelSubscription 函數調用支付額外的手續費,這導致平均手續費開銷變高,銷售商需要激活和使過期的訂閱相對變少,合約調用手續費變低。結合退訂率分析平均手續費開銷有助于銷售商更好地確定用戶取款的服務費率。在理想狀態下,訂閱者從合約取款支付的服務費將被銷售商用來支付合約調用產生的手續費。

圖3 訂閱者和銷售商每次購買訂閱平均支付的手續費與退訂率之間的關系Fig.3 Relationship between the average transaction fee paid by subscribers and sellers for each subscription purchase and the cancellation rate

3.2 針對高手續費問題的鏈下支付方案

本文實現與測試的Smart-Subsc 合約需要支付以太幣購買訂閱。近期,以太坊主網gas 價格約為50 Gwei,ETH/USDT 匯率也處在歷史高位,這會帶來高昂的手續費開銷。例如,訂閱者購買訂閱將至少支付72 651 gas,折合約75 元。若以2019 年11 月以太坊市場行情來計算[30],訂閱者購買訂閱支付的手續費為0.13~0.23 元。針對目前市場行情導致的高手續費問題,本文實現了在鏈下完成訂閱購買并在鏈上存證的方案。相比Smart-Subsc 鏈上實現和測試的方案,鏈下支付方案有如下改變:1)訂閱者不再使用以太幣來購買軟件訂閱,即鏈下支付方案中訂閱者不再向智能合約轉賬;2)訂閱者可以自行在鏈上生成訂閱對應的NFT,實際支付過程在鏈下完成,軟件銷售商需要確認訂閱者是否實際購買了軟件訂閱并確認鏈上NFT 的合法性;3)Smart-Subsc 將被部署在以太坊測試網或者私網上,因為目前只有以太坊主網的以太幣具有公認的價值,所以在測試網上部署合約并發起交易消耗的以太幣并不會帶來實際的經濟負擔,同時以太坊測試網也是公開透明、不可篡改的。

圖4 給出了Smart-Subsc 鏈上存證和鏈下支付時序圖。該方案不要求訂閱者支付以太幣來購買軟件訂閱,相應地,軟件銷售商需要確認訂閱者鑄造的NFT 的合法性,即它們是否是軟件訂閱的有效存證。合法性包含兩方面:訂閱者是否已經成功地購買了訂閱;訂閱者鑄造的NFT 是否有效。軟件銷售商將有權直接銷毀無效的NFT。另外,在圖1 的基礎上,圖4 簡化了合約交互的表達。以太坊測試網與主網不存在功能性差異,Smart-Subsc 能夠在以太坊測試網正常工作,不過這將增加軟件銷售商的管理負擔,軟件銷售商必須逐一確認NFT 作為鏈下交易存證的合法性。

圖4 Smart-Subsc 鏈上存證和鏈下支付時序圖Fig.4 Sequence diagram of Smart-Subsc with on-chain depository and off-chain payment

3.3 Smart-Subsc 合約交互與測試

本文分別為訂閱者和軟件銷售商實現了與合約交互的Node.js 客戶端,具有文本訂閱者交互界面,使用者可以根據提示方便地完成鏈上操作。圖5 和圖6 以截屏形式分別給出了訂閱者和軟件銷售商使用Smart-Subsc 提供的客戶端與合約交互的實例。Smart-Subsc 遵循Mocha 測試庫撰寫了測試文件以測試在不同的使用場景下合約是否工作正常。圖7是測試文件輸出截屏,Smart-Subsc 對每個合約函數在不同場景下的工作狀態進行驗證。Smart-Subsc將NFT 的關鍵特性,即鑄造、轉賬、銷毀和操作權限管理完整地應用在軟件訂閱的特定場景中,提供了對應的文本交互界面并通過場景測試。

圖5 訂閱者與Smart-Subsc 的合約交互與購買訂閱截圖Fig.5 Screenshot of contract interaction and subscription purchase of subscriber and Smart-Subsc

圖6 銷售商與Smart-Subsc 的合約交互與確認并激活訂閱截圖Fig.6 Screenshot of contract interaction to confirm and activate the subscription of sellers and Smart-Subsc

圖7 Smart-Subsc 通過多種使用場景測試的截圖Fig.7 Screenshot of Smart-Subsc has passed a variety of usage scenarios test

4 結束語

本文基于NFT 的關鍵特性設計與實現軟件訂閱模型,計算與討論訂閱者和銷售商的合約調用開銷。針對當前行情下交易手續費相對昂貴的問題,提出鏈上存證和鏈下支付的解決方案,并對現有DeFi 和NFT 研究和應用進行相關補充。實驗結果表明,該模型解決了中心化軟件授權場景中訂閱信息被篡改造成的盜版問題,實現了NFT 與軟件訂閱和支持模式的有效結合。NFT 非常適合表示真實世界資產,后續可對其在更多資產管理場景中的應用進行研究。區塊鏈預言機作為服務于區塊鏈的可信信息提供者,也將成為未來可編程社會發展中的熱門研究方向。

主站蜘蛛池模板: 亚洲一区二区三区在线视频| 天天爽免费视频| 国产成人综合亚洲欧美在| 国产精品亚欧美一区二区| 欧美成人h精品网站| 色噜噜狠狠色综合网图区| 亚洲aaa视频| 国产无码性爱一区二区三区| 日韩资源站| 青青草原偷拍视频| 国产一区二区在线视频观看| 在线观看视频99| 国产精品污污在线观看网站| 久久香蕉国产线看观看精品蕉| 一级毛片免费观看不卡视频| 亚洲欧美激情小说另类| 国产精品中文免费福利| 亚洲男人在线| 一本久道热中字伊人| 91亚洲精选| a国产精品| 在线观看欧美国产| 欧美三级视频在线播放| 精品视频一区在线观看| 国产精品亚洲一区二区三区在线观看| 中文无码伦av中文字幕| 九色在线观看视频| 亚洲国产清纯| 伊人丁香五月天久久综合| 欧美成人看片一区二区三区| 亚洲清纯自偷自拍另类专区| 在线va视频| 国产在线一区视频| 国产黑丝视频在线观看| 色香蕉网站| 亚洲综合在线最大成人| 中文字幕亚洲第一| 国产网站一区二区三区| 18禁高潮出水呻吟娇喘蜜芽| 国产成人高精品免费视频| 国产精品一区不卡| 青青青伊人色综合久久| 亚洲精选无码久久久| 91人人妻人人做人人爽男同| 亚洲成人免费看| 亚洲欧洲自拍拍偷午夜色无码| 操国产美女| 2019年国产精品自拍不卡| 毛片免费网址| 日日噜噜夜夜狠狠视频| 香蕉视频国产精品人| 在线欧美a| 日韩a级毛片| 日本高清在线看免费观看| 免费三A级毛片视频| 国产区免费| 日本免费精品| 欧美精品在线视频观看| 2022精品国偷自产免费观看| 午夜福利在线观看入口| 欧美笫一页| 亚洲二三区| 免费人成在线观看成人片| 国产在线视频福利资源站| 欧美成人影院亚洲综合图| 久久永久免费人妻精品| 免费一级毛片完整版在线看| 国产91成人| 国产国语一级毛片在线视频| 国产微拍一区二区三区四区| 超碰精品无码一区二区| 日本爱爱精品一区二区| 亚洲v日韩v欧美在线观看| 欧美啪啪网| 一级爱做片免费观看久久| 国产又黄又硬又粗| 久久久久青草大香线综合精品| 亚洲va欧美va国产综合下载| 91久久国产综合精品| 青青青国产精品国产精品美女| 日韩精品毛片人妻AV不卡| 成人一级黄色毛片|