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

        ?

        基于以太坊私有鏈的數(shù)據(jù)存證與驗證服務(wù)

        2021-11-13 06:10:12楊春節(jié)高琪娟徐光翔
        合肥學院學報(綜合版) 2021年5期
        關(guān)鍵詞:以太哈希合約

        楊春節(jié),朱 軍,高琪娟,徐光翔

        (安徽農(nóng)業(yè)大學 a.信息化辦公室;b.信息與計算機學院,合肥 230036)

        0 引 言

        區(qū)塊鏈技術(shù)被視為繼云計算、物聯(lián)網(wǎng)、大數(shù)據(jù)之后的又一項顛覆性技術(shù),在本質(zhì)上是一種安全可靠的數(shù)據(jù)庫技術(shù)方案,區(qū)塊數(shù)據(jù)無法修改,所有歷史記錄數(shù)據(jù)永久保留是其重要特性。[1,2]當前主流的數(shù)據(jù)庫Oracle、SQL Server、Mysql等數(shù)據(jù)庫技術(shù)是信息系統(tǒng)的核心,解決了計算機信息處理過程中大量數(shù)據(jù)有效地組織、存儲、檢索和處理等方面的問題,但信息系統(tǒng)及數(shù)據(jù)庫管理工具可以任意修改數(shù)據(jù)庫中的數(shù)據(jù),由此帶來的數(shù)據(jù)安全問題也比較突出,數(shù)據(jù)泄露、SQL注入攻擊、數(shù)據(jù)庫違規(guī)操作等數(shù)據(jù)安全事件屢屢出現(xiàn)。在信息系統(tǒng)開發(fā)及應(yīng)用中,融合區(qū)塊鏈技術(shù)是提升數(shù)據(jù)安全的又一重要途徑,在信息系統(tǒng)數(shù)據(jù)管理模塊增加數(shù)據(jù)上鏈及數(shù)據(jù)驗證功能可以加強信息系統(tǒng)數(shù)據(jù)的安全管理和監(jiān)測。

        基于區(qū)塊鏈技術(shù)的數(shù)據(jù)存證與驗證公共服務(wù)鏈采用以太坊開源項目[3,4]進行基礎(chǔ)平臺建設(shè),運行具有普適性的數(shù)據(jù)存證與驗證智能合約[1,5,6,7],通過RPC服務(wù)[8]面向第三方信息系統(tǒng)提供數(shù)據(jù)上鏈及驗證接入服務(wù)。信息系統(tǒng)調(diào)用公共服務(wù)平臺的服務(wù)接口[9],實現(xiàn)應(yīng)用集成后即可擁有基于區(qū)塊鏈技術(shù)的數(shù)據(jù)存證與驗證能力。

        1 區(qū)塊鏈相關(guān)技術(shù)及應(yīng)用簡介

        1.1 區(qū)塊鏈

        區(qū)塊鏈是一個信息技術(shù)領(lǐng)域的術(shù)語。區(qū)塊鏈把數(shù)據(jù)分成不同的區(qū)塊,每個區(qū)塊通過特定的信息鏈接到上一區(qū)塊的后面,前后順連,呈現(xiàn)一套完整的數(shù)據(jù)。每個區(qū)塊的塊頭包含前一個區(qū)塊的哈希值,該值是對前區(qū)塊的塊頭進行哈希函數(shù)計算而得到。區(qū)塊之間都會由這樣的哈希值與先前的區(qū)塊環(huán)環(huán)相扣形成一個鏈條,存儲于其中的數(shù)據(jù)或信息,具有不可偽造、全程留痕、可以追溯、公開透明、集體維護等特征。[1]區(qū)塊鏈接示意如圖1。

        圖1 區(qū)塊鏈接示意圖

        根據(jù)應(yīng)用場景不同,區(qū)塊鏈可以分為公有鏈(Public Blockchain)、聯(lián)盟鏈(Consortium Blockchain)和私有鏈(Private Blockchain)。公有鏈是指全世界任何人都可以隨時進入系統(tǒng)中讀取數(shù)據(jù)、發(fā)送可確認交易、競爭記賬的區(qū)塊鏈。公有鏈通常被認為是完全去中心化的,沒有任何人或機構(gòu)可以控制或者篡改其中數(shù)據(jù)的讀寫。聯(lián)盟鏈是指由若干個機構(gòu)共同參與管理的區(qū)塊鏈,每個機構(gòu)都運行著一個或多個節(jié)點,其中的數(shù)據(jù)只允許系統(tǒng)內(nèi)不同的機構(gòu)進行讀寫和發(fā)送交易,并且共同來記錄交易數(shù)據(jù)。私有鏈是指其寫入權(quán)限是由某個組織和機構(gòu)控制的區(qū)塊鏈,參與的節(jié)點是有限和可控的,具有極快的交易速度、更好的隱私保護、更低的交易成本、不容易被惡意攻擊等優(yōu)點。

        1.2 智能合約

        智能合約是一種模塊化、可重用的自動執(zhí)行腳本,可替代第三方信任平臺實現(xiàn)交易雙方直接進行可信交易,這些交易可追溯且無法發(fā)生回滾。智能合約根據(jù)按照實際業(yè)務(wù)邏輯定義相應(yīng)規(guī)則,調(diào)用智能合約將會按照合約定義的交易規(guī)則來實現(xiàn)鏈上的交易,訪問鏈上信息。

        1.3 以太坊

        以太坊(Ethereum)是一個開源的有智能合約功能的公共區(qū)塊鏈平臺。依托以太坊開源項目可以很方便地搭建公有鏈、聯(lián)盟鏈和私有鏈,發(fā)布智能合約等。在以太坊平臺上可以使用Solidity語言作為智能合約開發(fā)語言[10],Remix在線開發(fā)平臺為開發(fā)工具。[10]

        1.4 Web3j

        web3j是一個輕量級、高度模塊化、響應(yīng)式、類型安全的 Java 和 Android 庫,用于與智能合約以及與以太坊網(wǎng)絡(luò)上的客戶端(節(jié)點)進行集成。[12]

        1.5 哈希算法(HASH)

        哈希算法將任意長度的二進制值映射為較短的固定長度的二進制值,這個二進制值稱為哈希值。哈希值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式,可以檢驗數(shù)據(jù)的完整性。[13]散列明文中任何改動都會產(chǎn)生不同的哈希值,要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的。

        2 系統(tǒng)設(shè)計與開發(fā)

        2.1 系統(tǒng)模型

        本系統(tǒng)依托以太坊開源項目搭建私有鏈,作為區(qū)塊鏈技術(shù)具體實現(xiàn)和應(yīng)用平臺,基于該平臺開發(fā)智能合約,實現(xiàn)數(shù)據(jù)存證與驗證功能,面向第三方信息系統(tǒng)提供數(shù)據(jù)存證與驗證服務(wù)。信息系統(tǒng)服務(wù)器端通過區(qū)塊鏈接口層調(diào)用智能合約,實現(xiàn)數(shù)據(jù)上鏈與驗證。整個系統(tǒng)由區(qū)塊鏈層、信息系統(tǒng)層、區(qū)塊鏈層組成。系統(tǒng)模型見圖2。

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

        區(qū)塊鏈層使用以太坊開源項目實現(xiàn),鑒于區(qū)塊鏈技術(shù)的特性,可以確保鏈上數(shù)據(jù)的安全性和不可篡改性。

        信息系統(tǒng)層是信息系統(tǒng)的原有架構(gòu),需要實現(xiàn)關(guān)鍵數(shù)據(jù)存證與驗證服務(wù)時,需要通過改造相應(yīng)模塊,借助區(qū)塊鏈接口層與區(qū)塊鏈層進行集成。信息系統(tǒng)與區(qū)塊鏈層集成時,信息系統(tǒng)的數(shù)據(jù)管理模塊在數(shù)據(jù)保存至數(shù)據(jù)庫的同時把該關(guān)鍵數(shù)據(jù)的HASH值、關(guān)鍵數(shù)據(jù)加密并轉(zhuǎn)換成十六進制后,通過線程技術(shù)上傳數(shù)據(jù)HASH值及密文的十六進制至區(qū)塊鏈,根據(jù)哈希算法的特性,可以實現(xiàn)可信數(shù)據(jù)存證;在數(shù)據(jù)查詢環(huán)節(jié),通過異步執(zhí)行的方式獲取區(qū)塊鏈中數(shù)據(jù)的HASH值,與信息系統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)HASH值進行比對實現(xiàn)數(shù)據(jù)驗證,監(jiān)測數(shù)據(jù)是否發(fā)生篡改及非法修改情況。同時,使用區(qū)塊鏈所有歷史記錄數(shù)據(jù)永久保留的特性可以從區(qū)塊鏈獲取區(qū)塊鏈中相應(yīng)數(shù)據(jù)的十六進制值,通過數(shù)據(jù)轉(zhuǎn)換及解密可以實現(xiàn)數(shù)據(jù)回溯。

        區(qū)塊鏈接口層(Web3j)[12,14,15]是第三方信息系統(tǒng)(JAVA)與區(qū)塊鏈網(wǎng)絡(luò)進行交互的“橋梁”,實現(xiàn)數(shù)據(jù)存證及驗證時請求及響應(yīng)數(shù)據(jù)的傳輸。

        2.2 智能合約設(shè)計

        智能合約是在區(qū)塊鏈網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)存證與驗證的關(guān)鍵,本文采用Solidity語言開發(fā)智能合約,主要涉及智能合約存證數(shù)據(jù)的結(jié)構(gòu)設(shè)計、存證函數(shù)與驗證函數(shù)的編寫。數(shù)據(jù)存證與驗證智能合約主要變量及函數(shù)、用于存證的自定義結(jié)構(gòu)類型(ProofContent)成員名稱及說明見表1、表2。

        表1 數(shù)據(jù)存證與驗證智能合約主要變量及函數(shù)

        表2 自定義結(jié)構(gòu)類型成員名稱及說明

        智能合約代碼如下:

        pragma solidity ^0.4.25;

        contract AhauProof {

        //合約功能:記錄數(shù)據(jù)憑證、檢驗數(shù)據(jù)修改情況

        //自定義的結(jié)構(gòu)類型

        struct ProofContent {

        address _from;

        string recordId; //系統(tǒng)名稱+表名+記錄ID

        string hash; //關(guān)鍵數(shù)據(jù)hash

        string data; //關(guān)鍵數(shù)據(jù)(json格式的加密數(shù)據(jù),支持驗證時解密)

        }

        //映射數(shù)據(jù)

        mapping(string =>ProofContent)private proofContents;

        string recordId;

        function setRecordId(string memory _recordId)public{

        recordId =_recordId;

        }

        function getRecordId()view public returns (string){

        return recordId;

        }

        event InsertEvn(string recordId ,string hash ,string data);

        //記錄上鏈

        function insertProof(string memory _recordId,string memory hash,string memory data)public {

        //recordId首次上鏈

        if (isEqual(proofContents[_recordId].data,"")){

        proofContents[_recordId].recordId =recordId;

        proofContents[_recordId].hash =hash;

        proofContents[_recordId].data =data;

        } else {

        //recordId再次上鏈時

        proofContents[_recordId].recordId =recordId;

        proofContents[_recordId].hash

        string(constatString(proofContents[_recordId].hash,hash));

        proofContents[_recordId].data

        string(constatString(proofContents[_recordId].data,data));

        }

        emit InsertEvn(recordId,proofContents[_recordId].hash,proofContents[_recordId].data);

        }

        //查看鏈上記錄-hash數(shù)據(jù)

        function viewHash()public view returns(string){

        return proofContents[recordId].hash;

        }

        //查看鏈上記錄-data數(shù)據(jù)

        function viewData()public view returns(string memory){

        return proofContents[recordId].data;

        }

        //字符串比較

        function isEqual(string memory a,string memory b)public pure returns (bool){

        bytes32 hashA =keccak256(abi.encode(a));

        bytes32 hashB =keccak256(abi.encode(b));

        return hashA ==hashB;

        }

        //字符串連接

        function constatString(string memory a,string memory b)private pure returns(bytes memory){

        bytes memory str1 =bytes(a);

        bytes memory str2 =bytes(b);

        string memory ret =new string(str1.length+str2.length+1);

        bytes memory bret =bytes(ret);

        uint k =0;

        for (uint i=0;i

        bret[k++] =“&”;

        for (i=0;i

        return bret;

        }

        }

        2.3 信息系統(tǒng)與區(qū)塊鏈集成

        信息系統(tǒng)開發(fā)一般采用分層開發(fā)模式,如使用JAVA語言開發(fā)應(yīng)用程序時常用的SSH框架一般分為實體層、數(shù)據(jù)層、業(yè)務(wù)邏輯層、控制層。為了盡量減少信息系統(tǒng)與區(qū)塊鏈集成時對業(yè)務(wù)邏輯的影響,可以選擇在業(yè)務(wù)邏輯層或數(shù)據(jù)層的數(shù)據(jù)增刪改業(yè)務(wù)功能完成后,新開線程完成數(shù)據(jù)上鏈,以避免線程阻塞,影響程序運行效率[16,17]。數(shù)據(jù)驗證及變動歷史查詢一般在業(yè)務(wù)邏輯層開發(fā),面向前端界面提供調(diào)用服務(wù),而在前端界面中則通過Ajax異步調(diào)用方式進行集成,以避免調(diào)用區(qū)塊鏈的接口服務(wù)時影響網(wǎng)頁加載速度。JAVA應(yīng)用程序與區(qū)塊鏈集成后示意圖如圖3所示。

        圖3 JAVA應(yīng)用程序與區(qū)塊鏈集成示意圖

        2.4 功能測試

        按照2.3所述思路進行系統(tǒng)集成后,功能測試情況如下:

        (1)數(shù)據(jù)上鏈存證:記錄新增及修改功能正常,數(shù)據(jù)保存的同時實現(xiàn)相關(guān)數(shù)據(jù)上鏈存證。

        (2)數(shù)據(jù)驗證:在數(shù)據(jù)查詢界面中,鏈上驗證異步運行,網(wǎng)頁加載速度正常。當從數(shù)據(jù)庫中直接更改某一記錄值時,鏈上驗證則不通過,如圖4所示。

        圖4 鏈上驗證示意圖

        (3)數(shù)據(jù)歷史溯源:信息系統(tǒng)中數(shù)據(jù)的正常修改歷史可以從鏈上獲取。

        3 總 結(jié)

        通過信息系統(tǒng)與區(qū)塊鏈技術(shù)集成可以加強信息系統(tǒng)運行過程中對數(shù)據(jù)非法篡改或者通過數(shù)據(jù)庫非正常修改數(shù)據(jù)行為的監(jiān)測,有效提升信息系統(tǒng)的數(shù)據(jù)安全能力。但在系統(tǒng)開發(fā)及測試的過程中,我們發(fā)現(xiàn)即使采用效率較高的私有鏈技術(shù),區(qū)塊鏈的數(shù)據(jù)存取效率與傳統(tǒng)數(shù)據(jù)庫系統(tǒng)仍存在著較大的差距,研究、完善區(qū)塊鏈的在信息系統(tǒng)高并發(fā)、大規(guī)模集群應(yīng)用需求下的技術(shù)顯得至關(guān)重要。

        猜你喜歡
        以太哈希合約
        以太極為旗,開啟新時代“黃河大合唱”
        少林與太極(2023年7期)2023-08-25 05:27:52
        車易鏈:做汽車業(yè)的“以太坊”
        汽車觀察(2018年9期)2018-10-23 05:46:24
        基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
        基于維度分解的哈希多維快速流分類算法
        計算機工程(2015年8期)2015-07-03 12:20:04
        百通推出入門級快速工業(yè)以太網(wǎng)絡(luò)交換器系列
        以太互聯(lián) 高效便捷 經(jīng)濟、可靠、易用的小型可編程控制器
        自動化博覽(2014年6期)2014-05-29 09:40:16
        基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗證算法
        計算機工程(2014年6期)2014-02-28 01:25:40
        一種基于Bigram二級哈希的中文索引結(jié)構(gòu)
        合約必守,誰能例外!——對“情勢變更”制度不可寄于過高期望
        亚洲AV无码久久久一区二不卡| 免费观看a级毛片| 国产精品99久久久久久猫咪| 国产午夜福利短视频| 亚洲欧美久久婷婷爱综合一区天堂| 宅男天堂亚洲一区二区三区 | 欧美粗大无套gay| 日韩精品永久免费播放平台| 美女视频在线观看一区二区三区| 精人妻无码一区二区三区| 亚洲人成色777777老人头| 毛片av在线播放亚洲av网站| 亚洲中文字幕一二区精品自拍| 午夜无码一区二区三区在线观看| 人妻av中文字幕无码专区| 久久久国产精品免费无卡顿| 日本av一区二区三区四区| 久久不见久久见免费视频6| 久久精品人人做人人爽电影蜜月| 亚洲va在线va天堂va四虎| 久久久精品国产av麻豆樱花| 中文字幕亚洲综合久久菠萝蜜| 香蕉视频www.5.在线观看| 亚洲色欲色欲www成人网| 国产一区二区三免费视频| 亚洲av综合永久无码精品天堂| 国产成人精品精品欧美| 日本一区二区三区在线视频观看| 亚洲中文字幕午夜精品| 无码综合天天久久综合网| 最新亚洲无码网站| 一区二区二区三区亚洲| 国产又色又爽又黄刺激在线视频| 在线观看视频一区| 女同欲望一区二区三区| 无码h黄肉3d动漫在线观看| 大学生被内谢粉嫩无套| 青青青伊人色综合久久| 免费国产自拍在线观看| 久久男人av资源网站无码| 亚洲AV无码乱码一区二区三区|