国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于區(qū)塊鏈技術的C2C交易系統(tǒng)

2019-10-08 06:43韓港成康曉風劉禹
軟件 2019年5期
關鍵詞:智能合約區(qū)塊鏈

韓港成 康曉風 劉禹

摘 ?要: 區(qū)塊鏈和智能合約是近幾年最熱門的技術,區(qū)塊鏈技術具有去中心化、匿名化、可溯源等特性,智能合約是存儲在區(qū)塊鏈上的公開可執(zhí)行代碼,允許在沒有第三方參與的情況下進行可信交易,這些交易可追蹤且不可逆轉,因此,將其應用在最不可信的C2C交易業(yè)務中具有較高的研究價值和實用價值。本文利用以太坊區(qū)塊鏈平臺和智能合約實現(xiàn)了C2C交易系統(tǒng),利用該系統(tǒng)可以實現(xiàn)匿名且安全的交易,解決了信任問題、降低了信任成本。

關鍵詞: 區(qū)塊鏈;智能合約;以太坊;C2C交易

中圖分類號: TP311.52 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.05.034

本文著錄格式:韓港成,康曉風,劉禹,等. 基于區(qū)塊鏈技術的C2C交易系統(tǒng)[J]. 軟件,2019,40(5):175178

【Abstract】: Blockchain and smart contracts are the hottest technologies in recent years. Blockchain technology has the characteristics of decentralization, anonymization, traceability, etc. Smart contracts are public executable code stored on the blockchain, allowing trusted transactions without third party involvement. These transactions are traceable and irreversible. Therefore, applying them to the most untrustworthy C2C transaction business has high research value and practical value. This paper uses the Ethereum blockchain platform and smart contracts to implement the C2C trading system, which can realize anonymous and secure transactions, solve the trust problem and reduce the trust cost.

【Key words】: Blockchain; Smart contract; Ethereum; C2C trading

0 ?引言

作為一種分布式的數(shù)據(jù)庫,區(qū)塊鏈是由密碼學生成的一串數(shù)據(jù)塊,每個數(shù)據(jù)塊都包含網(wǎng)絡交易信息,這些區(qū)塊用來驗證信息的有效性并生成下一個區(qū)塊。區(qū)塊鏈去中心化、開放性、不可撤銷、不可篡改,并且具有很高的加密安全性。利用區(qū)塊鏈的這些特點能夠解決信任問題、降低信任成本。

本系統(tǒng)以現(xiàn)有的Consumer To Consumer(以下簡稱C2C)交易業(yè)務為背景,將以太坊作為平臺,使用智能合約設計并且實現(xiàn)基于的C2C交易系統(tǒng),用戶之間互相交易商品來驗證智能合約以及系統(tǒng)的可靠性。本系統(tǒng)使用分布式節(jié)點一致性算法來產(chǎn)生和更新數(shù)據(jù)、使用了塊鏈式的數(shù)據(jù)結構來驗證與保存數(shù)據(jù)、使用智能合約來編程和操作數(shù)據(jù)的一種新的分布式基礎架構與計算方式。并在數(shù)據(jù)傳輸上使用密碼學相關技術確保數(shù)據(jù)和訪問的安全性,使用該系統(tǒng)可以實現(xiàn)匿名且安全的交易。

1 ?以太坊介紹

作為一個提供可以執(zhí)行圖靈完備語言的虛擬機,開發(fā)人員能夠在以太坊平臺上開發(fā)分布式應用。位于以太坊的最上層稱為Dapp,利用Web3.js提供的接口和智能合約層進行交互;負責在區(qū)塊鏈平臺上使用智能合約實現(xiàn)各種去中心化應用的稱為應用層;以太坊特有的結構是合約層,提供了可以執(zhí)行圖靈完備語言的虛擬機,通過部署到區(qū)塊鏈上的智能合約,從而實現(xiàn)去中心化功能;激勵層的主要功能是對成功產(chǎn)生區(qū)塊的節(jié)點進行獎勵;封裝網(wǎng)絡節(jié)點的各種共識算法主要是共識層,當下主流的共識機制有PBFT、POS、POW等;以太坊使用的共識機制則是基于工作量證明,區(qū)塊鏈上的每一個節(jié)點都會使用消耗算力的方法來競爭式地產(chǎn)生區(qū)塊,用來確保安全運行整個以太坊網(wǎng)絡;數(shù)據(jù)層由以太坊交易和區(qū)塊等數(shù)據(jù)結構以及數(shù)據(jù)加密算法組成;網(wǎng)絡層由P2P網(wǎng)絡組成,實現(xiàn)了數(shù)據(jù)傳播功能以及驗證功能等主要機制。所有部署的智能合約都會運行在以太坊虛擬機(EVM)上,并且會調用RPC。位于EVM和RPC下面的四大內容分別是:BlockChain,共識算法,挖礦以及網(wǎng)絡層[1-3]。

2 ?智能合約介紹

學者Nick Szabo在1994年最早提出智能合約概念,此概念誕生時被設計成一個使用數(shù)字形式定義的協(xié)議,所有合約的參與者都可以執(zhí)行這些約定好的協(xié)議。該設計的初衷是通過將智能合約的構建為物理實體創(chuàng)建各種靈活且可控的數(shù)字資產(chǎn)。但是因為計算方法的落后性,并缺乏實際應用場景,智能合約的概念并沒有得到研究人員的廣泛關注[4]。

然而,智能合約由于區(qū)塊鏈的誕生而被重新定義。智能合約是區(qū)塊鏈的重要核心構成要素。作為由業(yè)務驅動的、具有狀態(tài)的、公開透明運行在區(qū)塊鏈上的計算機代碼,能夠主動或者被動處理接收數(shù)據(jù)和管理區(qū)塊鏈上的資產(chǎn)。作為嵌入式的合約,可以內置在任何區(qū)塊鏈的業(yè)務處理上,形成編程控制且可復制的一種實用且創(chuàng)新的解決方案,能夠在各類交易管理,合同管理等各類業(yè)務中發(fā)揮出重要作用[5-6]。

在區(qū)塊鏈上運行的智能合約部署流程如圖1所示。智能合約在部署完成后會產(chǎn)生相對應的賬戶,存儲著余額、私鑰、地址等內容。區(qū)塊鏈的每一個節(jié)點中執(zhí)行智能合約,在執(zhí)行結果上達成共識就會由礦工打包生成區(qū)塊并更新智能合約的狀態(tài)。智能合約可以根據(jù)合約代碼自動完成資產(chǎn)的轉移以及發(fā)送或接收消息[7]。

在EVM中運行智能合約必須需要消耗Gas,規(guī)定了上限,從而避免無限循環(huán)。假設整個網(wǎng)絡狀態(tài)為以合約運算剩余的Gas為g,區(qū)塊鏈運行環(huán)境中的重要信息保存在元組I(當前合約地址,合約發(fā)起者地址,本次交易的Gas價格,交易輸入數(shù)據(jù),執(zhí)行合約的賬戶地址,合約賬戶余額,當前區(qū)塊頭,當前CALL操作和CREATE操作數(shù))內,系統(tǒng)狀態(tài)轉移函數(shù)記為ψ,σ為系統(tǒng)運行后狀態(tài),g為運行后剩余Gas,s為執(zhí)行終止操作的合約列表,l為記錄序列,r為運行后返還的Gas,ο為合約產(chǎn)生的輸出,則整個狀態(tài)轉換可表示為:(σ,g,s,l,r,o)=ψ(σ,g,l)在大多數(shù)情況下,ψ被定義為不斷迭代系統(tǒng)臨時狀態(tài)和虛擬機臨時狀態(tài)的過程,迭代的終止由以下兩個條件決定:(1)系統(tǒng)狀態(tài)出現(xiàn)異常使得EVM停止工作,例如Gas不足、指令無效、虛擬機堆棧不足等情況;(2)EVM執(zhí)行完所有指令并返回結果,正常停止。在每一次迭代過程中,智能合約的指令被壓入堆棧,EVM按堆棧索引執(zhí)行指令.每執(zhí)行一條指令就支付相應的Gas,直到所有指令執(zhí)行完畢,堆棧被清空;若遇到異常,EVM則停止工作并逐層向上返回[8-9]。

3 ?智能合約設計

以太坊提供了各種編寫智能合約的語言,其中最受開發(fā)人員歡迎的是Solidity,Solidity是一種腳本語言,類似JavaScript。本系統(tǒng)使用的智能合約基于Solidity編寫。考慮到智能合約本身是一個犧牲時間換取安全性的語言,設計時候應遵循以下原則:(1)避免復雜嵌套,減少出現(xiàn)邏輯漏洞的可能性,使得安全性降低。(2)數(shù)據(jù)與邏輯相分離,存儲與處理合約分離編寫,便于后于升級以及減少復雜度。(3)涉及到資產(chǎn)轉移時嚴格檢查變量類型,避免出現(xiàn)溢出等漏洞導致難以挽回的損失[10]。

根據(jù)以上智能合約的設計原則和思路,結合實際C2C交易業(yè)務中的交易流程,設計了本智能合約。C2C交易系統(tǒng)中各個類型合約接口的主要功能如下:

(1)注冊接口:該合約接口負責處理用戶的注冊請求,根據(jù)用戶的注冊信息自動生成一個錢包地址,并返回私鑰給用戶存儲,系統(tǒng)不存儲此數(shù)據(jù),保障了用戶的安全性。

(2)交易接口:該合約接口負責處理用戶之間的交易,根據(jù)用戶需要交易的商品價格進行資產(chǎn)的轉移,商品ID作為標簽記錄在區(qū)塊鏈上。

(3)余額接口:該合約接口負責處理用戶在個人中心查詢自己的錢包余額。

4 ?C2C交易系統(tǒng)設計與實現(xiàn)

本系統(tǒng)是基于以太坊區(qū)塊鏈平臺,用智能合約實現(xiàn)C2C交易業(yè)務,用MySQL數(shù)據(jù)庫存儲非隱私數(shù)據(jù)。首先介紹了C2C交易系統(tǒng)的總體結構,并設計和實現(xiàn)了其中的關鍵模塊,然后編寫C2C交易功能的主要算法,最后部署智能合約代碼,實現(xiàn)C2C交易系統(tǒng)。

基于智能合約的應用在以太坊中稱為Dapp,即去中心化應用,其不僅要編寫后端智能合約的邏輯代碼,而且還要編寫前端與其交互。以太坊中已經(jīng)包含了后端智能合約與前端交互的接口,為開發(fā)的本系統(tǒng)奠定了基礎。C2C交易系統(tǒng)中的層次架構主要包括四層:應用層、合約層、平臺層以及節(jié)點層[11]。

(1)應用層:該層主要負責用戶與區(qū)塊鏈進行交互,基于express框架開發(fā),通過Web3接口中提供的方法,實現(xiàn)新建錢包自動化,資產(chǎn)轉移自動化。用戶自己的錢包由自己保管,不存儲在服務器上,相較于傳統(tǒng)模式極大地保證了用戶密鑰地私密性和安全性。

(2)合約層:合約層主要調用已經(jīng)編寫好的合約代碼實現(xiàn)C2C交易業(yè)務需要的各種邏輯,如資產(chǎn)交易,節(jié)點管理等。

(3)平臺層:主要基于以太坊平臺進行開發(fā),鄧莊了各類數(shù)據(jù)的結構,并保證各個節(jié)點之間的信息交流。

(4)節(jié)點層:各個物理節(jié)點是區(qū)塊鏈的底層基礎,如OSI中物理層所提供的功能一樣。

根據(jù)C2C交易系統(tǒng)的實際業(yè)務,結合Solidity語言的特性,將交易金額,交易商品ID,目標地址,訂單狀態(tài)等信息定義為結構體,并存儲這些數(shù)據(jù)的Map,便于查看訂單時進行遍歷。根據(jù)定義的結構體類型,實現(xiàn)C2C交易業(yè)務。首先,用戶通過瀏覽商品列表,確定需要購買的商品,然后綁定JavaScript事件將購買的ID作為參數(shù)傳入智能合約,然后調用封裝好的orderMake接口,從而實現(xiàn)訂單的生成以及商品擁有權的轉移。

本系統(tǒng)使用truffle框架開發(fā)智能合約,truffle框架作為Solidity語言中最受開發(fā)者歡迎的框架,幾行命令即可完成智能合約的整個部署流程,并提供了友好的交互。truffle部署后界面如圖2所示。使用的客戶端是ganache,ganache頁面如圖3所示。truffle部署成功后會在客戶端(ganache)產(chǎn)生合約地址。本系統(tǒng)一切交易基于合約地址完成。部署完成后,用戶即可通過前端的登錄注冊購買等功能與鏈上數(shù)據(jù)進行交互。

用戶交互選擇了基于Node.js平臺的web應用開發(fā)框架Express,既利用了高并發(fā)的優(yōu)點保證了用戶的使用體驗,又利用了其與web3良好的兼容性降低了后續(xù)開發(fā)的難度。在用戶注冊之后,后端會調用web3的新建錢包接口,返回用戶的錢包地址以及私鑰,并提醒用戶自行保存私鑰,服務器不對私鑰進行存儲,如圖4所示。MySQL數(shù)據(jù)庫僅僅會記錄賬戶的基礎信息與用戶錢包地址綁定,不會記錄真正的私鑰。用戶既可以選擇上傳商品,也可以選擇瀏覽商品列表進行購買,選擇上傳商品會提醒用戶輸入名稱,價格以及商品描述,如圖5所示。點擊確認后自動返回商品列表,可以看到自己上傳的商品以及其他用戶上傳的商品,如圖6所示。點擊購買按鈕出出現(xiàn)模態(tài)框向用戶進行確認,如圖7所示,以及要求用戶輸入密碼,點擊確認后,用戶在消耗Gas(類似于區(qū)塊鏈上交易的手續(xù)費)后,等待區(qū)塊生成,對應商品即可屬于該用戶,區(qū)塊的hash對應訂單ID供用戶查詢。該筆交易將會永久的記錄在鏈上,交易信息公開透明且匿名化,任何人無法篡改。

5 ?結語

作為目前最有潛力的互聯(lián)網(wǎng)技術之一,區(qū)塊鏈技術的應用場景正由加密貨幣延申至金融領域等各行各業(yè)。區(qū)塊鏈技術具有去中心化、匿名化、可溯源等特性,是智能合約誕生的前提。作為存儲在區(qū)塊鏈上的公開可執(zhí)行代碼,智能合約允許在沒有第三方參與的情況下進行可信交易,這些交易可追蹤且不可逆轉,因此,將其應用在最不可信的C2C交易業(yè)務中具有較高的研究價值和實用價值。傳統(tǒng)的中心化交易不僅需要調用第三方支付,還存在著一定的安全隱患。本文在對以太坊區(qū)塊鏈技術研究以及對C2C交易業(yè)務邏輯分析的基礎上,完成了C2C交易系統(tǒng)的智能合約編寫以及完整的交互邏輯,利用該系統(tǒng)可以實現(xiàn)匿名且安全的交易,解決了信任問題、降低了信任成本。

參考文獻

[1] Omohundro S.Cryptocurrencie, smart contracts, and artificial intelligence[J]. AI matters, 2014, 1(2): 19-21.

[2] 陳亞飛.基于區(qū)塊鏈智能合約的倉單交易平臺研究與實現(xiàn)[J].鄭州大學碩士論文, 2018, 1: 1.

[3] Karthikeyan Bhargavan, Antoine Delignat—Lavaud, Cedric Foumet, et a1. Shon Paper: Formal Verification of Smart Contracts[J]. Proceedings of the 20 16 ACM Workshop on Programming Languages andAnalysis for Security, 2016: 91-96.

[4] 邵奇峰, 金澈清, 錢衛(wèi)寧, 等. 區(qū)塊鏈技術: 架構及進展[J]. 計算機學報, 2017: 1-20.

[5] Zyskind G, Nathan O, Pentland AS. Decentralizing privacy: using blockchain to protect personal data. 2015 IEEE Security and Privacy Workshops. San Jose, CA, USA. 2015: 180-184.

[6] 鄒均, 張海寧, 唐屹等. 區(qū)塊鏈技術指南. 北京: 機械工業(yè)出版社, 2016: 102-103

[7] 蔡維德, 郁蓮, 王榮, 等. 基于區(qū)塊鏈的應用系統(tǒng)開發(fā)方法研究[J]. 軟件學報, 2017, 28 (06): 1474-1487.

[8] 黃潔華, 高靈超, 胡凱, 等. 眾籌區(qū)塊鏈上的智能合約設計[J]. 信息安全研究, 2017, 3(03): 211-219.

[9] 安慶文. 基于區(qū)塊鏈的去中心化交易關鍵技術研究及應用[D]. 東華大學, 2017: 39-45.

[10] Watanabe H. Fujimura S. Nakadaira A. et a1. Blockchain contract: Securing a blockchain applied to smart contracts. 20l6 IEEE International Conference on Consumer Electron-ics. Las Vegas, NV, USA. 2016: 467-468.

[11] 魯靜, 宋斌, 向萬紅, et al. 基于區(qū)塊鏈的電力市場交易結算智能合約[J]. 計算機系統(tǒng)應用, 2017, 26(12): 43-50.

猜你喜歡
智能合約區(qū)塊鏈
農(nóng)產(chǎn)品供應鏈金融信用體系框架設計
區(qū)塊鏈技術在互聯(lián)網(wǎng)保險行業(yè)的應用探討
區(qū)塊鏈技術的應用價值分析
“區(qū)塊鏈”的茍且、詩和遠方
用“區(qū)塊鏈”助推中企走出去
马边| 广南县| 佛学| 新闻| 陆丰市| 高淳县| 略阳县| 石门县| 贵德县| 万荣县| 永吉县| 鄂托克旗| 荆门市| 西林县| 年辖:市辖区| 西平县| 当雄县| 姚安县| 龙里县| 安龙县| 吉安县| 朔州市| 蒙自县| 五原县| 平南县| 洪洞县| 习水县| 东城区| 海南省| 台北县| 增城市| 麦盖提县| 江山市| 汉川市| 资中县| 攀枝花市| 英超| 土默特左旗| 浦东新区| 岢岚县| 吴桥县|