区块链开发可能会很复杂。毫不奇怪,在一个基于一系列复杂协议运行的去中心化系统内工作时,有许多因素需要考虑。即使是最简单的活动,你也需要访问区块链节点,检查燃料价格,支付燃料费用,签署交易等。本指南提供了设置和开始使用 Infura 所需的所有步骤。你将能够设置 Infura API 密钥,访问 Ethereum(Sepolia)区块链,并使用 Infura 构建你的 DApp。在本指南结束时,你将明白为什么领先的 DApp 和工具,如 MetaMask、Uniswap 和 MakerDAO,依赖 Infura 的可靠性、易用性和规模来推动他们的事业。
Infura是一套功能强大的 API 和开发者工具,它在最流行的区块链上(包括 Ethereum、Linea、Arbitrum、StarkNet、IPFS 等)抽象了这些复杂性。通过使用 Infura,你可以花更多时间构建你的 DApp,而不是担心诸如可扩展性和正常运行时间等细节。
先决条件
要开始,你需要进行一次性设置,安装一些创建和部署 DApp 所必需的工具和软件。
设置 MetaMask
首先,为了在区块链上进行交易(例如,部署合同或铸造 NFT),你需要一个加密钱包。
市场上有几种钱包选择,但我们将使用最受欢迎和易于使用的 MetaMask。MetaMask 是一个自托管的钱包,让用户完全掌控他们的加密货币和交易授权。MetaMask 可以作为浏览器扩展程序免费获取。
安装扩展程序后,MetaMask 将要求你完成一系列简单的步骤,为你设置一个钱包。在此过程中,你将获得一个 秘密短语,用于访问和管理你的钱包。请确保安全地存储此秘密短语(最好在数字和物理空间都存放),并且不要公开分享它。如果有人得知你的秘密短语,他们就可以窃取你钱包中的资产。我们建议为开发目的创建一个单独的钱包地址,不要在其中存放有价值的资产。
切换到 Sepolia 测试网络
一旦设置好你的钱包,导航到钱包窗口右上角,点击 显示 / 隐藏测试网络。显示测试网络后,你将看到 Sepolia 的下拉选项。将你的网络从 Ethereum 主网 切换到 Sepolia 测试网络。
如果这是你第一次使用钱包,你应该会看到 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。你可以随意命名项目名称。
一旦你点击 Create,Infura 将为你创建一个新的 API 密钥,并将你重定向到密钥的仪表板页面。在你的密钥项目中导航到 Endpoints 页面。
在此页面上,你将看到所有可以访问的 RPC 端点。在 Ethereum 端点下,选择 Sepolia 的端点。端点的格式应为 https://sepolia.infura.io/v3/[ 你的 API 密钥]。
完成此步骤后,我们建议你通过添加一个新的自定义网络将你自己的 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
的文件中。该合同执行以下操作:
- 允许任何人捐款。
- 允许合同的所有者提取所有捐款。
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 水龙头免费获得这些代币。
一旦你的钱包充满,你应该能够看到一个小小的 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 上搜索你的合同地址来进行双重检查。
你还可以通过上传源代码在 Etherscan 上验证你的合同,Etherscan 将与区块链上的代码进行匹配和比较。在 Etherscan 页面上,点击 Contract 选项卡,然后点击 Verify and Publish。
完成此验证后,你将在合同选项卡上看到绿色的勾号。
步骤四:使用 MetaMask 发送交易
现在,让我们向这个合同捐赠一小笔金额(0.001 ETH)。导航到 Contract 选项卡,然后到 Write Contract 选项卡。点击 Connect to Web3。
这将打开一个模态框,提示你连接到钱包。选择你的 MetaMask 钱包。
一旦你的钱包连接成功,你可以点击 donate。输入要捐赠的金额(0.001),然后点击 Write。
你的 MetaMask 钱包将弹出,要求你确认此交易。点击 Confirm。
在你确认了交易后,你可以查看交易详情。智能合同的交易列表还显示了最近的交易。
这就是全部!仅需几次点击,你就能够通过 MetaMask 在你的智能合同上进行捐赠。这个过程中的每一步都由 Infura 提供支持。
步骤五:跟踪智能合同活动
要查看 Infura 在后台完成的工作,你可以查看与我们的 Infura 项目相关的分析数据。导航到主 Infura Dashboard,找到你的项目,并点击 View Stats。
如果这是你刚刚创建的项目,请将时间线更改为 Last 1 Hour。
你将能够看到在该时间窗口内所做的请求数量。
你还应该能够看到发送到 Sepolia Ethereum 区块链的具体请求。在表面上,你只是进行了几次点击,但是为了实现我们想要做的事情,已经传播了数百个请求。
要查看你的 MetaMask 交易,你需要通过将默认的 MetaMask RPC 切换到 Infura RPC 端点来更新 MetaMask RPC 端点。
步骤六:开始构建
Infura 通过允许你连接到不同的区块链网络,而无需运行自己的节点,简化了你作为区块链开发人员的工作。这样可以处理你的 DApp 的可扩展性、正常运行时间和可靠性,使你可以专注于你的业务或产品的核心逻辑。
现在,你已经设置好了,让我们开始使用以下资源构建:
评论 (0)