999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

區塊鏈上的通用錢包設計與實現

2018-02-01 12:52:40唐屹陳家豪吳嘉熙
軟件導刊 2018年1期

唐屹+陳家豪+吳嘉熙

摘要:區塊鏈技術是近年來興起的一類計算機應用技術,不同的基于區塊鏈的密碼貨幣的產生,引發了對密碼貨幣的管理問題。現有的專用錢包模式要求使用多幣種的用戶下載不同錢包進行資產管理。基于三層架構思想,設計了一個通用錢包的實現架構,以實現對多種密碼貨幣的管理。通過所實現的通用錢包原型,驗證了通用錢包架構的可行性。

關鍵詞:區塊鏈;密碼貨幣;通用錢包

DOIDOI:10.11907/rjdk.172067

中圖分類號:TP319

文獻標識碼: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引言

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

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

1密碼貨幣錢包

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

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

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

2通用錢包設計

2.1體系架構

圖1展示了本文設計的通用錢包,其體系結構自頂而下分為3層:①用戶界面層。完成用戶請求的發送以及響應數據的顯示,為用戶提供一種交互式操作的界面。由于使用了AngularJS框架,其運行環境可以是桌面PC,也可以是智能移動設備;②業務邏輯層。針對具體的用戶請求,實現錢包數據的業務邏輯處理;③數據訪問層。完成對區塊鏈系統記賬節點的請求訪問,實現對分布式賬本的訪問操作。

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

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

根據錢包體系架構,錢包用戶通過用戶界面發送請求,請求可以同時發送多個,邏輯層根據請求中的network和address生成數據訪問層的請求內容;數據訪問層發送請求并接收來自密碼貨幣層的響應;收到響應后,數據訪問層整理并轉碼數據;經業務邏輯層傳輸,用戶界面層顯示數據給用戶。

2.2數據交換描述

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

(1)用戶界面層。用戶界面層實現與業務邏輯層的數據交換,包含請求和響應兩類數據。

請求數據格式為{“network”:“”,“method”:“params”,“address”:“”},其中network、address的內容來自密碼貨幣網絡三元組,在用戶不提供address的情況下,會默認連接到公鏈上的RPC節點,method字段為通用錢包操作標識,params值對應執行操作需要用到的參數。

響應數據格式為{“data”:“”,“error”:“”}。其中的data為來自數據訪問層的結果,若返回結果中有錯誤,則error描述該錯誤。

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

(3)數據訪問層。數據訪問層主要由RPC客戶端構成,負責與分布式賬本節點的RPC服務器端通信,并作一些必要的數據轉換。RPC客戶端與RPC服務器端之間可定義的通訊語法如下:

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

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

響應:{“data”:“”,“error”:“”,“id”:“”}

響應字段中,data為遠程調用的方法返回的結果,如果發生錯誤則值為nul;error字段描述錯誤發生時的錯誤詳情;id為相應請求的id值。

3原型實現

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

3.1余額查詢

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

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

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

3.2轉賬操作

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

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

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

確認無誤后Alice私鑰簽名,得到簽名信息:

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

4結語

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

參考文獻:

[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]鄒均,張海寧,唐屹,等.區塊鏈技術指南[M].北京:機械工業出版社,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.

(責任編輯:黃健)endprint

主站蜘蛛池模板: 国产精品自拍合集| 国产69精品久久久久妇女| 91青青视频| 国产人成乱码视频免费观看| 免费国产不卡午夜福在线观看| 草草影院国产第一页| 九九热精品在线视频| 欧美精品导航| 亚洲综合香蕉| 国产香蕉在线视频| 毛片视频网址| 国产欧美日韩综合在线第一| 欧美激情视频一区二区三区免费| 欧美三级日韩三级| 日韩区欧美国产区在线观看| 日韩天堂网| 91小视频在线观看| 久久国产毛片| 日本五区在线不卡精品| 免费一看一级毛片| 99尹人香蕉国产免费天天拍| 免费在线看黄网址| 国产一级二级三级毛片| 婷婷五月在线| 国产资源免费观看| 中国丰满人妻无码束缚啪啪| 在线无码九区| 久久综合九九亚洲一区| 九色最新网址| h视频在线播放| 精品久久久无码专区中文字幕| 999国内精品久久免费视频| 国产亚洲第一页| 日韩中文字幕亚洲无线码| 国产鲁鲁视频在线观看| 在线欧美一区| 多人乱p欧美在线观看| 亚洲日韩AV无码一区二区三区人| 污污网站在线观看| 天堂在线www网亚洲| 国产jizzjizz视频| 婷婷亚洲视频| av免费在线观看美女叉开腿| 毛片免费在线| 国产综合色在线视频播放线视| 欧美精品亚洲精品日韩专区| 99久久精品免费看国产免费软件| 国产精品美人久久久久久AV| 欧美在线网| 色屁屁一区二区三区视频国产| 五月婷婷丁香色| 一级毛片免费的| 日韩高清成人| 欧美人与牲动交a欧美精品| 国产无码网站在线观看| 超碰91免费人妻| 精品国产香蕉伊思人在线| 在线日韩日本国产亚洲| 无码有码中文字幕| 亚洲日本中文综合在线| 免费观看国产小粉嫩喷水 | 伊人成色综合网| 幺女国产一级毛片| 亚洲综合色在线| 国产免费自拍视频| 无码AV高清毛片中国一级毛片| 亚洲AV无码久久精品色欲| 欧美另类视频一区二区三区| 亚洲欧洲日本在线| 在线视频亚洲色图| 久久夜色精品国产嚕嚕亚洲av| 波多野结衣视频网站| 精品一区二区三区水蜜桃| 国产va免费精品| 亚洲码在线中文在线观看| 激情五月婷婷综合网| 欧美精品v日韩精品v国产精品| 久久久黄色片| 国产精品青青| 女人18毛片水真多国产| 青青操视频在线| 国产精品毛片一区|