• 
    

    
    

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

      區(qū)塊鏈上的通用錢包設(shè)計與實現(xiàn)

      2018-02-01 12:52:40唐屹陳家豪吳嘉熙
      軟件導(dǎo)刊 2018年1期
      關(guān)鍵詞:區(qū)塊鏈

      唐屹+陳家豪+吳嘉熙

      摘要:區(qū)塊鏈技術(shù)是近年來興起的一類計算機應(yīng)用技術(shù),不同的基于區(qū)塊鏈的密碼貨幣的產(chǎn)生,引發(fā)了對密碼貨幣的管理問題?,F(xiàn)有的專用錢包模式要求使用多幣種的用戶下載不同錢包進行資產(chǎn)管理?;谌龑蛹軜?gòu)思想,設(shè)計了一個通用錢包的實現(xiàn)架構(gòu),以實現(xiàn)對多種密碼貨幣的管理。通過所實現(xiàn)的通用錢包原型,驗證了通用錢包架構(gòu)的可行性。

      關(guān)鍵詞:區(qū)塊鏈;密碼貨幣;通用錢包

      DOIDOI:10.11907/rjdk.172067

      中圖分類號:TP319

      文獻標(biāo)識碼:A文章編號文章編號:1672-7800(2018)001-0205-03

      Abstract:The blockchain is the emerging application technique in recent years. The occurrences of various blockchain based cryptocurrencies introduce the cryptocurrency management. Cryptocurrency users need to maintain different special wallets to manage their different cryptocurrencies. Based on three-tier architecture, the structure of a general wallet, which can be used tomanages different cryptocurrencies in a single system, is proposed. We have implemented a general wallet prototype and validated the proposed structure.

      Key Words:blockchain; cryptocurrency; general wallet

      0引言

      以比特幣為代表的密碼貨幣基于區(qū)塊鏈技術(shù),通過分布式系統(tǒng)的共識確認(rèn)交易信息,以明文形式記錄所有交易數(shù)據(jù)并保存于去中心化的記錄節(jié)點中,形成分布式賬本[1-4]。這些基于區(qū)塊鏈的密碼貨幣使用密碼技術(shù)防止交易數(shù)據(jù)的篡改和偽造,同時也支持對任意用戶交易信息的查詢。

      密碼貨幣的主要特征之一是公開所有用戶資產(chǎn),所有人都可以查找任意用戶的余額?,F(xiàn)有的密碼貨幣的操作依賴于專用錢包,由于不同密碼貨幣具有不同的運作細節(jié)和方式,使得使用不同密碼貨幣的單個用戶需要維護多個不同的專用錢包,以管理其資產(chǎn)。因此,有必要設(shè)計一種通用錢包,以實現(xiàn)對用戶擁有的多種密碼貨幣的管理。

      1密碼貨幣錢包

      密碼貨幣錢包最基本的功能是查詢貨幣余額和收付貨幣即交易轉(zhuǎn)賬。一般由于效率的原因,錢包并不會下載密碼貨幣對應(yīng)的整個分布式賬本數(shù)據(jù),而是連接到一個代理系統(tǒng),讓代理系統(tǒng)處理余額查詢和交易轉(zhuǎn)賬等請求,并將響應(yīng)返回給用戶,從而避免了區(qū)塊鏈的規(guī)模負(fù)載,使手機客戶端等輕量級終端也可以正常進行錢包操作。

      密碼貨幣的專用錢包通過遠程過程(RPC)調(diào)用實現(xiàn)用戶與密碼貨幣網(wǎng)絡(luò)的交互,其分為RPC客戶端與RPC服務(wù)器兩部分,交互時使用TLS協(xié)議加密通訊,以保證數(shù)據(jù)安全[5]。RPC服務(wù)器即為該密碼貨幣網(wǎng)絡(luò)中的任意節(jié)點,它提供了一組特定接口,包括用戶查賬、轉(zhuǎn)賬甚至更高級的部署智能合約等,等待并響應(yīng)RPC客戶端請求。RPC客戶端定義了一組面向前端的函數(shù),它根據(jù)函數(shù)要實現(xiàn)的功能,向給定的RPC服務(wù)器發(fā)送相應(yīng)請求信息。

      通用錢包支持不同類型密碼貨幣的管理,因此需要屏蔽各RPC的技術(shù)細節(jié),通過引入邏輯層,將用戶對具體貨幣的訪問引流到給定的密碼貨幣網(wǎng)絡(luò)。

      2通用錢包設(shè)計

      2.1體系架構(gòu)

      圖1展示了本文設(shè)計的通用錢包,其體系結(jié)構(gòu)自頂而下分為3層:①用戶界面層。完成用戶請求的發(fā)送以及響應(yīng)數(shù)據(jù)的顯示,為用戶提供一種交互式操作的界面。由于使用了AngularJS框架,其運行環(huán)境可以是桌面PC,也可以是智能移動設(shè)備;②業(yè)務(wù)邏輯層。針對具體的用戶請求,實現(xiàn)錢包數(shù)據(jù)的業(yè)務(wù)邏輯處理;③數(shù)據(jù)訪問層。完成對區(qū)塊鏈系統(tǒng)記賬節(jié)點的請求訪問,實現(xiàn)對分布式賬本的訪問操作。

      需要注意的是,業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層并不要求與用戶界面層位于同一個硬件系統(tǒng),這兩層可以在另外的設(shè)備中以代理服務(wù)器的形式實現(xiàn),從而使用戶界面可以更加輕量化。

      錢包所涉及的密碼貨幣網(wǎng)絡(luò)由三元組定義,其中name為用戶自定義的貨幣名稱;network描述密碼學(xué)貨幣網(wǎng)絡(luò)類型,目前的可選值包括BTC(比特幣網(wǎng)絡(luò))、Ethereum(用戶以太坊網(wǎng)絡(luò))等;address表示對應(yīng)密碼貨幣系統(tǒng)的RPC服務(wù)器節(jié)點地址。

      根據(jù)錢包體系架構(gòu),錢包用戶通過用戶界面發(fā)送請求,請求可以同時發(fā)送多個,邏輯層根據(jù)請求中的network和address生成數(shù)據(jù)訪問層的請求內(nèi)容;數(shù)據(jù)訪問層發(fā)送請求并接收來自密碼貨幣層的響應(yīng);收到響應(yīng)后,數(shù)據(jù)訪問層整理并轉(zhuǎn)碼數(shù)據(jù);經(jīng)業(yè)務(wù)邏輯層傳輸,用戶界面層顯示數(shù)據(jù)給用戶。

      2.2數(shù)據(jù)交換描述

      JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換語言,采用完全獨立于語言的文本格式,易于閱讀與編寫,同時也易于機器解析與生成。本文使用JSON格式的數(shù)據(jù)完成層次間的基本數(shù)據(jù)交換。

      (1)用戶界面層。用戶界面層實現(xiàn)與業(yè)務(wù)邏輯層的數(shù)據(jù)交換,包含請求和響應(yīng)兩類數(shù)據(jù)。

      請求數(shù)據(jù)格式為{“network”:“”,“method”:“params”,“address”:“”},其中network、address的內(nèi)容來自密碼貨幣網(wǎng)絡(luò)三元組,在用戶不提供address的情況下,會默認(rèn)連接到公鏈上的RPC節(jié)點,method字段為通用錢包操作標(biāo)識,params值對應(yīng)執(zhí)行操作需要用到的參數(shù)。

      響應(yīng)數(shù)據(jù)格式為{“data”:“”,“error”:“”}。其中的data為來自數(shù)據(jù)訪問層的結(jié)果,若返回結(jié)果中有錯誤,則error描述該錯誤。

      (2)業(yè)務(wù)邏輯層。業(yè)務(wù)邏輯層完成以下基本功能:①完成對用戶請求的解析(包括頭部和內(nèi)容);②轉(zhuǎn)發(fā)用戶請求到目標(biāo)網(wǎng)絡(luò)。當(dāng)接收到界面層請求時,首先根據(jù)界面層請求中的network值決定調(diào)用哪種RPC客戶端,然后查看對應(yīng)的RPC客戶端是否與節(jié)點address建立了連接。若已連接,則調(diào)用相應(yīng)RPC客戶端執(zhí)行用戶請求,否則先建立連接,在建立連接過程中發(fā)生任何錯誤都會立刻終止執(zhí)行并返回錯誤給用戶。同時將通用錢包的操作轉(zhuǎn)化為特定密碼貨幣網(wǎng)絡(luò)上的錢包操作。

      (3)數(shù)據(jù)訪問層。數(shù)據(jù)訪問層主要由RPC客戶端構(gòu)成,負(fù)責(zé)與分布式賬本節(jié)點的RPC服務(wù)器端通信,并作一些必要的數(shù)據(jù)轉(zhuǎn)換。RPC客戶端與RPC服務(wù)器端之間可定義的通訊語法如下:

      請求:{“jsonrpc”:“”,“method”:“”,“params”:“”,“id”:“”}

      在請求字段中,jsonrpc代表rpc通信標(biāo)準(zhǔn)的版本號,通常為2.0。method的值為RPC服務(wù)器提供的一組方法,它嚴(yán)格按照RPC服務(wù)器端的定義,例如同樣為查詢余額,比特幣中RPC服務(wù)器端提供的接口函數(shù)名為get_balance,而以太坊中則為getBalance。數(shù)據(jù)訪問層請求中的method與用戶界面層中的method不同,這里為密碼學(xué)貨幣網(wǎng)絡(luò)中RPC服務(wù)器端定義好的,不可修改,只能按照指定字段調(diào)用。params為解析器轉(zhuǎn)換后的用戶參數(shù),它能被目標(biāo)網(wǎng)絡(luò)識別,與用戶界面層中的params類似,但沒有作為method的值而是單成為一個鍵值對。id為隨機值,用作區(qū)分響應(yīng)。

      響應(yīng):{“data”:“”,“error”:“”,“id”:“”}

      響應(yīng)字段中,data為遠程調(diào)用的方法返回的結(jié)果,如果發(fā)生錯誤則值為nul;error字段描述錯誤發(fā)生時的錯誤詳情;id為相應(yīng)請求的id值。

      3原型實現(xiàn)

      基于實驗室環(huán)境搭建的比特幣網(wǎng)絡(luò)和以太坊平臺實現(xiàn)了一個通用錢包,支持比特幣和以太幣的管理。該通用錢包支持比特幣的余額查詢(balance)、查看未花費輸出(utxo['unspend'])、發(fā)送簽名交易(rawtx)、查看區(qū)塊交易信息(txdata)、查看當(dāng)前區(qū)塊高度(currentBlock),同時也支持以太幣的余額查詢(balance)、發(fā)送簽名交易(rawtx)、查看區(qū)塊交易信息(txdata)、查看gas價格(estimatedGas)、查看當(dāng)前區(qū)塊高度(CurrentBlock)等操作。本文以余額查詢和轉(zhuǎn)賬操作為例說明所實現(xiàn)的原型。

      3.1余額查詢

      用戶若想查看某密碼貨幣的余額,需要在用戶界面層導(dǎo)入其私鑰文件,以解鎖錢包功能。用戶界面層會依據(jù)文件格式自動推導(dǎo)出文件對應(yīng)的密碼貨幣網(wǎng)絡(luò)以及密碼貨幣地址,例如用戶導(dǎo)入了比特幣網(wǎng)絡(luò)的wif文件,錢包則解鎖比特幣的功能并自動推導(dǎo)出與文件相應(yīng)的地址,然后推送請求,邏輯層根據(jù)network字段將請求交給對應(yīng)的數(shù)據(jù)訪問層處理,得到返回值,最后處理返回值并響應(yīng)用戶[6]。

      假設(shè)用戶Alice同時擁有比特幣和以太幣,她想查詢對應(yīng)金額,于是把比特幣私鑰文件BSK和以太幣私鑰文件ESK導(dǎo)入錢包,用戶界面層接收導(dǎo)入的私鑰,分別調(diào)用bitcore.PrivateKey(BPK).toAddress()和ethereumjs.privateToAddress(EPK)兩個函數(shù),進行錢包地址轉(zhuǎn)化。此處是把用戶私鑰轉(zhuǎn)換成對應(yīng)密碼貨幣網(wǎng)絡(luò)中的賬戶地址,自動調(diào)用getBalance()顯示兩個地址各自的余額,余額數(shù)據(jù)的顯示界面如圖2所示。

      依據(jù)該頁面,可以看到根據(jù)私鑰文件轉(zhuǎn)化出來的錢包地址和查詢得到的余額:比特幣地址“mgMCdTHJNPVYmBcPJvUZV8EcsUVGUQT7gw”的余額為1 200個比特幣,以太坊地址“0xdf5d17e416eff3220018227794c43639 8aba50e0”的余額約為1 902個以太幣。

      3.2轉(zhuǎn)賬操作

      Alice若想向以太幣網(wǎng)絡(luò)中的某個錢包地址發(fā)送以太幣,可在用戶界面層中的表單中填寫目的地址和轉(zhuǎn)賬數(shù)量,生成原始交易信息rawTx,之后用自己的私鑰簽名將交易信息和簽名信息提交給業(yè)務(wù)邏輯層處理,邏輯層根據(jù)network字段將請求交給以太坊的數(shù)據(jù)訪問層處理,并得到交易已被受理的回執(zhí)rTXb,最后界面層把回執(zhí)顯示給用戶。

      例如,若Alice想要給Bob發(fā)送1 000個以太幣,首先需要獲得Bob的以太坊賬戶地址,如“0xe86200961EbB72 8d1bc3f4BbBd7164815097DeB1”,填寫表單如圖3所示。

      點擊生成交易,得到交易的摘要“0xdf5d17e416eff322 0018227794c436398aba50e0”,然后向代理服務(wù)器發(fā)送該摘要,以獲得一個分配的nonce值和所需的gas值,加上服務(wù)器返回的nonce值和gasprice值,得到完整的交易信息:

      確認(rèn)無誤后Alice私鑰簽名,得到簽名信息:

      向代理服務(wù)器發(fā)送簽名并得到回執(zhí)“0x59688af8c7 61db478c8652a2db1031aff4839168b1485913b4f9ef868ff0b1 b8”,至此,Alice向Bob轉(zhuǎn)賬1 000個以太幣的交易完成。得到回執(zhí)后需要等待一段時間才能查看到正確的余額,因為轉(zhuǎn)賬需要以太幣網(wǎng)絡(luò)中的共識節(jié)點參與,所以會有一定延時。再次刷新余額即會發(fā)現(xiàn)賬戶余額改變,說明交易順利完成,如圖4所示。

      4結(jié)語

      對于不同的密碼貨幣,現(xiàn)有的專用錢包模式要求使用多幣種的用戶下載不同錢包進行資產(chǎn)管理。本文介紹了多幣種通用錢包的設(shè)計與實現(xiàn),設(shè)計了三層體系結(jié)構(gòu),完成了不同密碼貨幣錢包的整合,從而驗證了通用錢包架構(gòu)的可行性。

      參考文獻:

      [1]SATOSHI. Bitcoin: a peer-to-peer electronic cash system[EB/OL]. https://bitcoin.org/bitcoin.pdf.

      [2]VITALIK BUTERIN. Ethereum project[EB/OL].https://www.ethereum.org/.

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

      [4]A NARAYANAN, J BONNEAU, E FELTEN, et al. Bitcoin and cryptocurrency technologies: a comprehensive introduction[M]. Princeton :Princeton University Press,2016.

      [5]TBERNERSLEE. The TLS protocol version 1.0[J].Journal of Biological Chemistry,1999,276(35):32567-32574.

      [6]MISKO HEVERY. AngularJS[EB/OL]. https://docs.angularjs.org/.

      [7]ANDREAS M ANTONOPOULOS. Mastering bitcoin[M]. Chicago: OReilly Media,2014.

      (責(zé)任編輯:黃健)endprint

      猜你喜歡
      區(qū)塊鏈
      區(qū)塊鏈對互聯(lián)網(wǎng)金融發(fā)展的重塑與挑戰(zhàn)分析
      基于區(qū)塊鏈技術(shù)的海上散裝液體化學(xué)品運輸安全監(jiān)管方法
      水運管理(2016年11期)2017-01-07 13:25:48
      保險企業(yè)的區(qū)塊鏈技術(shù)應(yīng)用方向選擇研究
      區(qū)塊鏈技術(shù)在金融領(lǐng)域的應(yīng)用與前景研究
      中國市場(2016年32期)2016-12-06 11:21:13
      區(qū)塊鏈技術(shù)的應(yīng)用價值分析
      商情(2016年40期)2016-11-28 11:24:12
      “區(qū)塊鏈”發(fā)展現(xiàn)狀評述及展望
      商(2016年34期)2016-11-24 14:46:00
      “區(qū)塊鏈”的茍且、詩和遠方
      基于區(qū)塊鏈技術(shù)的數(shù)字貨幣與傳統(tǒng)貨幣辨析
      互聯(lián)網(wǎng)金融新模式與中小企業(yè)融資關(guān)系研究
      智能合約與金融合約
      商(2016年6期)2016-04-20 17:50:36
      荣昌县| 株洲县| 工布江达县| 文成县| 阆中市| 平谷区| 陵水| 敦煌市| 湾仔区| 右玉县| 安图县| 卢氏县| 屏东市| 湘西| 萨迦县| 吉木萨尔县| 内江市| 米脂县| 边坝县| 永仁县| 海口市| 岗巴县| 宁波市| 长兴县| 怀柔区| 黄冈市| 武胜县| 屯昌县| 峨眉山市| 南澳县| 亳州市| 景泰县| 独山县| 宁海县| 兴业县| 沾化县| 舒城县| 邓州市| 寿宁县| 鲁甸县| 扬州市|