基于ethers.js连接小狐狸快速开发

本文详细介绍了如何在以太坊上进行开发,包括通过MetaMask连接账户、使用RPCAPI、查询区块链状态、发送交易、创建和使用合约,以及签名消息等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:安装
以太坊中各种类和函数都可以从@ethersproject下的子库中手动进行导入,但对于大多数项目来说,用完整的总库是最简单的入门方式。

npm install --save ethers

2:导入

const {
    ethers } = require("ethers");
import {
    ethers } from "ethers";

3.Web 浏览器

出于安全,通常较好的方式是将这个库复制到你的web服务器中来进行各种操作。但若想快速构建实例展示,可以将我们的CDN加载到你的web应用程序中。

在浏览器中通过ES6的方式
<script type="module">
    import {
    ethers } from "https://cdn.ethers.io/lib/ethers-5.2.esm.min.js";
    // Your code here...
</script>
在浏览器中通过ES3 (UMD)的方式
<script src="https://cdn.ethers.io/lib/ethers-5.2.umd.min.js"
        type="application/javascript"></script>

常用术语

Provider(提供者)是一个用于连接以太坊网络的抽象类,提供了只读形式来访问区块链网络和获取链上状态。
Signer(签名器)通常是以某种方式直接或间接访问私钥,可以签名消息和在已授权网络中管理你账户中的以太币来进行交易。
Contract(合约)是一个运行在以太坊网络上表示现实中特定合约的抽象,应用可以像使用JavaScript对象一样使用它。

方式1:连接以太坊: MetaMask
在以太坊上去开发和测试的最快、最简单的方法是使用MetaMask, 它是一个基于浏览器的扩展程序,提供了:
连接以太坊网络 (a Provider)
保存你的私钥并且可以签名 (a Signer)

连接 MetaMask
// A Web3Provider wraps a standard Web3 provider, which is
// what MetaMask injects as window.ethereum into each page

const provider = new ethers.providers.Web3Provider(window.ethereum)

// The MetaMask plugin also allows signing transactions to
// send ether and pay to change state within the blockchain.
// For this, you need the account signer…

const signer = provider.getSigner()

方式2:连接以太坊: RPC
JSON-RPC API 另一种与以太坊交互的比较流行的方式,用在所有主要的以太坊节点 (如 Geth 和 Parity) 以及许多第三方web服务 (如 INFURA)。 它通常提供了:

**连接以太坊网络 (Provider)
保存你的私钥并且可以签名 (Signer)** 

连接一个 RPC 客户端
// If you don’t specify a //url//, Ethers connects to the default
// (i.e. http:/\/localhost:8545)

const provider = new ethers.providers.JsonRpcProvider();
const signer = provider.getSigner()

查询区块链

当你有了Provider之后, 你就可以通过只读的方式连接区块链, 此外,你还可以使用它来查询当前状态、获取历史日志、查找部署的代码等等。
基础查询

// Look up the current block number
**await provider.getBlockNumber()**
// 16383845

// Get the balance of an account (by address or ENS name, if supported by network)
**balance = await provider.getBalance("ethers.eth")**
// {
    BigNumber: "182334002436162568" }

// Often you need to 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值