• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于以太坊的智能合約評(píng)估系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    2021-07-03 07:52:26上海計(jì)算機(jī)軟件技術(shù)開(kāi)發(fā)中心陶平
    區(qū)域治理 2021年5期
    關(guān)鍵詞:以太后臺(tái)調(diào)用

    上海計(jì)算機(jī)軟件技術(shù)開(kāi)發(fā)中心 陶平

    一、引言

    隨著區(qū)塊鏈技術(shù)的蓬勃發(fā)展以及不斷推出的鼓勵(lì)發(fā)展并使用區(qū)塊鏈技術(shù)的國(guó)家政策,越來(lái)越多的傳統(tǒng)企業(yè)和互聯(lián)網(wǎng)企業(yè)也逐漸開(kāi)始嘗試將現(xiàn)有的業(yè)務(wù)與區(qū)塊鏈技術(shù)相融合。通過(guò)區(qū)塊鏈的獨(dú)有的特性來(lái)補(bǔ)足或是完善現(xiàn)有業(yè)務(wù)的不足。最常見(jiàn)的方式便是通過(guò)使用智能合約來(lái)實(shí)現(xiàn)并代替原有的業(yè)務(wù)處理系統(tǒng)。以太坊中為用戶(hù)提供了一種名為EVM(Ethereum Virtual Machinecode)的腳本語(yǔ)言來(lái)構(gòu)建智能合約。智能合約是以太坊中核心的核心。我們通常將智能合約看作是區(qū)塊鏈上的一段代碼,與以太坊賬戶(hù)類(lèi)似,它同樣在以太坊中擁有自己唯一的地址。當(dāng)用戶(hù)向合約的地址里發(fā)起一筆交易后,該合約就被執(zhí)行,然后根據(jù)合約中事先定義好的代碼及交易發(fā)起時(shí)攜帶的信息,最終返回執(zhí)行結(jié)果。本研究通過(guò)將以太坊智能合約驗(yàn)證工具M(jìn)ythx與傳統(tǒng)的基于Springboot架構(gòu)的系統(tǒng)相結(jié)合以此提供操作便捷、便于查看的基于以太坊的智能合約評(píng)估系統(tǒng)。

    二、開(kāi)發(fā)技術(shù)與工具

    開(kāi)發(fā)環(huán)境:Windows10,JAVA JDK1.8,Node v10, Go。

    服務(wù)器環(huán)境:CentOS 7.3。

    WEB服務(wù)器:前端Nginx,后端Tomcat。

    數(shù)據(jù)庫(kù)服務(wù)器:MySQL 5.7。

    開(kāi)發(fā)工具:IntelliJ IDEA 2020.3,Visual Studio Code。

    開(kāi)發(fā)技術(shù):Springboot 3.2、MyBatis、Vuejs、ElementUI、Mythx。

    三、關(guān)鍵技術(shù)研究

    (一)Springboot框架研究

    Springboot框架是Java平臺(tái)上的一個(gè)開(kāi)源應(yīng)用框架,它提供了一整套的技術(shù)解決方案,比如通過(guò)利用控制反轉(zhuǎn)(IOC)的核心特性結(jié)合依賴(lài)注入的方式實(shí)現(xiàn)控制反轉(zhuǎn),來(lái)達(dá)到管理對(duì)象生命周期容器化的目的;又比如通過(guò)面向切面編程(AOP)的方式進(jìn)行聲明式的事務(wù)管理,同時(shí)整合多種數(shù)據(jù)持久化的方式對(duì)赤計(jì)劃數(shù)據(jù)訪(fǎng)問(wèn)進(jìn)行管控;它的數(shù)據(jù)訪(fǎng)問(wèn)框架解決了開(kāi)發(fā)人員在應(yīng)用程序中使用數(shù)據(jù)庫(kù)時(shí)遇到的常見(jiàn)困難,同時(shí)還可以與原Spring的事務(wù)管理一起使用,為數(shù)據(jù)訪(fǎng)問(wèn)提供了靈活的抽象方式。

    在SpringBoot框架中有兩個(gè)非常重要的宗旨:一是開(kāi)箱即用,二是約定優(yōu)于配置。所謂開(kāi)箱即用,就是指在研發(fā)中,開(kāi)發(fā)人員可以在項(xiàng)目的pom定義文件中增加所需要的依賴(lài)包,之后使用對(duì)應(yīng)的注解方式來(lái)取代原先復(fù)雜的配置文件。這一特性使得開(kāi)發(fā)人員極大程度地丟掉了復(fù)雜的配置工作以及依賴(lài)的管理工作的包袱,更加專(zhuān)注于實(shí)際的業(yè)務(wù)功能。而約定優(yōu)于配置,是一種由SpringBoot本身來(lái)配置目標(biāo)結(jié)構(gòu),由開(kāi)發(fā)者在結(jié)構(gòu)中添加信息的軟件設(shè)計(jì)的方式。這一特性盡管降低了程序開(kāi)發(fā)過(guò)程中的靈活性,也增加了不少故障定位的難度,但總體來(lái)說(shuō)還是利大于弊,減少了開(kāi)發(fā)人員需要做出決定的數(shù)量,同時(shí)極大地減少了的XML文件的配置及管理,而且還將代碼編譯、測(cè)試和打包等環(huán)節(jié)工作實(shí)現(xiàn)了自動(dòng)化。

    (二)Mythx智能合約驗(yàn)證工具

    Mythx是一個(gè)基于符號(hào)執(zhí)行技術(shù)的以太坊智能合約安全工具,其預(yù)置的檢測(cè)模塊對(duì)于以太坊和其他基于EVM的區(qū)塊鏈智能合約中的一些SWC(Smart Contract Weakness Classification)安全漏洞能夠有效地檢測(cè)出來(lái),為智能合約的安全性提供了安全保障及深入的分析報(bào)告。

    符號(hào)執(zhí)行使用不執(zhí)行程序使用符號(hào)值來(lái)代替具體變量,來(lái)模擬每個(gè)路徑來(lái)產(chǎn)生每一個(gè)執(zhí)行的可能性,將執(zhí)行語(yǔ)句的結(jié)果整合成若干條數(shù)學(xué)表達(dá)式。對(duì)某結(jié)果的數(shù)學(xué)表達(dá)式進(jìn)行求解,就能獲得到達(dá)該結(jié)果的路徑。將產(chǎn)生漏洞的條件設(shè)置為程序執(zhí)行的結(jié)果,降低分析程序的難度。

    四、系統(tǒng)設(shè)計(jì)

    (一)系統(tǒng)架構(gòu)圖

    基于以太坊的智能合約評(píng)估系統(tǒng)主要分為前臺(tái)、后臺(tái)以及數(shù)據(jù)三個(gè)層面。在后臺(tái)系統(tǒng)中角色又主要分為了管理員及用戶(hù),兩種不同的角色分別對(duì)應(yīng)不同功能。系統(tǒng)架構(gòu)圖如圖1所示。

    圖1 系統(tǒng)架構(gòu)圖

    其中合約審計(jì)模塊的功能模塊包括了:

    合約審計(jì):以太坊Solidity智能合約的安全審計(jì)。

    TPS測(cè)試:針對(duì)以太坊公鏈的TPS進(jìn)行測(cè)試。

    (二)合約審計(jì)模塊設(shè)計(jì)

    合約審計(jì)模塊作為該系統(tǒng)中核心的功能模塊,通過(guò)基于Springboot所構(gòu)建的后臺(tái)主系統(tǒng)與基于Go語(yǔ)言及Mythx驗(yàn)證工具所構(gòu)建的HTTP服務(wù)進(jìn)行內(nèi)部通信調(diào)用。

    合約審計(jì)流程如下:

    (1)后臺(tái)系統(tǒng)通過(guò)前端頁(yè)面?zhèn)魅氲腟olidity智能合約文本或者是文件,創(chuàng)建審計(jì)記錄并保存在MySQL中,同時(shí)調(diào)用Go服務(wù)將所需審計(jì)的智能合約內(nèi)容交由其進(jìn)行處理。

    (2)Go服務(wù)通過(guò)調(diào)用CMD命令使用Mythx命令行工具對(duì)進(jìn)行智能合約的安全監(jiān)測(cè),同時(shí)Go服務(wù)會(huì)將Mythx工具輸出的結(jié)果保存至Redis中。并將保存驗(yàn)證結(jié)果所使用的Redis Key提前返回給后臺(tái)主系統(tǒng)。

    (3)后臺(tái)系統(tǒng)會(huì)定時(shí)輪詢(xún)Redis,根據(jù)Go服務(wù)返回的Redis Key查看當(dāng)前Mythx驗(yàn)證是否已經(jīng)完成。

    合約設(shè)計(jì)流程圖如圖2所示。

    圖2 合約審計(jì)流程圖

    (三)數(shù)據(jù)庫(kù)的設(shè)計(jì)

    本系統(tǒng)的所使用的數(shù)據(jù)庫(kù)分別是關(guān)系型數(shù)據(jù)庫(kù)MySQL和Redis緩存數(shù)據(jù)庫(kù)。其中MySQL數(shù)據(jù)庫(kù)作為后臺(tái)系統(tǒng)的核心數(shù)據(jù)庫(kù),保存所有業(yè)務(wù)實(shí)體數(shù)據(jù)。Redis保存臨時(shí)的合約檢測(cè)結(jié)果。

    為了實(shí)現(xiàn)該系統(tǒng)各類(lèi)數(shù)據(jù)的持久化存儲(chǔ),設(shè)計(jì)MySQL數(shù)據(jù)庫(kù)主要包括了:評(píng)估維度表、評(píng)估類(lèi)型表、評(píng)估標(biāo)準(zhǔn)表、評(píng)估范疇表、評(píng)估范疇與評(píng)估維度關(guān)聯(lián)關(guān)系表、評(píng)估文件表、評(píng)估報(bào)告表、評(píng)估報(bào)告詳情表、合約審計(jì)表。

    五、系統(tǒng)實(shí)現(xiàn)

    (1)前后端數(shù)據(jù)通信實(shí)現(xiàn)。本系統(tǒng)采用Ajax請(qǐng)求的形式作為前后端數(shù)據(jù)通信的主要方式。數(shù)據(jù)傳輸?shù)母袷浇y(tǒng)一采用json格式,便于前后端處理。前端Vuejs構(gòu)建的頁(yè)面通過(guò)調(diào)用axios組件,并對(duì)其進(jìn)行一定程度的封裝處理,以滿(mǎn)足對(duì)后端系統(tǒng)接口返回的數(shù)據(jù)進(jìn)行業(yè)務(wù)處理和異常處理。后端系統(tǒng)通過(guò)內(nèi)置Tomcat服務(wù)器進(jìn)行部署,并結(jié)合Servlet實(shí)現(xiàn)Http的數(shù)據(jù)接口請(qǐng)求調(diào)用。

    (2)Go服務(wù)功能實(shí)現(xiàn)。合約審計(jì)功能作為相對(duì)獨(dú)立的業(yè)務(wù)功能,主要通過(guò)命令行形式對(duì)Mythx工具進(jìn)行調(diào)用,由于Mythx工具對(duì)于Linux系統(tǒng)環(huán)境的依賴(lài),為了便于系統(tǒng)整體的部署,避免不必要的沖突,將合約審計(jì)功能單獨(dú)通過(guò)Go服務(wù)部署在Linux環(huán)境下。Go服務(wù)同樣提供Http形式的接口,便于后臺(tái)系統(tǒng)進(jìn)行調(diào)用,同時(shí)調(diào)用本地的Mythx命令,傳入相關(guān)參數(shù),完成智能合約的審計(jì)功能。

    調(diào)用Mythx代碼如下:

    六、結(jié)語(yǔ)

    針對(duì)目前現(xiàn)有的智能合約驗(yàn)證工具的使用便捷性存在的不足,本文通過(guò)研究Springboot框架以及Mythx智能合約驗(yàn)證工具設(shè)計(jì)并開(kāi)發(fā)了基于Web的以太坊智能合約評(píng)估系統(tǒng),詳細(xì)討論了如何將Springboot框架技術(shù)、Go服務(wù)、Mythx工具、MySQL數(shù)據(jù)庫(kù)、Redis緩存數(shù)據(jù)庫(kù)和Vuejs等技術(shù)進(jìn)行融合構(gòu)建、設(shè)計(jì)并實(shí)現(xiàn)一個(gè)操作便捷并且便于查看的智能合約評(píng)估系統(tǒng)。后續(xù)系統(tǒng)還可以進(jìn)行改進(jìn):增加其他更多類(lèi)型的智能合約驗(yàn)證工具,如基于形式化驗(yàn)證,靜態(tài)分析等,完善智能合約的審計(jì)全面性及可靠性。

    猜你喜歡
    以太后臺(tái)調(diào)用
    以太極為旗,開(kāi)啟新時(shí)代“黃河大合唱”
    少林與太極(2023年7期)2023-08-25 05:27:52
    核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    車(chē)易鏈:做汽車(chē)業(yè)的“以太坊”
    后臺(tái)暗戀
    基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
    前臺(tái)、后臺(tái)精彩花絮停不了
    百通推出入門(mén)級(jí)快速工業(yè)以太網(wǎng)絡(luò)交換器系列
    以太互聯(lián) 高效便捷 經(jīng)濟(jì)、可靠、易用的小型可編程控制器
    電力調(diào)度中后臺(tái)監(jiān)控系統(tǒng)的應(yīng)用
    河南科技(2014年11期)2014-02-27 14:10:03
    镶黄旗| 时尚| 白银市| 丁青县| 镇赉县| 泸州市| 桐庐县| 太仓市| 乐业县| 望城县| 汉川市| 响水县| 揭阳市| 涪陵区| 堆龙德庆县| 澄迈县| 九寨沟县| 清新县| 五原县| 安图县| 容城县| 紫云| 西林县| 冷水江市| 洛阳市| 昌图县| 同江市| 灯塔市| 伊春市| 保德县| 长春市| 鸡泽县| 高雄市| 正宁县| 濮阳市| 雷州市| 泰兴市| 沿河| 曲周县| 三明市| 论坛|