亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2019-10-08 06:43:30韓港成康曉風劉禹
        軟件 2019年5期

        韓港成 康曉風 劉禹

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

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

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

        本文著錄格式:韓港成,康曉風,劉禹,等. 基于區(qū)塊鏈技術(shù)的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)絡(luò)交易信息,這些區(qū)塊用來驗證信息的有效性并生成下一個區(qū)塊。區(qū)塊鏈去中心化、開放性、不可撤銷、不可篡改,并且具有很高的加密安全性。利用區(qū)塊鏈的這些特點能夠解決信任問題、降低信任成本。

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

        1 ?以太坊介紹

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

        2 ?智能合約介紹

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

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

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

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

        3 ?智能合約設(shè)計

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        5 ?結(jié)語

        作為目前最有潛力的互聯(lián)網(wǎng)技術(shù)之一,區(qū)塊鏈技術(shù)的應(yīng)用場景正由加密貨幣延申至金融領(lǐng)域等各行各業(yè)。區(qū)塊鏈技術(shù)具有去中心化、匿名化、可溯源等特性,是智能合約誕生的前提。作為存儲在區(qū)塊鏈上的公開可執(zhí)行代碼,智能合約允許在沒有第三方參與的情況下進行可信交易,這些交易可追蹤且不可逆轉(zhuǎn),因此,將其應(yīng)用在最不可信的C2C交易業(yè)務(wù)中具有較高的研究價值和實用價值。傳統(tǒng)的中心化交易不僅需要調(diào)用第三方支付,還存在著一定的安全隱患。本文在對以太坊區(qū)塊鏈技術(shù)研究以及對C2C交易業(yè)務(wù)邏輯分析的基礎(chǔ)上,完成了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ū)塊鏈技術(shù): 架構(gòu)及進展[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ū)塊鏈技術(shù)指南. 北京: 機械工業(yè)出版社, 2016: 102-103

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

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

        [9] 安慶文. 基于區(qū)塊鏈的去中心化交易關(guān)鍵技術(shù)研究及應(yīng)用[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ū)塊鏈的電力市場交易結(jié)算智能合約[J]. 計算機系統(tǒng)應(yīng)用, 2017, 26(12): 43-50.

        亚洲精品一二区| 熟女人妇 成熟妇女系列视频| 欧美a级情欲片在线观看免费| 日韩一区二区三区无码影院| 少妇高潮潮喷到猛进猛出小说| 久久人人爽人人爽人人av东京热| 人妖另类综合视频网站| 亚洲桃色蜜桃av影院| 亚洲三区在线观看内射后入| 日韩插啊免费视频在线观看| 加勒比在线一区二区三区| 国产自拍一区二区三区| 亚洲成a人v欧美综合天堂| 国产嫖妓一区二区三区无码| 亚洲色拍拍噜噜噜最新网站| 大尺度极品粉嫩嫩模免费| 亚洲日韩激情无码一区| 久久无码专区国产精品s| 91伊人久久| 日韩av他人妻中文字幕| 免费久久99精品国产| 国产一卡2卡3卡四卡国色天香 | 色综合久久久久综合999| 国产高清在线精品一区不卡| 亚洲天堂亚洲天堂亚洲色图| 好吊妞无缓冲视频观看| 亚洲av色无码乱码在线观看| 欧美日韩亚洲成色二本道三区 | 免费日本一区二区三区视频| 婷婷久久久亚洲欧洲日产国码av| 亚洲国产香蕉视频欧美| 精品一区二区三区国产av| 亚洲av综合av国产av中文| 成年女人永久免费看片| av网页在线免费观看| 看日本全黄色免费a级| 永久免费av无码网站yy| 激情亚洲的在线观看| 国产精品一区av在线| 国产免费av片无码永久免费| 亚洲中文字幕无码二区在线|