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

基于區塊鏈的安全電子商務系統的研究與實現*

2021-01-19 11:00:30范吉立李曉華聶鐵錚張巖峰
計算機與數字工程 2020年12期
關鍵詞:數據庫智能用戶

范吉立 張 昀 李曉華 聶鐵錚 張巖峰 于 戈

(1.東北大學計算機科學與工程學院 沈陽 110169)(2.東北大學信息化建設與網絡安全辦公室 沈陽 110004)

1 引言

電子商務成為互聯網發展的重要產物,支付寶采用螞蟻金服自主研發的通用關系型數據庫OceanBase,支撐了巨大的交易量,其交易是基于電子商務集權化中心平臺進行的,在集權化平臺上運行的交易有很多弊端,例如用戶的交易資金會有一段時間存儲在平臺上,業務的運轉基于用戶對集權中心的信任,如果第三方不可信,那么用戶資金面臨丟失的風險[1]。

去中心化的電子商務系統具有成本低、速度快的優勢。近幾年,隨著分布式的公共賬本區塊鏈技術的發展,其存儲層分布式結構、交易時的共識機制、加密算法等特性實現了在沒有第三方監督情況下交易的可靠互信,推動了去中心化電子商務交易市場的發展[2~3]。2016年4月,使用比特幣進行交易的去中心化市場OpenBazaar1.0正式啟動運行,對傳統電子商務平臺帶來很大的挑戰。OpenBazaar使用多重簽名技術(multisig)[4],是區塊鏈領域非常可靠的安全保障技術。OpenBazaar的成功為開發安全的電子商務交易系統提供了思路。

以太坊(Ethereum)是繼比特幣之后的第二代區塊鏈平臺,圖靈完備的智能合約使以太坊具有可編程性。通過部署在以太坊上的智能合約代替當前的可信中間方完成交易工作,避免了中間方不可信的問題。以太坊采用POW[5](Proof of Work)共識機制和POA(Proof of Authority)共識機制[6],同時GHOST協議解決了快速生成區塊時區塊鏈安全問題,保障交易的安全性。整個交易過程透明,區塊鏈不可篡改的特性保障了交易記錄有證可查。

當下還沒有基于以太坊平臺的成熟電子商務交易系統。本文設計基于區塊鏈的電子商務安全交易系統,主要工作如下:1)安全性設計,從三個層面提高系統安全性,應用層登錄時設計附加驗證機制,有效防止DDoS攻擊;數據存儲層面,設計基于區塊鏈和鏈下數據庫結合的存儲機制,用戶隱私信息存儲在鏈下,并對密碼信息進行Hash加鹽處理,防止暴庫攻擊及賬號信息泄露;交易處理層面,商品交易操作由智能合約完成,交易信息存儲在區塊鏈,實現安全可信交易。2)查詢優化設計,為鏈下數據庫中存儲的用戶信息和商品信息建立索引,設計智能合約中商品信息及交易存儲結構,建立用戶和商品交易的映射關系,提高商品信息及交易狀態的查詢效率。本文基于以太坊平臺完成了基于區塊鏈的交易處理。

圖1 系統體系結構設計

2 關鍵技術

系統采取B/S架構與分布式相結合。體系結構參考圖1,主要分三層設計:應用層、中間層和數據層。應用層通過Web界面為用戶提供可視化操作接口,使用戶能夠與系統進行交互,應用層劃分為三個功能模塊:賬戶管理模塊,交易模塊,信息查詢模塊,部署在中心化服務上。中間層部分,Java的web3j類庫實現了Maven框架[7]下,通過java語言編寫部署并調用合約的功能。應用層通過JDBC driver連接MySQL數據庫,Web3j連接智能合約。數據層由區塊鏈及MySQL數據庫組成存儲設施。本系統將敏感和非重要數據存儲于默認innodb引擎的MySQL數據庫。應用層為了保障用戶安全性,客戶端登錄時設計了附加驗證機制,利用驗證碼防止DDoS攻擊。

2.1 數據存儲

2.1.1 SQL數據庫上的數據存儲

關系數據庫服務器存儲三種信息,分為三個表:用于記錄用戶詳細信息的表user,用于記錄商品詳細信息的表goods以及用于記錄交易詳細信息的表transporting。表中存儲用戶以及商品對應智能合約地址,方便交易的檢索。

2.1.2 智能合約數據存儲

智能合約及其相關的數據存儲在區塊鏈上。數據類型分為memory,storage和calldata三種[8],其中需要永久保存的數據被智能合約設置為storage類型,持久化存儲到磁盤上的數據庫LevelDB中。本系統中,新的合約隨著新商品的創建被部署到區塊鏈上,合約商品信息記錄如表1所示。good_trade_info記錄每一個商品的當前狀態,有資格擁有商品所有權的實體包括賣家,買家以及智能合約,當一件商品處于被交易狀態的時候,為了保障交易的可靠和公平公正,此時商品應該歸智能合約所有,這時智能合約扮演了可信第三方。具體信息如表2所示。

表1 合約商品信息

表2 商品交易信息good_trade

buyer_record_info記錄用戶購買當前合約商品的一筆訂單詳細情況,給定用戶和商品合約地址后可以跟蹤他購買該商品狀態信息,buyer_record結構體的詳細定義見表3。balanceOf變量記錄某用戶總共購買的商品量,buy_good_No數組依次記錄用戶的購買商品編號,if_sign記錄每筆訂單的簽收情況以及buy_good_No中每筆訂單商品編號記錄的起始位置以及結束位置。

表3 買家信息buyer_record

2.1.3 數據安全保障

存儲在數據庫的信息(主要是用戶密碼以及隱私信息)會被加鹽處理,通過MD5摘要算法對關鍵內容加鹽hash后存入數據庫,以上設計能夠防止暴庫攻擊。MySQL數據庫中不保存與用戶實際資產相關的信息,即使MySQL中數據被惡意篡改,用戶實際資產也不受影響。

2.2 交易

本節介紹系統的交易執行流程,及不同種類交易的具體過程。

2.2.1 系統交易執行流程

用戶請求的交易經過web服務器前端發送給web3j,與智能合約的交互通過web3j類庫實現,具體執行時序如圖2所示。為保障交易有序,以太坊要求一個賬戶每筆交易有一個連續的計數nonce[9],同一賬戶交易的提交嚴格按照nonce順序執行,避免了雙花問題。

圖2 系統交互時序圖

2.2.2 智能合約功能

為了記錄賣家身份,設計商品擁有者的智能合約owned,同時利用modifier驗證當前用戶,確保后續操作該商品的用戶為賣家。每個商品用一個合約表示,通過其部署的地址可以對這個商品進行操作。以下為系統的交易功能:

1)創建商品。部署智能合約時,將智能合約編譯為java類。調用構造函數將商品合約部署到以太坊網絡上,同時得到合約地址。

2)增加商品。由于具有添加商品功能的用戶應該只有創建當前合約的人(即賣家),因此使用modifier來限制調用此功能的消息發起者只能為這個商品合約的owner。

3)購買商品。以太坊的交易執行保障了原子性,若交易執行條件不滿足則合約不會執行輸出。當系統執行購買操作時,首先確認商品余額足夠,之后再進行交易的核心操作。

執行交易的關鍵操作是智能合約buyer_record結構體狀態的改變,如圖3所示。一筆新的購買交易產生后,首先good_trade_info中被選中出售的1(或n)個商品的狀態會更新,buy_good_No向后追加當前交易商品的id,對應的,if_sign中追加buy_good_No隊列的元數據信息,用于索引buy_good_No的交易記錄和交易狀態,包括當前交易在buy_good_No中起始記錄位置(sp),結束記錄位置(ep),以及當前訂單狀態(state)。

圖3 buyer_record結構體存儲機制

購買商品函數執行后簽收狀態記為“未簽收”,具體算法如下面偽代碼所示。

算法1購買商品

Input:good amount

Output:good_trade_info,buyer_record_info

1 check the balance of good

2 change the balance of contract and seller

3 add new purchase record to buyer_record_info.if_sign

4 for i

5 if good_trade_info[i].buyer==0x0

6 then good_trade_info[i].buyer=msg.sender;

7 good_trade_info.in_whose_hand=this;

8 buyer_record_info.buy_good_No.push(i);

4)簽收商品。一筆交易記錄在合約購買功能執行時產生,if_sign數組追加一組包含三個元素的記錄。在執行簽收操作前驗證簽收條件是否滿足,驗證后將交易k購買的所有商品的擁有者更新為買家,并執行轉賬。最后將if_sign數組中交易k的交易狀態信息更新為已簽收。操作完成后,智能合約輸出結果,否則合約執行失敗并回滾。

5)退款。退款函數程序流程與簽收類似,區別在于退款不需要用戶支付以太幣,不驗證支付信息;商品狀態重置為初始狀態,if_sign數組中交易狀態更新為已退款。

2.2.3 交易安全保障

執行交易時,商品合約狀態發生改變,利用Ethereum中橢圓曲線ECDSA簽名算法[10],保證交易發送方msg.sender不可偽造[11],實現商品交易信息不可抵賴。

執行查詢時,通過eth_call調用智能合約,eth_call不改變合約狀態,調用者用自己的私鑰對查詢函數進行簽名來實現查詢可信性。

在智能合約代碼層面,為保障代碼執行過程中的安全性,防止數學運算越界溢出,引入SafeMath庫,該函數庫為uint類型變量運算溢出和下溢提供了檢測機制[13],能夠加強Solidity在轉賬運算上的安全性。在執行商品交易操作時,都嚴格檢查先決條件,如限定增加商品的發起人必須是賣家,簽收操作發起人必須是買家等,避免智能合約的邏輯漏洞。

2.3 查詢優化

用戶登陸時,用戶表user中以用戶名作為主鍵,采用MySQL的默認innodb引擎,用戶數據由用戶名作為關鍵字建立B+樹索引。

當執行商品查詢時,以商品id為主鍵建立主索引,為了提高商品的檢索速度,對商品的多個屬性建立輔助索引,包括商品名(state),賣家(seller_id),價格(price)等。通過商品智能合約地址查詢商品信 息 時,首 先 利 用Bloom Filter[12]檢 測 該 地 址 在goods表中是否存在,若存在,則通過該地址調用智能合約執行商品查詢操作。用戶表user中,對用戶的賬號可以執行同樣操作以提升查詢效率。

區塊鏈數據查詢中,設計商品交易信息存儲結構buyer_record,建立元數據與商品信息的映射關系,提高查詢效率,詳細結構見前述小節2.1.2。

3 實驗分析

3.1 環境設置

實驗環境為Windows10和CentOS操作系統,硬件配置Intel i5雙核CPU 2.50 GHz,Intel E7-4820,8vCPU 2.0GHz。智能合約使用Solidity編寫,mist客戶端。系統開發工具為MyEclipse,Solidity合約編譯環境為solc。Javascript編寫應用端測試腳本。

3.2 系統實現

交易詳細信息的界面如圖4所示,包括產品購買信息,簽收狀況和退款狀況。數據庫中存儲的具體數據內容如表4所示,字段contract_address為商品對應的合約地址,可以索引到區塊鏈網絡中存儲的商品。

表4 合約商品信息

圖4 用戶信息界面

3.3 實驗結果

通過以下實驗對系統在區塊鏈上的寫入和查詢效率進行測試和分析,區塊鏈節點環境為Geth,編寫Javascript腳本,通過Web3接口調用智能合約方法發起交易及數據查詢。Geth節點主要創世參數如下:

實驗一 交易處理時間

對區塊鏈上交易執行時間進行測試,圖5為用戶訂單購買和簽收不同數量商品的交易處理時間,平均處理時間在3600ms左右,處理每單交易的時間基本不受交易商品數量的影響。結果表明本系統智能合約核心邏輯設計合理,在私有鏈或聯盟鏈環境下運行具有較高的實用性。

圖5 購買和簽收交易響應時間

與傳統中心化電子商務交易系統相比,本系統交易訂單處理效率偏低,主要受限于PoW共識機制,在今后實際應用中需要對區塊鏈共識機制進行優化,在保證交易安全的前提下提高處理效率。

實驗二 查詢商品交易狀態

測試查詢區塊鏈上商品交易狀態的響應時間。商品總數量為500個,以商品id為參數,通過腳本調用智能合約查詢方法,記錄查詢商品交易狀態的響應時間,如圖6所示,響應時間與查詢的商品數量成正比,符合預期。平均響應時間在110ms左右,效率較高。

圖6 查詢商品交易狀態

實驗三 查詢訂單狀態

測試查詢訂單狀態的響應時間。結果顯示平均每個訂單查詢響應時間為95.2ms,最快響應時間為80ms,如圖7圖表所示,查詢速度較快。實驗三和實驗四的結果表明本系統所設計智能合約存儲結構在數據查詢上比較高效。區塊鏈底層數據庫LevelDB在查詢性能上具有一定的局限性,今后優化查詢效率可從兩方面入手:一種方式為對底層LevelDB數據庫進行改造優化,在區塊鏈存儲結構內部增加輔助索引;另一種方式為設置外聯數據庫,將區塊鏈數據同步到外聯數據庫進行查詢優化[14]。

圖7 查詢訂單狀態

實驗四 多節點交易處理時間

基于多個區塊鏈節點,測試節點數量對并發交易處理時間的影響。在不同節點數量的區塊鏈網絡中,分別并發發送100條商品購買交易,等待返回交易結果并記錄處理時間。實驗結果表明,節點數量對交易處理時間有一定影響,如圖8所示,節點數量增加會適當縮短響應時間,說明以太坊在多節點網絡環境執行效率較高。但與傳統交易系統千萬級并發相比,差距較大,當前比較主流的優化方案包括:閃電網絡、分片、側鏈等。

圖8 多節點交易響應時間

4 結語

與傳統交易系統比,基于區塊鏈平臺存儲交易信息,實現了去集權化,由合約保障交易的正常運作。區塊鏈數據只能追加不能修改,避免了傳統交易系統存在的數據被篡改的風險。系統的敏感及非重要數據存儲在鏈下數據庫中,提供豐富的查詢條件,保障用戶信息的隱私性。隨著以太坊2.0分片技術的提出,以太坊的交易吞吐量將會有很大的提升[15],使其能夠承擔電子商務系統的龐大交易量。本系統在未來研究中將進一步完善功能,比如需要增加物流信息,提高實用性。網上購物保障商品的發貨、簽收、退款功能的正常運作,物流方必不可少。

本文基于以太坊平臺構建去集權化安全電子商務系統,探索了未來網上交易的新模式,對安全電子商務的發展具有一定的借鑒意義。

猜你喜歡
數據庫智能用戶
智能前沿
文苑(2018年23期)2018-12-14 01:06:06
智能前沿
文苑(2018年19期)2018-11-09 01:30:14
智能前沿
文苑(2018年17期)2018-11-09 01:29:26
智能前沿
文苑(2018年21期)2018-11-09 01:22:32
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 97se亚洲综合| 91精品国产综合久久香蕉922| 精品无码国产一区二区三区AV| 国产在线自乱拍播放| 国产精品太粉嫩高中在线观看 | 91在线视频福利| 宅男噜噜噜66国产在线观看| 在线精品视频成人网| 欧美精品高清| 亚洲国内精品自在自线官| 都市激情亚洲综合久久| 免费在线a视频| 国产极品美女在线| 毛片在线播放a| 青青草原国产av福利网站| 老色鬼久久亚洲AV综合| 97超爽成人免费视频在线播放| 国产一区二区三区日韩精品 | 在线亚洲天堂| AV在线天堂进入| 国产精品亚洲一区二区三区z| 免费Aⅴ片在线观看蜜芽Tⅴ | 欧美一级在线| 久久香蕉国产线看观看式| 日本不卡在线视频| 国产精品香蕉在线观看不卡| 欧美日本在线| 中文字幕1区2区| 99精品伊人久久久大香线蕉| 亚洲一区毛片| 视频二区亚洲精品| 欧美不卡在线视频| 亚洲中文在线看视频一区| 欧美国产综合色视频| 国产国产人成免费视频77777| 欧美不卡视频在线| 国产精品永久久久久| 亚洲IV视频免费在线光看| 国产草草影院18成年视频| 日韩国产高清无码| 成人无码一区二区三区视频在线观看| 91免费国产高清观看| 亚洲欧洲综合| www亚洲精品| 国产女人在线视频| 日韩大片免费观看视频播放| 欧美在线视频不卡第一页| 国产精品9| 国产日韩丝袜一二三区| 欧美区国产区| 经典三级久久| 午夜a视频| 亚洲丝袜中文字幕| 国产免费人成视频网| 日韩免费中文字幕| AV老司机AV天堂| 亚洲国产一成久久精品国产成人综合| 韩国自拍偷自拍亚洲精品| 91综合色区亚洲熟妇p| 亚洲精品中文字幕无乱码| 国产亚洲精久久久久久无码AV| 亚洲国产综合自在线另类| 久久综合激情网| 国产精品丝袜视频| 欧美中文字幕在线二区| 成人国产精品网站在线看| 國產尤物AV尤物在線觀看| 中文字幕1区2区| 伊人久久久久久久久久| 8090午夜无码专区| 91视频首页| 午夜毛片福利| 91福利一区二区三区| 在线综合亚洲欧美网站| 欧亚日韩Av| 中文字幕永久在线看| 欧美日韩午夜| 91小视频版在线观看www| 国产毛片高清一级国语| 熟妇人妻无乱码中文字幕真矢织江| 精品无码一区二区三区电影| 亚洲成人一区二区|