Web3.js介绍 · Ethereum Blockchain Developer Crash Course(一)web3概念和简单使用

本教程教你如何使用Web3.js 库,这是一个和以太坊区块链交互的JavaScript库,本教程讲授什么是Web3.js,如何使用它和区块链交互。原文地址:http://www.dappuniversity.com/articles/web3-js-intro

一、什么是web3.js

开发基于以太坊的区块链应用,一般有两个方面:

  1. 智能合约开发 - writing code that gets deployed to the blockchain with the Solidity programming language.
  2. 开发与区块链交互的网页或者客户端 - writing code that reads and writes data from the blockchain with smart contracts.

Web3.js 帮助你完成第二个方面的工作,它是能帮助你完成发送以太币、读写智能合约的数据、创建智能合约等功能的一系库。

以下是客户端如何与以太坊交互的示意图:

Web3.js 通过 JSON RPC( "Remote Procedure Call")远程过程调用来与区块链交互。Ethereum以太坊是由一些包含区块链上所有数据和代码的节点组成的点对点网络。 Web3.js 允许我们通过JSON RPC来向某个以太坊节点发送请求以读写数据,这有点像使用 jQuery with a JSON API 去读写 web server的数据。

二、开发工具

要使用web3.js,可以先在官网进行下载,安装完成后自带npm包管理工具

Infura RPC URL

为了通过JSON RPC与 the Main Net主链上的以太坊节点连接,我们可以使用 Geth or Parity 当作以太坊客户端节点,但是这样需要下载很多主链的数据,也要保持同步,这个是很大的负担。为了方便,我们可以使用Infura 去连接以太坊节点,Infura是一个提供远程以太坊节点的免费服务,只需要注册,获取an API key 和你想连接的网络的 the RPC URL。

注册成功后,你的Infura RPC URL大概是这样:   https://mainnet.infura.io/YOUR_INFURA_API_KEY

三、使用web3.js

在命令行中首先要cd到有node_moduals目录的目录下,然后输入node命令,进入node控制台,这里的Ethereum-Score-Hella-master是一个truffle项目实例,我在该目录下已经用npm i web3安装过Web3.js

可以像以下方式获取web3.js:

const Web3 = require('web3')

现在你有一个变量,可以用来创建一个Web3连接,创建前,需要把the Infura URL赋值保存在变量中:

const rpcURL = "https://mainnet.infura.io/YOUR_INFURA_API_KEY"

如果用本地的ganache带图形界面的客户端,在启动后 rpcURL为 http://localhost:7545

如果用ganache-cli客户端,在命令行中输入ganache-cli后启动,rpcURL为http://localhost:8545

 

记得要替换 YOUR_INFURA_API_KEY,然后可以实例化一个 Web3连接:

const web3 = new Web3(rpcURL)

有了 Web3 连接就可以与以太坊主链进行通信。

如果用Infura的连接,我们用这个连接来检查账户余额: 0x90e63c3d53E0Ea496845b7a03ec7548B70014A91. 使用 web3.eth.getBalance()方法可以获取余额。如果用ganache的连接,可以复制ganache里面的账户地址,来查看余额。

const account = "0x90e63c3d53E0Ea496845b7a03ec7548B70014A91"
web3.eth.getBalance(address, (err, wei) => {
  balance = web3.utils.fromWei(wei, 'ether')
})

我们首先调用 web3.eth.getBalance()函数,它接受有两个参数的回调函数 an error and the balance . 暂时忽略错误error,用wei参数来引用余额,单位是Wei, 可以转换为以太币 web3.utils.fromWei(wei, 'ether')。

所有代码如下:

const Web3 = require('web3')
const rpcURL = '' // Your RPC URL goes here
const web3 = new Web3(rpcURL)
const address = '' // Your account address goes here
web3.eth.getBalance(address, (err, wei) => {
  balance = web3.utils.fromWei(wei, 'ether')
})

这里我们用ganache的地址,复制之后在windows命令行里右键一下就粘贴了:

Web3.js介绍 · Ethereum Blockchain Developer Crash Course(一)web3概念和简单使用_第1张图片

 

建议阅读web3的官方文档:

https://web3js.readthedocs.io/en/1.0/

你也可以查看web3的源代码:

https://github.com/ethereum/web3.js/

你可能感兴趣的:(web3)