用 Node.js 轉帳 ETH

0 前言

本文轉自個人我的播客系列文章html

第2天,搭建開發環境,用 Node.js 轉帳 ETH | 5天掌握以太坊 dApp 開發node

歡迎你來,一塊兒技術討論git

本章咱們主要學習 以太坊開發環境的搭建,並運行一個 Demo --- 通代碼來轉帳 ETHgithub

1 開發環境介紹

以太坊的開發環境分紅三大類web

  • 本地測試環境: Local Test Network
  • 線上測試環境包括:
    • Ropsten Test Network
    • Rinkeby Test Network
    • Kovan Test Network
    • Goerli Test Network
  • 線上生產環境:Mainnet Network( 以太坊主網 )

通常狀況下,咱們的項目開發流程是shell

本地測試環境 --> 線上測試環境 --> 生產環境npm

可是,本文得講解過程推薦先快速跑通 Ropsten 環境,而後跑通本地開發環境。json

緣由是按照我提供的 ethereum-demo 來跑通 Ropsten 環境會相對容易,整個過程接近咱們平時的轉帳,所以更容易瞭解以太坊的運做流程。bash

2 Ropsten 環境快速開始

2.1 生成隨機帳戶

訪問 助記詞生成頁面,生成助12個助記詞,做爲測試開發使用。網絡

保存好隨機生成的助記詞

記下第一個地址 Account[0],下面要給 Account[0] 領取測試 ETH

2.2 領取測試 ETH

在 Ropsten 網絡中得到測試 ETH 是很是的方便,只要到 Ropsten Ethereum Faucet 上填入你的以太坊地址,測試環境就會爲你提供 1ETH

填入 Account[0] 地址,申請 1ETH

領取1eth

2.3 註冊 Infura

咱們平時用的以太坊錢包,TrustWalletMetamaskMyEtherWallet 等,都要經過發送 JSON-RPC 纔可以接入到以太坊的網絡中。 所以咱們須要一個能夠提供 RPCURL 的平臺 -- Infura。

  • 訪問 infura.io/, 註冊一個賬號
  • 記住 wss://ropsten.infura.io/v3/xxxxx 這串,後面要使用。( ENDPOINTS 選擇 ROPSTEN)

2.4 運行代碼

我準備了一個 ethereum-demo ,來幫助你們快速 Setup;

Repo 地址:github.com/netpi/ether…;

 #1
git clone https://github.com/netpi/ethereum-demo.git
 #2
cd ethereum-demo
 #3 
npm install
 # nodejs v8.17.0 (web3.js@1.x 目前支持 NODE_MODULE_VERSION 57 )
複製代碼

修改 ropsten.config.js 文件,把第一步中生成的助記詞和 infura.io 中申請的 RPC-URL 地址填入。

// ropsten.config.js

module.exports = {
  mnemonic: "你的助記詞",
  rpcurl: "RPC 地址" // 格式如:wss://ropsten.infura.io/ws , 可訪問 infura.io 註冊申請
}

複製代碼

執行 transforEth.js

上一步中,咱們領取的 Ropsten 環境 1ETH 應該已經到帳了。

transforEth.js 作的事情是:Account[0] 轉帳 0.01ETH 到 Account[1]

node transferEth.js
複製代碼

若是看到控制檯打印出如下內容,說明轉帳成功

{ blockHash: '0x47a243a7d3cf9e1a82d2dfb16bb4db65c248ebd8b5188510ae39be3ddfb80633',
  blockNumber: 8008669,
  contractAddress: null,
  cumulativeGasUsed: 412061,
  from: '0x15e35634f38f416830aaf09e35b323b516af6d36',
  gasUsed: 21000,
  logs: [],
  logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
  status: true,
  to: '0x75d60374fd1740d1bcdc033084deaaa57a7d8321',
  transactionHash: '0x2bf9563c4b094d09ad252bce7ffca5f93438ee0797b3c94be5513e9cc77422d8',
  transactionIndex: 8 }

複製代碼

最後能夠訪問 ropsten.etherscan.io/ 搜索 transactionHash 來查看轉帳詳情

例如:我在演示中轉帳成功的 transactionHash 查詢地址: 點擊查看

至此 Ropsten Test Network 就跑通了,咱們成功的在以太坊網絡中經過代碼完成了一次 0.01ETH 的價值轉移。

3 配置本地環境

按照上述步驟 Ropsten 環境已經配置成功,那麼接下來配置本地開發就很是容易了。

3.1 使用 Ganache

本地環境中,提供 JSON-RPC 服務的是,ganache-cli

訪問 www.trufflesuite.com/ganache 下載 Ganache 客戶端;

運行 Ganache,在 設置 --> ACCOUNTS & KEYS 中 配置好你的助記詞,點擊右上角的 SAVE AND RESTART

這樣你就 Setup 好了一個本地的 JSON-RPC 環境了。

3.2 本地環境運行代碼

咱們來配置一下本地環境,拷貝 RPC SERVER (我默認的地址是:http://127.0.0.1:7545)

修改 local.config.js 文件

// local.config.js
module.exports = {
  mnemonic: "你的助記詞",
  rpcurl: "http://127.0.0.1:7545" 
}

複製代碼

切換 transferEth.js 引用的 local.config.js 文件

const Web3 = require('web3');
// const config = require('./ropsten.config.js'); // ropsten test network
const config = require('./local.config.js'); // local test network
const HDWalletProvider = require("@truffle/hdwallet-provider");
const mnemonic = config.mnemonic; 
...
複製代碼

執行 tranferEth.js

node tranferEth.js
複製代碼

一樣的,看到以下輸出說明成功

{ transactionHash: '0xdd6c68c8ac4071fa1cc5f39d0954d8240b8fcf272dd2dca2765c09cfb93180b1',
  transactionIndex: 0,
  blockHash: '0x9fadfcf19571d574e03cb410e10c0c817fe76a1e4a1339ff89c2f03afcd5c14e',
  blockNumber: 1,
  from: '0x15e35634f38f416830aaf09e35b323b516af6d36',
  to: '0x75d60374fd1740d1bcdc033084deaaa57a7d8321',
  gasUsed: 21000,
  cumulativeGasUsed: 21000,
  contractAddress: null,
  logs: [],
  status: true,
  logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' }
複製代碼

3.3 經過 Ganache 查看本地鏈上信息

這時再看 Ganache,Account[0] 帳戶餘額變成了 99.99ETH,Account[1]的餘額變成了 100.01ETH,說明轉帳成功。

咱們還能夠在 Ganache TRANSACTION 中查看 TX 的細節

至此咱們在本地環境中完成了一次價值轉移,本地環境搭建成功。

總結

經過本章的實踐,咱們成功跑通了 Ropsten Test NetworkLocal Test Network,並用經過運行代碼完成了 ETH 交易。

下一章節中,咱們將主要學習本章中 transferEth.js 裏所涉及的知識點 --- Web3.js 工做原理助記詞原理詳解。 以及智能合約的編寫、調試與發佈等。

相關文章
相關標籤/搜索