• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      韓港成 康曉風(fēng) 劉禹

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

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

      中圖分類(lèi)號(hào): TP311.52 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.05.034

      本文著錄格式:韓港成,康曉風(fēng),劉禹,等. 基于區(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ù)庫(kù),區(qū)塊鏈?zhǔn)怯擅艽a學(xué)生成的一串?dāng)?shù)據(jù)塊,每個(gè)數(shù)據(jù)塊都包含網(wǎng)絡(luò)交易信息,這些區(qū)塊用來(lái)驗(yàn)證信息的有效性并生成下一個(gè)區(qū)塊。區(qū)塊鏈去中心化、開(kāi)放性、不可撤銷(xiāo)、不可篡改,并且具有很高的加密安全性。利用區(qū)塊鏈的這些特點(diǎn)能夠解決信任問(wèn)題、降低信任成本。

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

      1 ?以太坊介紹

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

      2 ?智能合約介紹

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

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

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

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

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

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

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

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

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

      (3)余額接口:該合約接口負(fù)責(zé)處理用戶在個(gè)人中心查詢(xún)自己的錢(qián)包余額。

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

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

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

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

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

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

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

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

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

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

      5 ?結(jié)語(yǔ)

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

      參考文獻(xiàn)

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

      [2] 陳亞飛.基于區(qū)塊鏈智能合約的倉(cāng)單交易平臺(tái)研究與實(shí)現(xiàn)[J].鄭州大學(xué)碩士論文, 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] 邵奇峰, 金澈清, 錢(qián)衛(wèi)寧, 等. 區(qū)塊鏈技術(shù): 架構(gòu)及進(jìn)展[J]. 計(jì)算機(jī)學(xué)報(bào), 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ù)指南. 北京: 機(jī)械工業(yè)出版社, 2016: 102-103

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

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

      [9] 安慶文. 基于區(qū)塊鏈的去中心化交易關(guān)鍵技術(shù)研究及應(yīng)用[D]. 東華大學(xué), 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] 魯靜, 宋斌, 向萬(wàn)紅, et al. 基于區(qū)塊鏈的電力市場(chǎng)交易結(jié)算智能合約[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2017, 26(12): 43-50.

      猜你喜歡
      智能合約區(qū)塊鏈
      農(nóng)產(chǎn)品供應(yīng)鏈金融信用體系框架設(shè)計(jì)
      基于區(qū)塊鏈技術(shù)的去中心化數(shù)字出版平臺(tái)研究
      區(qū)塊鏈技術(shù)在互聯(lián)網(wǎng)保險(xiǎn)行業(yè)的應(yīng)用探討
      保險(xiǎn)企業(yè)的區(qū)塊鏈技術(shù)應(yīng)用方向選擇研究
      區(qū)塊鏈技術(shù)在金融領(lǐng)域的應(yīng)用與前景研究
      區(qū)塊鏈技術(shù)的應(yīng)用價(jià)值分析
      商情(2016年40期)2016-11-28 11:24:12
      “區(qū)塊鏈”的茍且、詩(shī)和遠(yuǎn)方
      基于區(qū)塊鏈技術(shù)的數(shù)字貨幣與傳統(tǒng)貨幣辨析
      區(qū)塊鏈技術(shù)在會(huì)計(jì)中的應(yīng)用展望
      智能合約與金融合約
      商(2016年6期)2016-04-20 17:50:36
      北辰区| 会同县| 平乐县| 潮安县| 瑞丽市| 郎溪县| 德钦县| 霍州市| 永川市| 大荔县| 沁源县| 昌图县| 喀喇| 濮阳县| 侯马市| 赤水市| 天台县| 宜川县| 临清市| 沭阳县| 石台县| 海原县| 龙岩市| 新巴尔虎左旗| 大港区| 泰兴市| 临漳县| 宿州市| 莱州市| 秭归县| 碌曲县| 泗水县| 右玉县| 普兰店市| 铜川市| 阳春市| 泌阳县| 巴林右旗| 东宁县| 沽源县| 共和县|