如何使用 web3.js 或 ethers.js 连接到 Hedera 测试网?

Def*_*irl 4 web3js hedera-hashgraph ethers.js hedera

\xe2\x80\x8b\n我想使用 web3.js 或 ethers.js 与 Hedera 测试网进行交互。我该如何执行此操作?\n\xe2\x80\x8b\n我之前曾使用 与 Hedera Testnet 进行过交互hedera-sdk-js,\n例如使用以下代码:\n\xe2\x80\x8b

\n
import {\n    AccountBalanceQuery, \n    Client\n} from "@hashgraph/sdk";\n\xe2\x80\x8b\nconst client = new Client({\n    network: "testnet"\n});\n\xe2\x80\x8b\nconst accountId = \'0.0.3996280\';\nconst balance = await new AccountBalanceQuery()\n    .setAccountId(accountId)\n    .execute(client);\n    \nconsole.log(\n    `Balance of ${accountId} in Tinybars:`,\n    balance.hbars.toTinybars().toString(10)\n);\n\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x8b\n如何在 web3.js/ ethers.js 中执行与上述相同的操作?

\n

bgu*_*uiz 5

通过 viem 连接

\n

(1)\n首先,获取 RPC 端点 URL,\n详细信息请参阅如何通过 RPC 连接到 Hedera Testnet?

\n

一旦你明白了,替换${RPC_URL}值后,请用该值替换下面的代码示例。

\n

(2)\n安装viem:\n\xe2\x80\x8b

\n
npm install viem\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x80\x8b(3) 然后定义一个viem.Chain为 Hedera Testnet 定义一个实例:

\n
import { defineChain } from \'viem\';\n\nconst hederaTestnetChain = defineChain({\n    id: 0x128,\n    name: \'HederaTestnet\',\n    nativeCurrency: {\n        symbol: \'\xe2\x84\x8f\',\n        name: \'HBAR\',\n        decimals:  18,\n    },\n    rpcUrls: {\n        default: {\n            http: [\'${RPC_URL}\'],\n        },\n    },\n    blockExplorers: {\n        default: {\n            name: \'Hashscan\',\n            url: \'https://hashscan.io/testnet\'\n        },\n    },\n    contracts: {},\n});\n
Run Code Online (Sandbox Code Playgroud)\n

(4)\n然后使用以下脚本建立到 RPC 端点的连接,\n使用viem.createPublicClient,\n和查询eth_blockNumber并使用它进行查询:

\n
import { createPublicClient, http } from \'viem\';\n\nconst web3Client = createPublicClient({\n  chain: hederaTestnetChain,\n  transport: http(),\n});\n\nconst blockNumber = await web3Client.getBlockNumber();\n    console.log(\'block number\', blockNumber);\n
Run Code Online (Sandbox Code Playgroud)\n