国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

NODEJS如何發(fā)送以太坊交易

付倫 / 1327人閱讀

摘要:是將與以太坊交互的模塊。在路由器內部我需要我的以太坊地址,我將發(fā)送我的交易地址,合約地址和合約。你可以通過以太坊錢包或搜索合約。我們?yōu)橐蕴粍?chuàng)建了我們的一個極小的后端。

“ 注意:在本教程中我使用web3js 1.0版本 ”

大家好,我將解釋如何從NodeJS后端發(fā)送交易。我將使用rinkeby testnet并將創(chuàng)建一個路由器,還添加一些節(jié)點模塊并使用infura http接口來完成教程。

我們需要web3js,expressethereumjs-tx模塊來執(zhí)行交易。之后你需要從Infura輸入你自己的api key,登錄到infura。

開始

首先,你需要為此項目創(chuàng)建一個空文件夾,以便更輕松地訪問它。創(chuàng)建文件夾后,你需要在該文件夾中打開命令shell。我假設你的計算機上安裝了npm。npm是由nodejs分發(fā)的,所以如果你安裝了nodejs,你也會得到npm。如果你沒有從這個網(wǎng)站下載包含npm的nodejs。安裝npm后你需要調用它。

npm init

如果要保留默認設置(包括默認名稱,即文件夾名稱),可以通過輸入enter鍵跳過所有行。在此過程結束時,你將擁有一個package.json文件。

啟動項目后,在文件夾中需要創(chuàng)建一個js文件,其中包含你想要的名稱,這將是我們的后端。

獲取模塊

在我的代碼中,你可以看到有模塊要求,我們只需通過npm下載將它們包含到項目中。他們的npm調用:

npm install web3 --save
npm install express --save
npm install ethereumjs-tx --save

你需要從命令行多帶帶調用此行以將它們安裝到項目中。完成安裝過程后,可以看到有一個文件夾名稱是節(jié)點模塊,它是模塊下載的文件夾。

INFURA

完成下載模塊后。你需要一個infura api密鑰。Api 密鑰是完成本教程的關鍵部分。你可以通過登錄Infura來獲得它。獲得infura api密鑰后,需要使用api密鑰更改第7行(YOUR_API_KEY)。

順便說一句,infura是非常好的接口。你也可以通過infura api訪問ipfs ,這是一個區(qū)塊鏈存儲服務??梢詮乃麄兊木W(wǎng)站獲得有關ipfs的更多信息。

通過獲取infura api密鑰,我們完成了代碼的預請求。我們可以開始編碼了。從現(xiàn)在開始,我將逐行解釋代碼。

在前3行,我將模塊添加到js文件中。

web3是將與以太坊交互的模塊。

創(chuàng)建路由器需要Express。

ethereumjs-tx是創(chuàng)建交易所必需的。

在第5行,我使用Express模塊創(chuàng)建我的應用程序。

創(chuàng)建應用程序后,我們需要編寫文件的最后一行:

app.listen(3000, () => console.log("Example app listening on port 3000!"))

在第8行,我使用httpprovider創(chuàng)建web3js對象,這是在nodejs后端的infura。如果你在看到本教程之前搜索過以太坊后端開發(fā),你可以看到其中許多都是由reactjs編碼的,并且他們使用metamask作為接口服務。NodeJS后端無法訪問瀏覽器資源,因此NodeJS后端無法使用metamask作為服務接口程序,我對其進行了處理并使用infura作為接口服務提供程序。

在web3的某些功能中,需要web3的websocket提供程序,因此需要在用的時候更改第8行。

web3js = new web3(new web3.providers.WebsocketProvider("wss://mainnet.infura.io/_ws"));

在第10行,我創(chuàng)建了我的路由器,這是一個get,但它需要在邏輯上發(fā)布。我創(chuàng)建本教程只是為了展示如何完成發(fā)送交易,所以這個無關緊要。

在路由器內部我需要我的rinkeby以太坊地址(myAddress),我將發(fā)送我的交易地址(toAddress),合約地址(contractAddress)和合約abi(con??tractABI)。你可以通過以太坊錢包或etherscan搜索合約abi 。我從ethereum wallet部署本教程合約,你不需要部署任何合約。你可以簡單地使用現(xiàn)有的一個。

我們需要的最后一件事是我的私鑰(privateKey)。這不是一種安全的方式,但由于我們的前端沒有任何錢包(因為我們沒有前端:))我們此時手動執(zhí)行操作。你無法通過以太坊錢包訪問你的私鑰,因此你需要將你的rinkeby以太坊帳戶導入類似MyEtherWallet的網(wǎng)站。

在定義變量后的路由器中,我們創(chuàng)建原始交易,然后使用我們的私鑰對其進行簽名。簽署交易后,我們通過web3js將其發(fā)送到rinkeby testnet。

完成編碼后,我們需要對其進行測試。在同一文件夾中打開命令shell并啟動后端。我的文件名是backend.js所以我是通過代碼啟動的。

node backend.js 

這意味著可以使用代碼啟動后端:

node 

啟動后端后,需要打開瀏覽器,并且需要將http://localhost:3000/sendtx寫入地址行。

如此而已。我們?yōu)橐蕴粍?chuàng)建了我們的一個極小的后端。代碼如下:

const web3 = require("web3");
const express = require("express");
const Tx = require("ethereumjs-tx");

const app = express();

//Infura HttpProvider Endpoint
web3js = new web3(new web3.providers.HttpProvider("https://rinkeby.infura.io/YOUR_API_KEY"));

app.get("/sendtx",function(req,res){

        var myAddress = "ADDRESS_THAT_SENDS_TRANSACTION";
        var privateKey = Buffer.from("YOUR_PRIVATE_KEY", "hex")
        var toAddress = "ADRESS_TO_SEND_TRANSACTION";

        //contract abi is the array that you can get from the ethereum wallet or etherscan
        var contractABI =YOUR_CONTRACT_ABI;
        var contractAddress ="YOUR_CONTRACT_ADDRESS";
        //creating contract object
        var contract = new web3js.eth.Contract(contractABI,contractAddress);

        var count;
        // get transaction count, later will used as nonce
        web3js.eth.getTransactionCount(myAddress).then(function(v){
            console.log("Count: "+v);
            count = v;
            var amount = web3js.utils.toHex(1e16);
            //creating raw tranaction
            var rawTransaction = {"from":myAddress, "gasPrice":web3js.utils.toHex(20* 1e9),"gasLimit":web3js.utils.toHex(210000),"to":contractAddress,"value":"0x0","data":contract.methods.transfer(toAddress, amount).encodeABI(),"nonce":web3js.utils.toHex(count)}
            console.log(rawTransaction);
            //creating tranaction via ethereumjs-tx
            var transaction = new Tx(rawTransaction);
            //signing transaction with private key
            transaction.sign(privateKey);
            //sending transacton via web3js module
            web3js.eth.sendSignedTransaction("0x"+transaction.serialize().toString("hex"))
            .on("transactionHash",console.log);
                
            contract.methods.balanceOf(myAddress).call()
            .then(function(balance){console.log(balance)});
        })
    });
app.listen(3000, () => console.log("Example app listening on port 3000!"))

如果希望快速進行以太坊開發(fā),那請看我們精心打造的教程:

以太坊開發(fā)實戰(zhàn)進階,主要是介紹使用node.js、mongodb、區(qū)塊鏈、ipfs實現(xiàn)去中心化電商DApp實戰(zhàn),適合進階。

匯智網(wǎng)原創(chuàng)翻譯,轉載請標明出處。這里是原文

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

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/24306.html

相關文章

  • Java開發(fā)區(qū)塊鏈的三大sdk庫

    摘要:是企業(yè)與區(qū)塊鏈相遇的地方。的框架旨在成為開發(fā)區(qū)塊鏈解決方案的支柱。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 如果你想將區(qū)塊鏈合并到一個Java項目中,現(xiàn)在我們來看看就是這個細分領域中三個最大的OSS玩家。 好的伙計們,我們都聽說過比特幣,以太坊或其他加密貨幣,其中有一些時髦的名字圍繞著我們常見的新聞,但我們作為Java開發(fā)人員知道如何輕松地與這些區(qū)塊鏈技術進行交互嗎?以...

    iKcamp 評論0 收藏0
  • 以太DApp開發(fā)入門教程——Node.js和truffle框架打造區(qū)塊鏈投票系統(tǒng)

    摘要:第一節(jié)課程概述本課程面向初學者,內容涵蓋以太坊開發(fā)相關的基本概念,并將手把手地教大家如何構建一個基于以太坊的完整去中心化應用區(qū)塊鏈投票系統(tǒng)。第七節(jié)以太坊世界計算機以太坊是一種區(qū)塊鏈的實現(xiàn)。交易數(shù)據(jù)以太坊中每筆交易都存儲在區(qū)塊鏈上。 第一節(jié) 課程概述 本課程面向初學者,內容涵蓋以太坊開發(fā)相關的基本概念,并將手把手地教大家如何構建一個 基于以太坊的完整去中心化應用 —— 區(qū)塊鏈投票系統(tǒng)。 ...

    zebrayoung 評論0 收藏0
  • 以太DApp開發(fā)入門教程——Node.js和truffle框架打造區(qū)塊鏈投票系統(tǒng)

    摘要:第一節(jié)課程概述本課程面向初學者,內容涵蓋以太坊開發(fā)相關的基本概念,并將手把手地教大家如何構建一個基于以太坊的完整去中心化應用區(qū)塊鏈投票系統(tǒng)。第七節(jié)以太坊世界計算機以太坊是一種區(qū)塊鏈的實現(xiàn)。交易數(shù)據(jù)以太坊中每筆交易都存儲在區(qū)塊鏈上。 第一節(jié) 課程概述 本課程面向初學者,內容涵蓋以太坊開發(fā)相關的基本概念,并將手把手地教大家如何構建一個 基于以太坊的完整去中心化應用 —— 區(qū)塊鏈投票系統(tǒng)。 ...

    MASAILA 評論0 收藏0
  • 區(qū)塊鏈開發(fā)中使用的最流行的編程語言

    摘要:我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。,一種在以太坊開發(fā)人員中流行的新的簡單編程語言,因為它是用于開發(fā)以太坊智能合約的語言。它是全球至少萬開發(fā)人員使用的世界上最流行的編程語言之一。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。區(qū)塊鏈技術處于初期階段,然而這種顛覆性技術已經(jīng)成功地風靡全球,并且最近經(jīng)歷了一場與眾不同的繁榮。由于許多...

    2shou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<