本文介绍了Syndica平台上的高级速率限制设置,允许开发者更精确地控制API密钥的使用,从而解决Solana上的两个常见问题:防止RPC服务被盗用和滥用,以及管理不同项目或服务的速率限制。文章通过两个实际场景,展示了如何使用这些设置来保护前端RPC端点和在单个账户下管理速率限制。
这篇帖子是我们介绍 Syndica 在 Solana 上的高级 web3 原生 API 产品的系列文章的第二部分。请继续关注即将发布的帖子,详细探讨各项功能,包括 ChainStream API、应用部署、动态索引等。
在我们企业级的 Solana RPC 产品的基础上,我们在 Syndica 平台上实现了凭证级别的速率限制设置,使开发人员能够精确控制其 API 密钥的使用。此功能缓解了 Solana 上开发人员面临的两个问题:
在 Syndica 上,可以通过为用户需要的特定方法设置适当的每个 IP 速率限制,来安全地将 API 密钥公开给公众。这是对我们现有基于 header 的规则(IP 和 Origin)的补充。
在 Syndica 上,可以为 API 密钥配置个性化的速率限制,使开发人员能够精确地管理和平衡其帐户内所有项目的使用限制。
我们将通过两个场景来说明我们的新高级速率限制设置如何有效地解决这些问题。
考虑一个简单的 React 应用程序,它使用 web3.js 来显示有关用户钱包的信息,例如 token 余额和最近的交易。所需的 RPC 方法集包括:
getAccountInfo
getTokenAccountsByOwner
getTokenAccountBalance
getSignaturesForAddress
getTransaction
在 Syndica 上,我们可以为这个前端创建一个 API 密钥,并配置它来防止不必要的使用。
第一步是将 API 密钥限制为仅服务于 header 中包含我们域名 simple-dapp.xyz
的请求。我们还可以选择使用通配符来匹配我们的子域名模式。
接下来,我们可以禁用此凭证的 WebSocket 连接,因为它们对于我们的用例来说不是必需的。
最后,我们将 API 密钥限制为仅使用我们的前端所需的方法。在下面,你可以看到我们可以为 API 密钥设置速率限制的各种范围:
在我们的场景中,我们将在 IP 级别设置特定方法限制。我们的目标是将凭证的使用限制为我们的前端所需的少数方法,并将每种方法的 RPS 限制为单个用户的典型速率(一个客户端 IP)。
通过此配置,来自前端的 RPC 调用将为遵守预期流量模式的用户无缝运行。如果 API 密钥被泄露,它的效用将大大降低,因为它将被限制为一组有限的方法和一个低 RPS。
假设我们想要使用 Syndica API 创建一个单独的后端服务。此后端服务必须与上述前端服务共享我们帐户的全局速率限制。
假设我们的全局帐户范围额度限制为 300 RPS,后端服务持续使用高达 50 RPS。为了避免我们的关键后端服务受到速率限制的风险,我们希望确保前端服务永远不超过 250 RPS。我们可以将帐户总 RPS 的一部分分配给每个服务,确保一个服务中的流量峰值不会影响另一个服务。
我们可以修改我们最初的 API 密钥,将其限制为所有客户端组合流量的 250 RPS。
然后,我们可以为后端服务创建一个单独的 API 密钥。假设我们的后端服务使用 ChainStream API 来流式传输事务并调用 getAccountInfo
RPC 方法。我们将设置以下限制:
solana-mainnet
,仅允许 getAccountInfo
RPC 调用,最大为 50 RPS。transactionSubscribe
方法,最多允许 1 个活动订阅。通过此配置,我们的前端和后端服务不会相互干扰速率限制。当我们添加更多服务时,我们可以根据需要调整现有凭证的限制。这种方法还可以管理跨开发环境、用户组或部署的限制。
我们已将 Solana 开发堆栈整合到一个单一的、有凝聚力的平台中,为你的 RPC 体验提供无与伦比的自定义控件。
立即免费开始,并查看我们的 文档。
- 原文链接: blog.syndica.io/credenti...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!