Infura 入门

Flying
2023-09-28 / 0 评论 / 85 阅读 / 正在检测是否收录...

区块链开发可能会很复杂。毫不奇怪,在一个基于一系列复杂协议运行的去中心化系统内工作时,有许多因素需要考虑。即使是最简单的活动,你也需要访问区块链节点,检查燃料价格,支付燃料费用,签署交易等。本指南提供了设置和开始使用 Infura 所需的所有步骤。你将能够设置 Infura API 密钥,访问 Ethereum(Sepolia)区块链,并使用 Infura 构建你的 DApp。在本指南结束时,你将明白为什么领先的 DApp 和工具,如 MetaMask、Uniswap 和 MakerDAO,依赖 Infura 的可靠性、易用性和规模来推动他们的事业。

infura.svg

Infura是一套功能强大的 API 和开发者工具,它在最流行的区块链上(包括 Ethereum、Linea、Arbitrum、StarkNet、IPFS 等)抽象了这些复杂性。通过使用 Infura,你可以花更多时间构建你的 DApp,而不是担心诸如可扩展性和正常运行时间等细节。

先决条件

要开始,你需要进行一次性设置,安装一些创建和部署 DApp 所必需的工具和软件。

设置 MetaMask

首先,为了在区块链上进行交易(例如,部署合同或铸造 NFT),你需要一个加密钱包。

市场上有几种钱包选择,但我们将使用最受欢迎和易于使用的 MetaMask。MetaMask 是一个自托管的钱包,让用户完全掌控他们的加密货币和交易授权。MetaMask 可以作为浏览器扩展程序免费获取

安装扩展程序后,MetaMask 将要求你完成一系列简单的步骤,为你设置一个钱包。在此过程中,你将获得一个 秘密短语,用于访问和管理你的钱包。请确保安全地存储此秘密短语(最好在数字和物理空间都存放),并且不要公开分享它。如果有人得知你的秘密短语,他们就可以窃取你钱包中的资产。我们建议为开发目的创建一个单独的钱包地址,不要在其中存放有价值的资产。

切换到 Sepolia 测试网络

一旦设置好你的钱包,导航到钱包窗口右上角,点击 显示 / 隐藏测试网络。显示测试网络后,你将看到 Sepolia 的下拉选项。将你的网络从 Ethereum 主网 切换到 Sepolia 测试网络

infura-sepolia-netwrok.png

如果这是你第一次使用钱包,你应该会看到 SepoliaETH 余额 为 0。我们将在稍后的步骤中为此钱包提供资金。

Node.js 和 npm

我们将使用 Truffle 来创建你的项目基础。Truffle 是一个业界领先的以太坊开发环境,允许你创建、测试和部署基于 EVM 的区块链上的智能合同。

要使用 Truffle,你需要首先安装 Node.js 和 npm。你可以按照这些说明在你的本地机器上安装它们。

你可以使用命令行验证它们的成功安装。(你的版本号可能与下面显示的不同。)


$ node -v
v16.13.0

$ npm -v
8.19.4

步骤一:获取 Infura API 密钥

如前所述,Infura 是一个工具,可以让你轻松、快速、可靠地访问大多数主要的公共区块链和 L2s,包括 Ethereum。Infura 通过提供 RPC 端点来实现这一点。将 RPC 端点视为你可以发送请求的 API 端点。为了访问这些端点,你需要一个 Infura API 密钥。

创建一个账户

要获得 API 密钥,你首先需要注册一个免费的 Infura 账户。注册完成后,你将被带到仪表板。该仪表板允许你完成各种任务,例如:

  • 创建新的 API 密钥
  • 查看分析数据
  • 访问支持和其他有用的资源
  • 设置项目安全性
  • 升级你的计划并激活附加网络
  • 获取主网和测试网的网络端点

创建 API 密钥

从仪表板中,点击 Create New API Key。这将打开一个弹出窗口。对于网络,请选择 Web3 API。你可以随意命名项目名称。

infura-api.png

一旦你点击 Create,Infura 将为你创建一个新的 API 密钥,并将你重定向到密钥的仪表板页面。在你的密钥项目中导航到 Endpoints 页面。

在此页面上,你将看到所有可以访问的 RPC 端点。在 Ethereum 端点下,选择 Sepolia 的端点。端点的格式应为 https://sepolia.infura.io/v3/[ 你的 API 密钥]。

infura-endpoint.png

完成此步骤后,我们建议你通过添加一个新的自定义网络将你自己的 RPC 端点添加到 MetaMask 中。这将允许你直接从 Infura 仪表板跟踪 MetaMask 请求,并了解当你从 MetaMask 钱包发送交易时后台发生了什么。

步骤二:设置开发环境

有了 MetaMask 钱包和 Infura RPC 端点,你就可以开始使用 Truffle 设置你的开发环境。

初始化一个 Node.js 项目

首先,让我们设置一个 Node 项目并安装所有必需的软件包。通过运行以下命令创建一个空的 Node 仓库:

$ mkdir infura-project && cd infura-project

$ npm init -y

接下来,安装 Truffle:

$ npm -g install truffle

请记住,我们安装 MetaMask 是为了能够支付在区块链上进行的交易。你需要为 Truffle 提供访问你的钱包的权限,以便它可以代表你执行该操作。为此,你将需要另一个软件包:hdwallet-provider

$ npm install @truffle/hdwallet-provider

你将与你的 Truffle 项目共享你的钱包秘密短语。在任何情况下,我们都不希望这些秘密短语被公开。你绝不应该将你的秘密短语或凭据硬编码到你的项目中。相反,请通过环境变量提供它们。

我们将使用 dotenv 和 gitignore 来做到这一点。这样可以防止你被提交到版本控制系统,并在共享代码仓库(如 GitHub)时减少意外曝露的风险。

$ npm install dotenv

$ touch .env 

在这里添加你的项目密钥和钱包地址。

$ touch .gitignore

然后,在 .gitignore 中添加 .env 以确保 GitHub 不会将包含你密钥的文件公开。

创建一个 Truffle 项目

现在,我们可以创建一个基本的 Truffle 项目。从 Node.js 项目根文件夹中运行以下命令:

$ npx truffle init

为了确保一切正常运行,请运行以下命令:

$ npx truffle test

Compiling your contracts...

===========================

> Everything is up to date, there is nothing to compile.

✓ Downloading compiler. Attempt #1.

  0 passing (1ms)

如果没有收到任何错误,你可以继续进行你的项目。如果有任何问题,请查看 Truffle 的支持和帮助页面

在你的项目中,你现在应该看到一个 contracts 子文件夹。在该文件夹中,让我们创建一个非常简单的智能合同,放在一个名为 Donations.sol 的文件中。该合同执行以下操作:

  1. 允许任何人捐款。
  2. 允许合同的所有者提取所有捐款。

Donations.sol 的代码应该如下所示:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Donations {
  address public owner;

  constructor() {
    owner = msg.sender;
  }

  // Function to donate
  function donate() public payable {
    require(msg.value > 0, "Donation needs to be a positive value");
  }

  // Withdraw ether
  function withdraw() public payable {
    require(msg.sender == owner, "Only the owner can withdraw!");

    uint balance = address(this).balance;
    require(balance > 0, "No ether left to withdraw");

    (bool success, ) = (msg.sender).call{value: balance}("");
    require(success, "Transfer failed.");
  }
}

使用以下命令编译合同:

$ npx truffle compile

Compiling your contracts...

===========================

> Compiling ./contracts/Donations.sol

> Artifacts written to /home/user/infura-project/build/contracts

> Compiled successfully using:

   - solc: 0.8.20+commit.a1b79de6.Emscripten.clang

配置 Truffle 和环境变量

接下来,我们需要一个文件来存储我们的环境变量。这是我们将放置项目秘密的地方,即你的 MetaMask 钱包秘密短语和包含 Infura API 密钥的 Sepolia RPC 端点。

在你的项目根文件夹中,创建一个名为 .env 的文件,包含以下信息:

INFURA_ENDPOINT=https://sepolia.infura.io/v3/<Your-API-Key>

MNEMONIC=<Your-MetaMask-Secret-Recovery-Phrase>

接下来,让我们注入这些信息并配置你的 Truffle 项目。用以下内容替换 truffle.config.js 的内容:

require('dotenv').config();
const HDWalletProvider = require('@truffle/hdwallet-provider');
const { INFURA_ENDPOINT, MNEMONIC } = process.env;

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*"

    },

    sepolia: {
      provider: () => new HDWalletProvider(MNEMONIC, INFURA_ENDPOINT),
      network_id: '11155111',
    }
  },

  compilers: {
    solc: {
      version: "0.8.19",
    }
  }
};

步骤三:部署到 Sepolia

现在我们已经配置了 Truffle 项目并编写了智能合同,我们可以将其部署到 Sepolia 区块链上。

使用 获取测试用的 SepoliaETH

尽管我们已经设置了你的 MetaMask 钱包并配置它使用 Sepolia 网络,但你的钱包余额仍然是 0 个 SepoliaETH。为了执行任何交易,比如部署合同、进行捐款甚至取回捐款,你将需要支付燃料费用。因此,你需要在你的钱包中有一些 SepoliaETH。

由于我们将合同部署到测试网络(Sepolia),你可以通过 Infura Sepolia 水龙头免费获得这些代币。

infura-balance.png

一旦你的钱包充满,你应该能够看到一个小小的 SepoliaETH 余额。

将智能合同部署到 Sepolia

为了将你的合同部署到 Sepolia,我们将编写一个名为 1_deploy_contract.js 的脚本。在 migrations 文件夹中创建这个文件,并粘贴以下代码:


const Donations = artifacts.require("Donations");

module.exports = async function (deployer) {

  try {
    // Deploy the Donations contract
    await deployer.deploy(Donations);
    // Get the deployed instance
    const donationsInstance = await Donations.deployed();
    console.log("Donations contract deployed at:", donationsInstance.address);

  } catch (error) {
    console.error("Error deploying the contract:", error);
  }
};

然后,部署智能合同:

$ npx truffle migrate --network sepolia

如果一切顺利,你应该会看到类似以下的输出:

===========================

> Everything is up to date, there is nothing to compile.

Migrations dry-run (simulation)

===============================

> Network name:    'sepolia-fork'

> Network id:      11155111

> Block gas limit: 30000000 (0x1c9c380)

…

Summary

=======

> Total deployments:   1

> Final cost:          0.000878097503161151 ETH

恭喜!你的合同现在已经上线了!你可以通过在 Sepolia Etherscan 上搜索你的合同地址来进行双重检查。

infura-etherscan.png

你还可以通过上传源代码在 Etherscan 上验证你的合同,Etherscan 将与区块链上的代码进行匹配和比较。在 Etherscan 页面上,点击 Contract 选项卡,然后点击 Verify and Publish

infura-verify.png

完成此验证后,你将在合同选项卡上看到绿色的勾号。

infura-checked.png

步骤四:使用 MetaMask 发送交易

现在,让我们向这个合同捐赠一小笔金额(0.001 ETH)。导航到 Contract 选项卡,然后到 Write Contract 选项卡。点击 Connect to Web3

infura-start-connect.png

这将打开一个模态框,提示你连接到钱包。选择你的 MetaMask 钱包。

infura-connect.png

一旦你的钱包连接成功,你可以点击 donate。输入要捐赠的金额(0.001),然后点击 Write

infura-balance.png

你的 MetaMask 钱包将弹出,要求你确认此交易。点击 Confirm

infura-confirmt.png

在你确认了交易后,你可以查看交易详情。智能合同的交易列表还显示了最近的交易。

infura-tx-detail.png

这就是全部!仅需几次点击,你就能够通过 MetaMask 在你的智能合同上进行捐赠。这个过程中的每一步都由 Infura 提供支持。

步骤五:跟踪智能合同活动

要查看 Infura 在后台完成的工作,你可以查看与我们的 Infura 项目相关的分析数据。导航到主 Infura Dashboard,找到你的项目,并点击 View Stats

infura-tx-stats.png

如果这是你刚刚创建的项目,请将时间线更改为 Last 1 Hour

infura-filter.png

你将能够看到在该时间窗口内所做的请求数量。

infura-req-vol.png

你还应该能够看到发送到 Sepolia Ethereum 区块链的具体请求。在表面上,你只是进行了几次点击,但是为了实现我们想要做的事情,已经传播了数百个请求。

infura-req-aty.png

要查看你的 MetaMask 交易,你需要通过将默认的 MetaMask RPC 切换到 Infura RPC 端点来更新 MetaMask RPC 端点。

步骤六:开始构建

Infura 通过允许你连接到不同的区块链网络,而无需运行自己的节点,简化了你作为区块链开发人员的工作。这样可以处理你的 DApp 的可扩展性、正常运行时间和可靠性,使你可以专注于你的业务或产品的核心逻辑。
现在,你已经设置好了,让我们开始使用以下资源构建:

1

评论 (0)

取消