亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

如何使用Web3.js API 在頁(yè)面中進(jìn)行轉(zhuǎn)賬

zhisheng / 1298人閱讀

摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接如何使用在頁(yè)面中進(jìn)行轉(zhuǎn)賬原文已更新,請(qǐng)讀者前往原文閱讀本文介紹如何使用在頁(yè)面中進(jìn)行轉(zhuǎn)賬,是我翻譯的文檔中文版及區(qū)塊鏈全棧以太坊開(kāi)發(fā)實(shí)戰(zhàn)中的文章說(shuō)明。

本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)
原文鏈接:如何使用Web3.js API 在頁(yè)面中進(jìn)行轉(zhuǎn)賬原文已更新,請(qǐng)讀者前往原文閱讀

本文介紹如何使用Web3.js API 在頁(yè)面中進(jìn)行轉(zhuǎn)賬,是我翻譯的文檔Web3.js 0.2x 中文版 及 區(qū)塊鏈全棧-以太坊DAPP開(kāi)發(fā)實(shí)戰(zhàn) 中Demo的文章說(shuō)明。

寫(xiě)在前面

閱讀本文前,你應(yīng)該對(duì)以太坊、智能合約、錢(qián)包的概念有所了解,如果你還不了解,建議你先看以太坊是什么
除此之外,你最好還了解一些HTML及JavaScript知識(shí)。

轉(zhuǎn)賬UI 頁(yè)面的編寫(xiě)

轉(zhuǎn)賬UI主體的界面如圖:

實(shí)現(xiàn)這個(gè)界面很簡(jiǎn)單,這里就不代碼了。大家可以打開(kāi)Demo,右擊查看頁(yè)面源碼。

用戶(hù)環(huán)境檢查

既然需要使用Web3.js API 在頁(yè)面中進(jìn)行轉(zhuǎn)賬, 首先應(yīng)該檢查在瀏覽器環(huán)境有沒(méi)有安裝好錢(qián)包,并且錢(qián)包應(yīng)該是解鎖狀態(tài)。

先檢查是否安裝了MetaMask錢(qián)包:

window.addEventListener("load", function() {
        if (typeof web3 !== "undefined") {
            web3 = new Web3(web3.currentProvider);
            if (web3.currentProvider.isMetaMask == true) {
                // "MetaMask可用"
            } else {
                // "非MetaMask環(huán)境"
            }
        } else {
            $("#env").html("No web3? 需要安裝

MetaMask推薦在window加載時(shí),進(jìn)行MetaMask的檢查,當(dāng)然在沒(méi)有安裝MetaMask時(shí),也可以指定一個(gè)節(jié)點(diǎn)Provider來(lái)創(chuàng)建web3,可以參考Web3.js 文檔引入web3

檢查是否錢(qián)包已經(jīng)解鎖:

我們?cè)诎l(fā)送交易之前應(yīng)該先首先檢查一下當(dāng)前錢(qián)包的一個(gè)狀態(tài),檢查錢(qián)包是否解鎖(是否輸入了密碼進(jìn)入了MetaMask),通常使用eth下面的getAccounts來(lái)進(jìn)行檢查,getAccounts是會(huì)返回賬號(hào)的一個(gè)列表,如果當(dāng)前賬號(hào)列表里面有數(shù)據(jù)的話(huà),說(shuō)明錢(qián)包已經(jīng)解鎖可以獲得到賬號(hào),如果賬號(hào)拿到的列表是空的話(huà),那么說(shuō)明錢(qián)包沒(méi)有解鎖。

可以把下面的代碼加到上面的監(jiān)聽(tīng)函數(shù)中:

web3.eth.getAccounts(function (err, accounts) {
            if (accounts.length == 0) {
                $("#account").html("請(qǐng)檢查錢(qián)包是否解鎖");
            } 
            });
發(fā)送交易

如果MetaMask錢(qián)包是解鎖的,我們就可以來(lái)發(fā)送交易,發(fā)送交易使用sendtransaction這個(gè)方法。

web3.eth.sendTransaction(transactionObject [, callback])

第二個(gè)參數(shù)是回調(diào)函數(shù)用來(lái)獲得發(fā)送交易的Hash值。

第一個(gè)參數(shù)是一個(gè)交易對(duì)象,交易對(duì)象里面有幾個(gè)字段:

from : 就是從哪個(gè)賬號(hào)發(fā)送金額

to : 發(fā)動(dòng)到到哪個(gè)賬號(hào)

value 是發(fā)送的金額

gas: 設(shè)置gas limit

gasPrice: 設(shè)置gas 價(jià)格

如果from沒(méi)有的話(huà),他就會(huì)用當(dāng)前的默認(rèn)賬號(hào), 如果是轉(zhuǎn)賬to和value是必選的兩個(gè)字段。
在發(fā)送交易的時(shí)候彈出來(lái)MetaMask的一個(gè)授權(quán)的窗口,如果我們gas和gasPrice沒(méi)有設(shè)置的話(huà),就可以在MetaMask里面去設(shè)置。如果這兩個(gè)gas和gas Price設(shè)置了的話(huà),MetaMask就會(huì)使用我們?cè)O(shè)置的gas。

因此在發(fā)送交易的時(shí)候,關(guān)鍵是構(gòu)造這樣一個(gè)交易對(duì)象,JavaScrpt代碼如下:

//  這里使用Metamask 給的gas Limit 及 gas 價(jià)
var fromAccount = $("#fromAccount").val();
var toAccount = $("#toAccount").val();
var amount = $("#amount").val();

// 對(duì)輸入的數(shù)字做一個(gè)檢查
if (web3.isAddress(fromAccount) &&
            web3.isAddress(toAccount) &&
            amount != null && amount.length > 0) {
    var message = {from: fromAccount, to:toAccount, value: web3.toWei(amount, "ether")};

    web3.eth.sendTransaction(message, (err, res) => {
        var output = "";
        if (!err) {
            output += res;
        } else {
            output = "Error";
        }
    }
}

補(bǔ)充說(shuō)明:$("#fromAccount").val()是使用JQuery用來(lái)獲取用戶(hù)輸入內(nèi)容,其次應(yīng)該在實(shí)際構(gòu)造發(fā)送交易之前對(duì)輸入的參數(shù)做一個(gè)判斷,web3.isAddress用來(lái)檢查字符串是不是地址。另外對(duì)于一個(gè)向普通外部地址賬號(hào)的轉(zhuǎn)賬,消耗的gas 是固定的21000。

運(yùn)行測(cè)試

需要注意一點(diǎn)的是,由于安全原因,MetaMask只支持站點(diǎn)方式訪(fǎng)問(wèn)的頁(yè)面,即通過(guò)http:// 來(lái)訪(fǎng)問(wèn)頁(yè)面,在瀏覽器中通過(guò)file:// + 文件地址的方式是不行的。
因此需要把編寫(xiě)的代碼放置到web服務(wù)器的目錄下,自己試驗(yàn)下。

線(xiàn)上的Demo地址為https://web3.learnblockchain.cn/transDemo.html

想好好系統(tǒng)學(xué)習(xí)以太坊DApp開(kāi)發(fā),這門(mén)視頻課程以太坊DAPP開(kāi)發(fā)實(shí)戰(zhàn)不容錯(cuò)過(guò)。

深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客。
深入淺出區(qū)塊鏈知識(shí)星球,最專(zhuān)業(yè)的區(qū)塊鏈問(wèn)題技術(shù)社區(qū),歡迎加入,作為星友福利,星友還可以加入我創(chuàng)建優(yōu)質(zhì)區(qū)塊鏈技術(shù)群,群內(nèi)聚集了300多位區(qū)塊鏈技術(shù)大牛和愛(ài)好者。

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

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

相關(guān)文章

  • 如何使用Web3.js API 頁(yè)面進(jìn)行轉(zhuǎn)賬

    摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接如何使用在頁(yè)面中進(jìn)行轉(zhuǎn)賬原文已更新,請(qǐng)讀者前往原文閱讀本文介紹如何使用在頁(yè)面中進(jìn)行轉(zhuǎn)賬,是我翻譯的文檔中文版及區(qū)塊鏈全棧以太坊開(kāi)發(fā)實(shí)戰(zhàn)中的文章說(shuō)明。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:如何使用Web3.js API 在頁(yè)面中進(jìn)行轉(zhuǎn)賬原文已更新,請(qǐng)讀者前往原文閱讀 本文介紹如何使用Web3.js API 在頁(yè)面中進(jìn)行轉(zhuǎn)賬,是我翻譯的文檔Web3.j...

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

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

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

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

    keke 評(píng)論0 收藏0
  • truffle安裝以及使用示例

    摘要:安裝命令使用命令安裝完成后,直接輸入即可。函數(shù)名函數(shù)名用于修改狀態(tài)變量的函數(shù)的調(diào)用,可以簡(jiǎn)寫(xiě)為后面這種。訪(fǎng)問(wèn)內(nèi)有使用教程。文件夾中沒(méi)有,取而代之的是,內(nèi)容是個(gè)簡(jiǎn)單的,功能是修改一個(gè)狀態(tài)變量的值為然后讀取它。 Truffle ubuntu下安裝truffle truffle安裝的依賴(lài)環(huán)境有:Nodejs,git ,python2.7(ubuntu自帶)安裝git sudo apt-get...

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

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

0條評(píng)論

閱讀需要支付1元查看
<