跳转至主要内容

以太坊开发入门

javascriptethers.js节点查询Alchemy
初学者
Elan Halpern
(opens in a new tab)
2020年10月30日
6 分钟阅读 minute read

以太坊和Alchemy徽标

这是一份关于以太坊开发的初学者指南。 在本教程中,我们将使用 Alchemy(opens in a new tab),这是一个领先的区块链开发者平台,为 70% 的顶级区块链应用程序(包括 Maker、0x、MyEtherWallet、Dharma 和 Kyber)的数百万用户提供支持。 Alchemy 使我们能够访问以太坊链上的 API 端点,这样我们就可以读写交易。

我们将带你注册Alchemy来编写你的第一个web3 脚本! 无需区块链的开发经验!

1. 注册免费Alchemy帐户

创建 Alchemy 帐户很容易,点击此处免费注册(opens in a new tab)

2. 创建一个Alchemy应用程序

为了与以太坊通信,以及为了使用 Alchemy 的产品,你需要一个 API 密钥来验证你的请求。

你可以通过仪表板(opens in a new tab)创建API密钥。 要创建一个新密钥,导航到如下所示的“Create App”:

特别感谢ShapeShift(opens in a new tab)让我们展示他们的仪表板!

Alchemy仪表板

填写“Create App”下的详细信息以获取你的新密钥。 在此处还可以看到你以前创建的应用以及你的团队创建的应用。 通过点击任何应用的“View Key”来查看现有密钥。

使用Alchemy创建应用程序的截图

你也可以通过将鼠标悬停在“Apps”上并选择一个来获取现有API密钥。 你可以在这里“查看密钥”,以及“编辑应用程序”来特定域名加入白名单、查看几个开发者工具,并查看分析。

显示用户如何获取API密钥的GIF图

3. 在命令行中发送请求

使用JSON-RPC和curl通过Alchemy与以太坊区块链交互。

对于手动请求,我们建议通过JSON RPC发送POST请求来进行交互。 只需传入Content-Type: application/json标头和查询作为POST主体,具有以下字段:

  • jsonrpc: JSON-RPC版本,目前只支持2.0
  • method:ETH API方法。 请参阅API参考。(opens in a new tab)
  • params:要传递到方法的参数列表。
  • id:请求的ID。 将通过响应返回,这样就可以跟踪一个响应属于哪个请求。

这是一个可通过命令行运行的示例,用于查询当前燃气价格:

curl https://eth-mainnet.alchemyapi.io/v2/demo \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'

注意:https://eth-mainnet.alchemyapi.io/v2/demo(opens in a new tab) 替换成你自己的应用程序接口密钥 https://eth-mainnet.alchemyapi.io/v2/**your-api-key

结果:

1{ "id": 73,"jsonrpc": "2.0","result": "0x09184e72a000" // 10000000000000 }
复制

4. 设置Web3客户端

如果你已有客户端, 将你当前的节点提供商的 URL 更改为你的 API 密钥的 Alchemy URL: “https://eth-mainnet.alchemyapi.io/v2/your-api-key”

注意:下面的脚本需要在一个节点环境中运行或保存到一个文件运行,而不是通过命令行运行。 如果你尚未安装节点或npm ,请查看此适用于mac的快速设置指南

许多 Web3 库(opens in a new tab)都可以和 Alchemy 集成。但是,我们建议使用 Alchemy Web3(opens in a new tab),它是 web3.js 的替代插件,可与 Alchemy 无缝协作。 这个库有很多优点,例如自动重试和可靠的WebSocket支持。

要安装 AlchemyWeb3.js,请导航到项目目录并运行:

使用 yarn:

1yarn add @alch/alchemy-web3

使用 NPM:

1npm install @alch/alchemy-web3

要与Alchemy的节点基础设施交互,请在NodeJS中运行或将其添加到JavaScript文件:

1const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
2const web3 = createAlchemyWeb3(
3 "https://eth-mainnet.alchemyapi.io/v2/your-api-key"
4)
复制

5. 编写你的第一个Web3脚本!

现在用一个小的web3编程来练习,我们将编写一个简单的脚本,用于打印出以太坊主网中最新的区块高度。

1. 在终端中创建一个新的项目目录并通过 cd 命令进入该目录(如果尚未这样做):

1mkdir web3-example
2cd web3-example

2. 在项目中安装 Alchemy Web3(或任何 Web3)依赖项(如果尚未这样做):

1npm install @alch/alchemy-web3

3. 创建一个名为 index.js 的文件并添加以下内容:

最终应将demo替换为你的Alchemy HTTP API密钥 。

1async function main() {
2 const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
3 const web3 = createAlchemyWeb3("https://eth-mainnet.alchemyapi.io/v2/demo")
4 const blockNumber = await web3.eth.getBlockNumber()
5 console.log("The latest block number is " + blockNumber)
6}
7main()
复制

不熟悉 async 函数? 来看看这篇 Medium 文章(opens in a new tab)

4. 使用节点在终端中运行该脚本

1node index.js

5. 现在应该会在控制台中看到最新的区块编号输出结果!

1The latest block number is 11043912

哇! 恭喜! 你刚刚使用 Alchemy 编写了你的第一个 Web3 脚本🎉

不知道下一步该怎么做? 尝试部署你的第一个智能合约,开始练习 Solidity 编程同时参阅我们的 Hello World 智能合约指南(opens in a new tab),或使用 Dashboard Demo App(opens in a new tab) 测试你的仪表板知识!

免费注册 Alchemy(opens in a new tab),查看我们的相关文档(opens in a new tab),并关注我们的 Twitter(opens in a new tab) 了解最新消息。

上次修改时间: @izayl(opens in a new tab), 2024年4月24日

本教程对你有帮助吗?