viem

Viem是以太坊的类型码接口,提供与以太坊和其他 EVM 兼容区块链交互的底层基元。 由于 kaia 支持Ethereum Equivalence功能,因此 viem 等以太坊工具无需进行任何重大修改即可在 kaia 上使用。
因此,开发人员可以利用这种兼容性,使用 viem 库与 kaia 节点进行交互。
在本指南中,您将学习如何使用 viem 库从区块链读取数据、发送交易以及与 kaia 网络上的现有合约交互。
要求
- 代码编辑器:源代码编辑器,如 VS Code。
- Metamask:用于部署合约、签署事务和与合约交互。
- RPC 端点:可从受支持的 Endpoint Providers 中获取。
- 从 水龙头测试 KAIA:为您的账户注入足够的 KAIA。
- NodeJS和NPM
- TS-node:用于运行 TypeScript 脚本。
设置项目
开始时,您需要创建一个项目目录来存放本指南中要创建的文件。
mkdir viem-examplecd viem-example
1. 安装 viem
要安装 viem,请在终端运行以下命令:
npm i viem
在本教程中,我们将创建一系列脚本文件,用于从区块链读取数据、发送交易以及与现有智能合约交互。 要开始使用,您需要知道如何为每个脚本文件设置 viem。
2. 设置公共客户端和传输
首先,您需要用所需的 Transport 和 Chain 设置公共 客户端。 公共客户端是公共JSON-RPC API 方法的接口,例如通过公共操作检索区块编号、交易、读取智能合约等。
import { createPublicClient, http } from 'viem'import { klaytnBaobab } from 'viem/chains' const client = createPublicClient({ chain: klaytnBaobab, transport: http("https://public-en-kairos.node.kaia.io"), })
3. 设置钱包客户端和账户
其次,您需要设置一个钱包客户端与账户进行交互。 使用钱包客户端,您可以通过钱包操作执行检索账户、执行交易、签署信息等操作。
import { createWalletClient } from 'viem'import { privateKeyToAccount } from 'viem/accounts' const walletClient = createWalletClient({ chain: klaytnBaobab, transport: http("https://public-en-kairos.node.kaia.io")}) const account = privateKeyToAccount("PASTE PRIVATE KEY HERE");
从区块链读取数据
要从区块链中读取数据,请运行以下命令在项目文件夹中创建一个新的 read.ts 文件:
touch read.ts
创建该文件后,按照上文设置部分的步骤设置公共客户端。 在本节中,您将学习如何从区块链中读取数据(如 blockNumber、KAIA 余额)。
要查看实际效果,请在您的 read.ts 中粘贴以下代码。
import { createPublicClient, http, formatEther } from 'viem'import { klaytnBaobab } from 'viem/chains' const client = createPublicClient({ chain: klaytnBaobab, transport: http("https://public-en-kairos.node.kaia.io"), }) async function getBlockNumber() { const blockNumber = await client.getBlockNumber() console.log(`Current block number is: ${blockNumber}`);}async function getKlayBalance() { const balance = await client.getBalance({ address: '0x75Bc50a5664657c869Edc0E058d192EeEfD570eb', }) const formatBal = formatEther(balance); console.log(`Current KAIA balance is ${formatBal}`); }getBlockNumber();getKlayBalance();
输出
要运行脚本并从区块链中读取数据,请在终端中粘贴以下命令:
npx ts-node read.ts
如果交易成功,您将在终端上看到区块编号和用户的 KAIA 余额。

向区块链发送交易
要向区块链发送交易,请运行此命令在项目文件夹中创建一个新的 send.ts 文件:
touch send.ts
创建该文件后,按照上文设置部分的步骤设置钱包客户端。 在本节中,您将学习如何向区块链发送交易(例如,向某个地址发送 KAIA)。
要查看实际效果,请在您的 send.ts 中粘贴以下代码。
import { createWalletClient, http, parseEther } from 'viem'import { klaytnBaobab } from 'viem/chains'import { privateKeyToAccount } from 'viem/accounts'const walletClient = createWalletClient({ chain: klaytnBaobab, transport: http("https://public-en-kairos.node.kaia.io")}) const account = privateKeyToAccount("PASTE PRIVATE KEY");async function sendKlayToRecipient() { const hash = await walletClient.sendTransaction({ account, to: "PASTE RECIPIENT ADDRESS", value: parseEther('0.01') }) console.log(`Send KAIA tx hash is: ${hash}`);}sendKlayToRecipient();
输出
要运行脚本并向区块链发送交易,请在终端中粘贴以下命令:
npx ts-node send.ts
如果交易成功,你会在终端中看到交易哈希值记录。
