成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

以太坊錢包開發(fā)系列1 - 創(chuàng)建錢包賬號(hào)

1fe1se / 697人閱讀

摘要:錢包功能一個(gè)錢包通常主要包含的功能有賬號(hào)管理主要是私鑰的管理創(chuàng)建賬號(hào)賬號(hào)導(dǎo)入導(dǎo)出賬號(hào)信息展示如以太幣余額代幣余額。

本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)
原文鏈接:[使用 ethers.js 開發(fā)以太坊 Web 錢包 1 - 創(chuàng)建錢包賬號(hào))
](https://learnblockchain.cn/20...,請(qǐng)讀者前往原文閱讀

以太坊去中心化網(wǎng)頁(yè)錢包開發(fā)系列,將從零開始開發(fā)出一個(gè)可以實(shí)際使用的錢包,本系列文章是理論與實(shí)戰(zhàn)相結(jié)合,一共有四篇:創(chuàng)建錢包賬號(hào)、賬號(hào)Keystore文件導(dǎo)入導(dǎo)出、展示錢包信息及發(fā)起簽名交易、發(fā)送Token(代幣),這是第一篇,主要介紹錢包將實(shí)現(xiàn)哪些功能及怎么創(chuàng)建錢包賬號(hào),本錢包是基于ethers.js 進(jìn)行開發(fā)。

去中心化網(wǎng)頁(yè)錢包

先明確一下定義,什么是去中心化錢包,賬號(hào)秘鑰的管理,交易的簽名,都是在客戶端完成, 即私鑰相關(guān)的信息都是在用戶手中,錢包的開發(fā)者接觸不到私鑰信息。

對(duì)應(yīng)的中心化錢包則是私鑰由中心服務(wù)器托管,如交易所的錢包就是這種。

網(wǎng)頁(yè)錢包,或者叫web錢包,是指錢包以網(wǎng)頁(yè)的形式展現(xiàn),去中心化網(wǎng)頁(yè)錢包則交易的簽名等操作是在瀏覽器里完成。
其他形式的錢包,如Android錢包或iOS錢包其開發(fā)思路和web錢包一樣,因此文本對(duì)開發(fā)其他平臺(tái)的錢包也有參考意義,不過本系列文章主要側(cè)重在錢包功能的實(shí)現(xiàn),并未過多考慮用戶體驗(yàn)。

錢包功能

一個(gè)錢包通常主要包含的功能有:

賬號(hào)管理(主要是私鑰的管理):創(chuàng)建賬號(hào)、賬號(hào)導(dǎo)入導(dǎo)出

賬號(hào)信息展示:如以太幣余額、Token(代幣)余額。

轉(zhuǎn)賬功能:發(fā)送以太幣及發(fā)送Token(代幣)

這些功能將基于 ethers.js 進(jìn)行開發(fā), ethers.js 和web3.js 一樣,也是一套和以太坊區(qū)塊鏈進(jìn)行交互的庫(kù),不僅如此,ethers.js 還對(duì)BIP 39等相關(guān)的提案進(jìn)行了實(shí)現(xiàn),可以在這個(gè)鏈接閱讀其文檔。

這些功能主要表現(xiàn)為錢包的兩個(gè)界面,一個(gè)界面是:賬號(hào)管理,一個(gè)界面是進(jìn)行賬號(hào)信息展示及轉(zhuǎn)賬。下面逐個(gè)進(jìn)行介紹

創(chuàng)建錢包賬號(hào)

讀過上一篇文章理解開發(fā)HD 錢包涉及的 BIP32、BIP44、BIP39的同學(xué),會(huì)知道創(chuàng)建賬號(hào),可以有兩種方式:

直接生成32個(gè)字節(jié)的數(shù)當(dāng)成私鑰

通過助記詞進(jìn)行確定性推導(dǎo)出私鑰

使用隨機(jī)數(shù)作為私鑰創(chuàng)建錢包賬號(hào)

即方式一,可以使用ethers.utils.randomBytes生成一個(gè)隨機(jī)數(shù),然后使用這個(gè)隨機(jī)數(shù)來創(chuàng)建錢包,如代碼:

var privateKey = ethers.utils.randomBytes(32);
var wallet = new ethers.Wallet(privateKey);
console.log("賬號(hào)地址: " + wallet.address);

上面代碼的 wallet 是 ethers 中的一個(gè)錢包對(duì)象,它除了有代碼中出現(xiàn)的.address 屬性之外,還有如 獲取余額、發(fā)送交易等方法,在后面的文章會(huì)進(jìn)行介紹。

注意ethers.utils.randomBytes 生成的是一個(gè)字節(jié)數(shù)組,如果想用十六進(jìn)制數(shù)顯示出來表示,需要轉(zhuǎn)化為BigNumber代碼如下:

let keyNumber = ethers.utils.bigNumberify(privateKey);
console.log(randomNumber._hex);

現(xiàn)在我們結(jié)合界面,完整的實(shí)現(xiàn)創(chuàng)建賬號(hào),其效果圖如下,加載私鑰時(shí)創(chuàng)建賬號(hào)。

界面代碼(HTML)代碼如下(主要是在表格中定義個(gè)一個(gè)輸入框及一個(gè)按鈕):

                
私鑰:
加載私鑰

對(duì)應(yīng)的邏輯代碼(JavaScript)如下:

// 使用JQuery獲取兩個(gè)UI標(biāo)簽
    var inputPrivatekey = $("#select-privatekey");
    var submit = $("#select-submit-privatekey");

// 生成一個(gè)默認(rèn)的私鑰
    let randomNumber = ethers.utils.bigNumberify(ethers.utils.randomBytes(32));
    inputPrivatekey.val(randomNumber._hex);

// 點(diǎn)擊“加載私鑰”時(shí), 創(chuàng)建對(duì)應(yīng)的錢包
    submit.click(function() {
        var privateKey = inputPrivatekey.val();
        if (privateKey.substring(0, 2) !== "0x") { privateKey = "0x" + privateKey; }
       var wallet = new ethers.Wallet(privateKey));

    });

如果用戶提供一個(gè)已有賬號(hào)的私鑰,則會(huì)導(dǎo)入其原有賬號(hào)。

通過助記詞方式創(chuàng)建錢包賬號(hào)

這是目前主流常見錢包的方式,關(guān)于助記詞推導(dǎo)過程請(qǐng)閱讀理解開發(fā)HD 錢包涉及的 BIP32、BIP44、BIP39。

我們需要先生成一個(gè)隨機(jī)數(shù),然后用隨機(jī)數(shù)生成助記詞,隨后用助記詞創(chuàng)建錢包賬號(hào),設(shè)計(jì)到的API有:

var rand = ethers.utils.randomBytes(16);

// 生成助記詞
var mnemonic = ethers.utils.HDNode.entropyToMnemonic(rand);

var path = "m/44"/60"/0"/0/0";

// 通過助記詞創(chuàng)建錢包
ethers.Wallet.fromMnemonic(mnemonic, path);

現(xiàn)在我們結(jié)合界面來實(shí)現(xiàn)一下通過助記詞方式創(chuàng)建錢包賬號(hào),其效果圖如下:

界面代碼(HTML)代碼如下(主要是在表格中定義個(gè)兩個(gè)輸入框及一個(gè)按鈕):

    
助記詞:
Path:
推倒

對(duì)應(yīng)的邏輯代碼(JavaScript)如下:

    var inputPhrase = $("#select-mnemonic-phrase");
    var inputPath = $("#select-mnemonic-path");
    var submit = $("#select-submit-mnemonic");

// 生成助記詞
    var mnemonic = ethers.utils.HDNode.entropyToMnemonic(ethers.utils.randomBytes(16));
    inputPhrase.val(mnemonic);

    submit.click(function() {
    // 檢查助記詞是否有效。
        if (!ethers.utils.HDNode.isValidMnemonic(inputPhrase.val())) {
            return;
        }

// 通過助記詞創(chuàng)建錢包對(duì)象
       var wallet = ethers.Wallet.fromMnemonic(inputPhrase.val(), inputPath.val());
    });

同樣用戶可以提供一個(gè)其保存的助記詞來導(dǎo)入其錢包,有一些遺憾的是,ethers.js 暫時(shí)不支持通過添加密碼作為Salt來保護(hù)種子(也可能是我沒有找到,如果知道的同學(xué),希望反饋下),如果需要此功能可以引入bip39 和 ethereumjs-wallet 庫(kù)來實(shí)現(xiàn),代碼可參考理解開發(fā)HD 錢包涉及的 BIP32、BIP44、BIP39。

小結(jié)

其實(shí) ethers 還提供了一個(gè)更簡(jiǎn)單的方法來創(chuàng)建錢包:

   // 直接創(chuàng)建一個(gè)隨機(jī)錢包
   ethers.Wallet.createRandom();

完整源碼請(qǐng)訂閱深入淺出區(qū)塊鏈技術(shù)小專欄查看, 哈哈,是不是有一點(diǎn)雞賊,創(chuàng)作不易呀。
戳鏈接收看詳細(xì)的視頻課程講解。

參考文檔:
ethers.js

深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客。

深入淺出區(qū)塊鏈知識(shí)星球最專業(yè)技術(shù)問答社區(qū),加入社區(qū)還可以在微信群里和300多位區(qū)塊鏈技術(shù)愛好者一起交流。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/24366.html

相關(guān)文章

  • 如何開發(fā)一款以太(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號(hào)

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接以太坊安卓錢包系列通過助記詞創(chuàng)建賬號(hào)原文已更新,請(qǐng)讀者前往原文閱讀上周我開源了一款錢包,反映很好,一周時(shí)間不到已經(jīng)快到。的功能和類似,它是比特幣協(xié)議的實(shí)現(xiàn),他實(shí)現(xiàn)了及相關(guān)協(xié)議。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號(hào)原文已更新,請(qǐng)讀者前往原文閱讀 上周我開源了一款錢包,反映很好,一周時(shí)間不到已經(jīng)快到10...

    bbbbbb 評(píng)論0 收藏0
  • 如何開發(fā)一款以太(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號(hào)

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接以太坊安卓錢包系列通過助記詞創(chuàng)建賬號(hào)原文已更新,請(qǐng)讀者前往原文閱讀上周我開源了一款錢包,反映很好,一周時(shí)間不到已經(jīng)快到。的功能和類似,它是比特幣協(xié)議的實(shí)現(xiàn),他實(shí)現(xiàn)了及相關(guān)協(xié)議。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊(安卓)錢包系列1 - 通過助記詞創(chuàng)建賬號(hào)原文已更新,請(qǐng)讀者前往原文閱讀 上周我開源了一款錢包,反映很好,一周時(shí)間不到已經(jīng)快到10...

    genefy 評(píng)論0 收藏0
  • 如何開發(fā)一款以太(安卓)錢包系列2 - 導(dǎo)入賬號(hào)賬號(hào)管理

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接以太坊安卓錢包系列導(dǎo)入賬號(hào)及賬號(hào)管理原文已更新,請(qǐng)讀者前往原文閱讀這是如何開發(fā)一款以太坊安卓錢包系列第篇,如何導(dǎo)入賬號(hào)。提示大家閱讀本文時(shí),最好把代碼庫(kù)克隆到本地對(duì)照閱讀。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊(安卓)錢包系列2 - 導(dǎo)入賬號(hào)及賬號(hào)管理原文已更新,請(qǐng)讀者前往原文閱讀 這是如何開發(fā)一款以太坊(安卓)錢包系列第2篇,如何導(dǎo)入賬號(hào)。...

    Tecode 評(píng)論0 收藏0
  • 區(qū)塊鏈技術(shù)學(xué)習(xí)指引

    摘要:引言給迷失在如何學(xué)習(xí)區(qū)塊鏈技術(shù)的同學(xué)一個(gè)指引,區(qū)塊鏈技術(shù)是隨比特幣誕生,因此要搞明白區(qū)塊鏈技術(shù),應(yīng)該先了解下比特幣。但區(qū)塊鏈技術(shù)不單應(yīng)用于比特幣,還有非常多的現(xiàn)實(shí)應(yīng)用場(chǎng)景,想做區(qū)塊鏈應(yīng)用開發(fā),可進(jìn)一步閱讀以太坊系列。 本文始發(fā)于深入淺出區(qū)塊鏈社區(qū), 原文:區(qū)塊鏈技術(shù)學(xué)習(xí)指引 原文已更新,請(qǐng)讀者前往原文閱讀 本章的文章越來越多,本文是一個(gè)索引帖,方便找到自己感興趣的文章,你也可以使用左側(cè)...

    Cristic 評(píng)論0 收藏0
  • 以太錢包開發(fā)系列3 - 展示錢包信息及發(fā)起簽名交易

    本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:[使用 ethers.js 開發(fā)以太坊 Web 錢包 3 - 展示錢包信息及發(fā)起簽名交易)](https://learnblockchain.cn/20...,請(qǐng)讀者前往原文閱讀 以太坊去中心化網(wǎng)頁(yè)錢包開發(fā)系列,將從零開始開發(fā)出一個(gè)可以實(shí)際使用的錢包,本系列文章是理論與實(shí)戰(zhàn)相結(jié)合,一共有四篇:創(chuàng)建錢包賬號(hào)、賬號(hào)Keystore文件導(dǎo)入導(dǎo)出、展示錢包信息及發(fā)起簽...

    tuniutech 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<