摘要
Klaytn(现已更名为Kaia)是一个兼容EVM的Layer 1区块链。开发者可以通过JSON-RPC端点、用于更高级REST API的Klaytn API服务(KAS)或专用节点基础设施与之交互。本指南涵盖这些选项之间的差异、如何连接,以及在选择API提供商时应评估哪些方面。
Klaytn(现已更名为Kaia)是一个兼容EVM的Layer 1区块链,专为高吞吐量和即时最终性而设计。如果您正在Kaia上构建dApp、索引器或后端服务,您需要一种可靠的方式来发送交易、读取合约状态和订阅事件。“Klaytn API”一词可以指多种事物:JSON-RPC端点、官方Klaytn API服务(KAS)或第三方RPC提供商。本指南将分解这些选项,向您展示如何连接,并帮助您决定哪种方法适合您的工作负载。
快速建议:您应该使用哪种Klaytn API路径?
您的选择取决于您正在构建的内容以及您希望管理多少基础设施。
- 对于简单的dApp前端或快速原型,公共RPC端点(如
https://klaytn.api.onfinality.io/public)就足够了。它允许您无需任何设置即可读取链上数据并发送交易。 - 对于需要高可用性和可扩展性的生产后端,请使用像OnFinality这样的托管RPC提供商。您将获得专用端点、更高的速率限制以及无需运行自己的节点即可访问存档数据。
- 对于需要更高级抽象(如代币历史、钱包管理或费用委托)的团队,KAS提供了包装常见区块链操作的REST API。但是,KAS是一个单独的服务,有自己的定价,如果您只需要标准的JSON-RPC,则可能不需要它。
- 对于有严格数据驻留或自定义要求的团队,运行自己的端点节点可以让您完全控制,但需要持续的维护、监控和扩展。
如果您不确定,请从托管RPC提供商开始。它为您提供了灵活性,以后可以切换到专用节点,而无需更改应用程序代码。
什么是Klaytn API?了解生态系统
Klaytn的主网Cypress于2019年启动,专为企业用例而设计。2024年,Klaytn与Finschia合并形成Kaia,该网络现在以Kaia品牌运营。该链兼容EVM,因此支持Solidity合约和标准以太坊工具,如ethers.js和viem。
当开发者搜索“Klaytn API”时,他们通常指的是以下三种之一:
- JSON-RPC API:与区块链交互的标准接口。您向端点节点发送HTTP或WebSocket请求,该节点处理这些请求并返回数据。
eth_blockNumber、klay_getBalance和eth_call等方法属于此API。 - Klaytn API服务(KAS):由Klaytn基金会提供的托管服务,为常见操作(如发送交易、管理钱包和查询代币历史)提供REST API。它还包括包装JSON-RPC的节点API。
- 第三方RPC提供商:像OnFinality这样的服务,提供公共和私有JSON-RPC端点,通常具有存档数据、WebSocket支持和分析等附加功能。
理解这些差异至关重要,因为KAS和标准RPC提供商服务于不同的目的。KAS更像是一个后端服务,而RPC提供商是原始数据访问层。
Klaytn链设置一览
在连接之前,您需要正确的网络参数。以下是Kaia主网的关键细节:
| 参数 | 值 |
|---|---|
| 链ID | 8217 |
| 网络名称 | Kaia主网(原Klaytn Cypress) |
| 原生货币 | KAIA(18位小数) |
| 区块浏览器 | Kaiascope |
| 公共RPC端点 | https://klaytn.api.onfinality.io/public |
对于测试网,Baobab测试网使用链ID 1001,但本指南侧重于主网。请始终从官方Kaia文档或您的RPC提供商的网络页面验证最新的链设置。
使用JSON-RPC连接到Klaytn
一旦您有了端点,您就可以使用标准的JSON-RPC与链交互。以下是一个简单的curl示例,用于获取最新区块号:
curl -X POST https://klaytn.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
响应将如下所示:
{"jsonrpc":"2.0","id":1,"result":"0x1234"}
对于JavaScript开发者,您可以使用ethers.js或viem。以下是使用ethers.js的示例:
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider("https://klaytn.api.onfinality.io/public");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("Current block:", blockNumber);
}
getBlockNumber();
如果您使用viem,设置类似:
import { createPublicClient, http } from "viem";
const client = createPublicClient({
chain: {
id: 8217,
name: "Kaia Mainnet",
nativeCurrency: { name: "KAIA", symbol: "KAIA", decimals: 18 },
rpcUrls: { default: { http: ["https://klaytn.api.onfinality.io/public"] } },
},
transport: http(),
});
const blockNumber = await client.getBlockNumber();
console.log("Current block:", blockNumber);
对于钱包配置,您可以将Kaia作为自定义网络添加到MetaMask或任何兼容EVM的钱包中:
{
"chainId": "0x2015",
"chainName": "Kaia Mainnet",
"nativeCurrency": {
"name": "KAIA",
"symbol": "KAIA",
"decimals": 18
},
"rpcUrls": ["https://klaytn.api.onfinality.io/public"],
"blockExplorerUrls": ["https://kaiascope.com"]
}
Klaytn特有的RPC方法
虽然Klaytn兼容EVM,但它也有自己的一套以klay_为前缀的RPC方法。这些方法对于访问Klaytn特有的功能(如费用委托和账户类型)非常有用。
一些常见的方法包括:
klay_getBalance– 获取账户余额。klay_sendTransaction– 发送交易(类似于eth_sendTransaction)。klay_call– 执行合约调用而不发送交易。klay_getTransactionReceipt– 获取交易收据。klay_getBlockByNumber– 获取区块信息。
您可以像使用以太坊方法一样使用这些方法。例如:
curl -X POST https://klaytn.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"klay_getBalance","params":["0x..."],"id":1}'
大多数以太坊库都可以与Klaytn一起使用,但如果您需要Klaytn特有的功能,您可能需要直接使用klay_方法。
KAS与RPC提供商:有什么区别?
KAS是一个托管API服务,提供的不仅仅是JSON-RPC。它为代币历史、钱包管理和费用委托提供REST端点。如果您想避免处理原始交易和密钥管理,这可能会很方便。
然而,KAS是一个单独的服务,有自己的定价和速率限制。对于许多开发者来说,标准RPC提供商就足够了,而且更灵活。以下是一个比较:
| 功能 | KAS | 标准RPC提供商(例如OnFinality) |
|---|---|---|
| 接口 | REST + JSON-RPC | JSON-RPC(HTTP/WebSocket) |
| 代币历史 | 内置 | 需要自定义索引 |
| 钱包管理 | 是 | 否 |
| 费用委托 | 是 | 否 |
| 存档数据 | 有限 | 可按需提供 |
| 定价 | 按API调用 | 订阅或按量付费 |
| 灵活性 | 高级、固定模式 | 低级、完全控制 |
如果您需要代币历史或钱包管理,KAS可能值得花费。但如果您只需要读写区块链数据,标准RPC提供商更简单,通常也更便宜。
如何选择Klaytn RPC提供商
在评估Klaytn的RPC提供商时,请考虑以下标准:
| 标准 | 检查内容 | 为什么重要 |
|---|---|---|
| 正常运行时间和可靠性 | 历史正常运行时间、状态页面 | 停机可能会破坏您的dApp |
| 速率限制 | 每秒请求数、每日限制 | 高流量应用需要更高的限制 |
| 存档数据 | 访问历史状态 | 分析和调试所需 |
| WebSocket支持 | 实时事件订阅 | 实时更新必不可少 |
| 专用节点 | 独占基础设施选项 | 保证性能和隔离 |
| 定价 | 透明、可预测的成本 | 避免意外账单 |
| 支持 | 响应迅速的技术支持 | 在出现问题时提供帮助 |
OnFinality为Klaytn提供公共和专用RPC端点,支持WebSocket和存档数据。您可以从公共端点开始,随着项目的发展升级到专用节点。查看Kaia网络页面了解更多详情。
常见陷阱和故障排除
即使使用可靠的提供商,您也可能会遇到问题。以下是一些常见问题及其解决方法:
- 错误的链ID:确保主网使用8217。使用错误的链ID会导致交易失败。
- 速率限制:如果您收到HTTP 429响应,说明您已达到速率限制。考虑升级到付费计划或使用专用节点。
- WebSocket断开:WebSocket连接可能会断开。在您的客户端中实现重新连接逻辑。
- 交易永远待处理:检查gas价格和nonce。Klaytn有动态gas定价机制,因此您可能需要调整。
- 浏览器中的CORS错误:如果您从浏览器调用RPC,请确保提供商允许CORS。公共端点通常允许,但专用端点可能不允许。
对于调试,使用curl等工具测试单个方法,并检查区块浏览器以了解交易状态。
生产就绪检查清单
在启动您的Klaytn应用之前,请完成此检查清单:
- 在生产环境中使用专用RPC端点,而不是公共端点。
- 设置RPC延迟和错误率的监控。
- 实现带有指数退避的重试逻辑。
- 使用WebSocket进行实时更新,但要有轮询作为后备。
- 先在Baobab测试网上测试您的应用。
- 确保您的后端处理链重组(Klaytn具有即时最终性,但仍需安全)。
- 确保您的私钥安全;切勿在客户端代码中暴露它们。
关键要点
- Klaytn现在是Kaia,一个兼容EVM的L1,链ID为8217。
- 您可以通过JSON-RPC、KAS或第三方RPC提供商与之交互。
- 对于大多数开发者来说,像OnFinality这样的托管RPC提供商提供了可靠性和灵活性的最佳平衡。
- KAS对于代币历史和钱包管理等高级功能很有用,但对于基本的区块链交互来说不是必需的。
- 在生产环境中始终使用专用端点并监控您的使用情况。
常见问题解答
什么是Klaytn API?
Klaytn API是指与Klaytn(现为Kaia)区块链交互的各种接口,包括JSON-RPC端点、Klaytn API服务(KAS)和第三方RPC提供商。
Klaytn和Kaia是一样的吗?
是的,Klaytn在与Finschia合并后更名为Kaia。主网现在称为Kaia主网,但底层技术保持不变。
Klaytn主网的链ID是多少?
链ID是8217。
在Klaytn上构建需要KAS吗?
不需要,您可以使用任何JSON-RPC提供商。KAS是可选的,提供更高级的API以方便使用。
我可以将以太坊工具与Klaytn一起使用吗?
可以,因为Klaytn兼容EVM,您可以使用ethers.js、viem和其他以太坊库。只需配置正确的链ID和RPC URL。
如何获取Klaytn RPC端点?
您可以使用公共端点https://klaytn.api.onfinality.io/public或在OnFinality上注册专用端点。查看支持的网络页面了解更多选项。
公共RPC和专用RPC有什么区别?
公共RPC是共享的并且有速率限制,而专用RPC为您提供对节点的独占访问,提供更好的性能和可靠性。对于生产环境,建议使用专用RPC。
如何订阅Klaytn上的实时事件?
使用WebSocket和eth_subscribe方法。以下是一个示例:
const ws = new WebSocket("wss://klaytn.api.onfinality.io/public/ws");
ws.onopen = () => {
ws.send(JSON.stringify({jsonrpc:"2.0",method:"eth_subscribe",params:["newHeads"],id:1}));
};
ws.onmessage = (event) => {
console.log(event.data);
};
注意:WebSocket URL可能不同;请查看您的提供商的文档。
公共Klaytn端点的速率限制是多少?
速率限制因提供商而异。OnFinality的公共端点适用于开发和轻度使用,但对于生产环境,您应该升级到付费计划。有关详细信息,请参阅RPC定价。
如何获取Baobab测试网的测试KLAY?
您可以使用官方的Klaytn水龙头或从Kaia文档中请求。测试网使用链ID 1001。
我可以运行自己的Klaytn节点吗?
可以,您可以使用官方的Klaytn软件运行端点节点。但是,它需要维护和监控。像OnFinality这样的托管服务可以为您节省时间和精力。
什么是Klaytn中的费用委托?
费用委托允许第三方代表用户支付交易费用。KAS支持此功能,但如果您了解交易结构,您也可以使用原始JSON-RPC实现它。
Klaytn对企业使用安全吗?
Klaytn在设计时考虑了企业级可靠性,使用BFT共识。然而,安全性取决于您的实现。始终遵循密钥管理和智能合约安全的最佳实践。
我在哪里可以找到更多资源?
查看官方Kaia文档、Klaytn GitHub以及OnFinality的网络页面以获取最新信息。