本文是关于Solana区块链开发中如何利用Helius RPCs平台的教程,重点介绍了RPCs的基本概念和作用,以及如何使用Helius提供的工具和服务来简化Solana应用的开发过程。教程内容包括Helius平台的概述、基本RPC设置、测试工具的使用(包括网页版和本地版),以及通过Postman、cURL和Node.js进行Solana RPC请求的实践。
我最近发表了一篇关于 为云工程师准备的 Solana 区块链概述,这引起了那些对区块链感到好奇的人的兴趣。
云开发者正在涌入 Solana, 被围绕在 黑客马拉松、初创公司、AI 代理、去中心化金融 ( DeFi ) 以及 Solana 生态系统中发生的快速 创新 方面的活动所吸引。
本教程系列 将探索 开发者如何利用 RPC 平台 在 Solana 区块链上创建强大的应用。
我们将深入研究 Helius, 一家领先的 Solana RPC 提供商,并掌握将 RPC 集成到 Solana 应用程序中的艺术。
使用 Helius RPC 构建于 Solana 之上
RPC 是 Solana 开发者一个重要的组成部分。我们将深入探讨更多细节,但本节旨在 熟悉术语。
HTTP JSON-RPC 请求示例 (示例展示了如何从 CLI 使用 cURL):
curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [\
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri"\
]
}
'
## ✅ 这是 Solana devnet 端点:https://api.devnet.solana.com
## ✅ HTTP 调用总是使用 POST 方法。
## ✅ Header content type 始终是 JSON。
## ✅ 方法可能会有所不同,但这里是 getBalance
## ✅ 需要的参数:因方法而异,但在本例中是一个公钥 (pubkey)
## ✅ 参数仅按数组顺序取值(不是键值对)。
你可能之前使用过“API Gateway”。 这是一种常见的 API 管理服务,在云平台堆栈中使用 API 协议,如 HTTP REST、WebSockets 或 GraphQL。
领先的 RPC 服务提供商如 Helius、Alchemy、QuickNode 等,提供 对开发者友好的平台,使 Solana 的 JSON-RPC 协议的使用更加容易。这就是你应该使用它们的原因,而不是直接连接到 Solana。
Solana RPC 提供商示例:
“所以,我必须使用 RPC 提供商吗?” — 匿名开发者
“所以,我必须使用 RPC 提供商吗?” ... 从技术上讲 — 不是必须的,对于小型应用来说。
但是不使用它是一个糟糕的选择,因为存在可能严重影响你的开发体验和应用程序性能的 重大限制。没有提供商,你将面临 性能、扩展、附加功能、可靠性、正常运行时间和成本效益方面的限制。
RPC 提供商平台 针对更好的连接性进行了优化 — 这样你就可以专注于构建出色的应用程序。它们运行 节点(处理和扩展 RPC API 请求的特殊服务器),从而提高性能并提供增强 Solana 请求的特殊功能。
此外,像 Helius、Alchemy、Moralis 和 QuickNode 这样的平台还提供额外的教程、博客文章和其他与 API 相关的工具,包括用于其他区块链的工具,并且 可能为入门级 Solana 开发者提供资源。
在本评价中,我们将专注于 Helius, 了解其 概述、工具和教程。
完成之后,你将对如何使用此平台和 Solana RPC 有一个扎实的了解。此外,如果需要更多通用信息,请查看我的 通用 Solana 概述。
下一篇教程第 2 部分将涵盖的主题
注意:加粗我与 Helius 没有任何隶属关系,这不是加粗付费的,也不是加粗赞助的。加粗 我之所以使用 Helius RPC 提供商,是因为我曾经使用过它,并且它拥有良好的声誉,但你也可以找到其他提供商,例如 QuickNode 和 Alchemy!加粗
Helius 一直处于改善开发者体验的最前沿,通过 RPC 和 Solana,帮助初创公司和开发者快速上手为该链创建应用程序。你可能在 加密货币 Twitter/X 上的 mert 看到过他,asche 是最活跃/最著名的 Solana 创始人/工程师之一。此外,我 有机会在去年的盐湖城 MtnDAO 上与 Helius 联合创始人 Nick 及其他 Helius 员工会面, 他们是一群友善的人,热情、知识渊博且平易近人。
Helius 提供了一个高级 Solana 开发平台,其中包含 RPC、API、Webhooks 和数据流等工具,并由社区和/或客户服务选项提供支持。它针对 可扩展和高性能 的应用程序开发进行了优化。
值得注意的是,Helius 也是 领先的 Solana 验证器 之一,使质押者和机构合作伙伴能够享受 0% 的费用和完整的 MEV(最大可提取价值)奖励。
如上所述,RPC 节点之于 Solana,就像 API 网关之于许多其他非 Solana 应用程序和云服务一样。
RPC 节点对于 Solana 交互至关重要。 它们允许应用程序读取和写入数据到 Solana 区块链。
作为一名 Solana 开发者, 你主要使用 像 Helius 这样的 RPC 提供商 连接到 Solana 区块链进行交易、信息查询以及与链上应用程序交互。你获取响应并在你的应用程序中使用它。
Helius 和大多数提供商至少提供两种主要类型的节点。
你可能还会看到 公共/私有端点。
公共 RPC 端点,来源:https://solana.com/docs/core/clusters
带有 API 密钥的 Helius 端点已模糊处理
Helius 节点在全球范围内分布以提高效率:Helius 表示他们在纽约、新加坡、东京、法兰克福和其他关键地点设有节点,以确保在全球范围内实现低延迟访问。
节点自动路由请求。 该系统会将请求发送到 最近的节点,从而确保共享 RPC 用户的最佳性能。
使用 Helius“你可以锁定你的端点,使其仅服务于来自特定 IP 和域名的请求”,但是,特别是对于客户端应用程序,你可能需要代理你的请求以获得更好的安全性,因为你不想泄露你的密钥,因为你需要为使用量付费。
Helius RPC 代理: 有一个 免费的 Github 一键部署开源 RPC 代理 ,你可以一键将其部署到 Cloudflare。
Helius 还提供额外的数据服务,以简化开发者的工作,以下是一些:
点击任意一个按钮开始 — https://www.helius.dev/
(可选,仅针对付费计划连接 Solana 钱包) 如果你想使用你的 Solana 钱包注册付费计划(如果你已经有钱包),你可以这样做,但如果你想要免费计划,你仍然需要连接你的 Github/Google 帐户。
使用你的电子邮件/密码、Google、Github 登录后,你将看到下面的价格图表。
使用免费计划, 你将获得“50 万积分、10 个 每秒请求数、1 个 API 密钥、1 个 Webhook、社区支持”。
如果你正在构建主要处于开发中的基本新应用,或者正在尝试服务教程,则最好使用免费计划。 一旦你开始运行完整的应用程序,你可能希望至少升级到开发者选项, 而对于有良好吸引力的应用程序,其他选项会提供更多的选项/使用量。
接下来,你将看到一个屏幕,提示他们正在构建你的工作区,这大约需要 10-15 秒,然后你将看到 Helius 仪表板。
🥰 感谢阅读!…… 🔥 请鼓掌并分享这篇文章,谢谢!🚀
让我们看看这一切意味着什么。
你可能还记得 Solana 具有你可连接到的特定 RPC API 端点。我在 我的另一篇 Solana 文章 中讨论过。
你将用 Helius RPC 替换它,因为它们充当着与你正在使用的 API 网关类似的角色。
要在 Helius 上进行 标准 RPC 调用,请使用这些 Helius 平台端点,而不是标准 Solana RPC 端点:
https://mainnet.helius-rpc.com
https://devnet.helius-rpc.com
当你单击 Helius 仪表板 上的 “端点”页面链接 时,你将看到类似以下内容(我的 API 密钥已编辑)。
你也可以切换到 Dev 以获取 dev 端点。
现在我们已经注册并获得了 API 密钥,我们可以访问 Helius 设置的一个很棒的资源,以便轻松测试所有 RPC 端点并获取数据。
它是一个名为 Helius Test Drive 的 开源工具。
Helius 上的网站界面: https://testdrive.helius.xyz/
在本地下载的 Helius 仓库: https://github.com/helius-labs/test-drive
这是网站示例,你可以在其中输入之前给你的带有 API 密钥的端点,然后你可以测试各种可用的端点。
对于此示例,由于我将查看 Mainnet 上的一些内容,我将使用 Mainnet api url,例如 https://mainnet.helius-rpc.com/?api-key=\[your key]
让我们尝试 getAccount 方法。
我将查看 WEN memecoin pubkey/account number(加粗我拥有少量这种 memecoin,你无需为了本教程拥有它,我们只是在检查其信息;这不是建议或财务建议,如果你购买 memecoin,请进行自己的尽职调查,它们通常会归零加粗)。
⚠️ 重要提示: 不要将 pubkey (或 PUBLIC 密钥)与你的秘密 API 密钥或钱包密钥混淆!Pubkey 是一个 公共地址,它是区块链上的公共信息。加粗 绝不加粗 应泄露秘密 API 密钥或秘密钱包密钥。加粗 ⚠️加粗
我访问了 SolanaFM 网站, 这是一个 Solana 区块链浏览器,可以更轻松地查看交易、代币、区块和帐户。
我在搜索栏中键入了“wen”, 它会显示帐号(与 pubkey 相同)。
请记住,Solana 代币是帐户,地址是“公钥”。因此,在这种情况下,代币/程序地址/号码、帐号和 公钥 是相同的。
另请注意,代币由 Solana 程序创建,但它本身不像程序那样是可执行的。当我们在下面查询有关代币的信息时,你将看到创建它的程序在此处提到:“owner”:“TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA”,
我们想要的代币地址恰好是列表中的第一个:“WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk”
⚠️ 请注意,列出了其他几个,请确保你拥有正确的那个。始终验证你是否正在使用正确的代币/pubkey 进行交易。有些诈骗会试图欺骗你将钱发送给冒名顶替者。
如果你不确定哪个是正确的代币/pubkey,你还可以通过其他来源(例如 CoinGecko 或 Jupiter(Solana 上最大的 DEX 或交易平台进行交易))来验证该程序/帐号。
✅ Wen CoinGecko pubkey:WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk
CoinGecko 显示代币/程序,复制/粘贴以确认
请参阅:如果在 SolanaFM 中显示“Jupiter 已验证”意味着它是 Jupiter 已验证的币
如果你单击 wen 的第一个条目的页面,则会在 SolanaFM 页面上显示“Jupiter verified”。 Jupiter 会验证一些在其平台上允许的代币,以防止出现类似名称的代币造成的混淆,因此,虽然这一项本身并不能 100% 确定这是你想要的那个,但它是一个指标。
✅ 在这里我们看到了请求的输出:
{
"jsonrpc": "2.0",
"result": {
"context": {
"apiVersion": "2.2.0",
"slot": 312525542
},
"value": {
"data": [\
"111191jdMLtc4pmrDHdRipUKTtM7mjLHtWJp4VH8v2qbkTw9xGpG8NBeFSPxEGZ5oixG19yiAVH4qy5AzJiDKjfzRfFLyx24jWKrZKLCCs5hch5",\
"base58"\
],
"executable": false,
"lamports": 71152956048,
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"rentEpoch": 18446744073709552000,
"space": 82
}
},
"id": "test-drive"
}
我真正喜欢的一个功能是你可以向下滚动 并获取
这作为一个例子很有用,但我们正在进行的这个特定查询并没有告诉我们太多信息,所以让我们看看另一种方法 - 我将其更改为方法 getAsset。
需要理解的一点是 getAsset 是一种方法,它是原始 Solana RPC 方法扩展的一部分。它使用 Solana 的 DAS API(数字资产标准 API),该服务可以更高效地查询 Solana 数字资产并提供更多信息。
它会返回大量关于代币的额外元数据。这告诉我它是一种可替代代币(如其中许多代币的币)。它不是 NFT,那将是不可替代的(独一无二的)。
{
"jsonrpc": "2.0",
"result": {
"interface": "FungibleToken",
"id": "WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk",
"content": {
"$schema": "https://schema.metaplex.com/nft1.0.json",
"json_uri": "https://qgp7lco5ylyitscysc2c7clhpxipw6sexpc2eij7g5rq3pnkcx2q.arweave.net/gZ_1id3C8InIWJC0L4lnfdD7ekS7xaIhPzdjDb2qFfU",
"files": [\
{\
"uri": "https://shdw-drive.genesysgo.net/GwJapVHVvfM4Mw4sWszkzywncUWuxxPd6s9VuFfXRgie/wen_logo.png",\
"cdn_uri": "https://cdn.helius-rpc.com/cdn-cgi/image//https://shdw-drive.genesysgo.net/GwJapVHVvfM4Mw4sWszkzywncUWuxxPd6s9VuFfXRgie/wen_logo.png",\
"mime": "image/png"\
}\
],
"metadata": {
"name": "Wen",
"symbol": "WEN",
"token_standard": "Fungible"
},
"links": {
"image": "https://shdw-drive.genesysgo.net/GwJapVHVvfM4Mw4sWszkzywncUWuxxPd6s9VuFfXRgie/wen_logo.png"
}
},
"authorities": [\
{\
"address": "Hd7tQ6JUPaKPid8tiqyhLfWEaivRnf7YJDyMi4abmsvx",\
"scopes": [\
"full"\
]\
}\
],
"compression": {
"eligible": false,
"compressed": false,
"data_hash": "",
"creator_hash": "",
"asset_hash": "",
"tree": "",
"seq": 0,
"leaf_id": 0
},
"grouping": [],
"royalty": {
"royalty_model": "creators",
"target": null,
"percent": 0,
"basis_points": 0,
"primary_sale_happened": false,
"locked": false
},
"creators": [],
"ownership": {
"frozen": false,
"delegated": false,
"delegate": null,
"ownership_model": "token",
"owner": ""
},
"supply": null,
"mutable": false,
"burnt": false,
"token_info": {
"symbol": "WEN",
"supply": 72764767280822620,
"decimals": 5,
"token_program": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"price_info": {
"price_per_token": 0.0000822689,
"currency": "USDC"
}
}
},
"id": "test-drive"
}
你在那里获得的大量信息很有用,例如代币是否“冻结”,或者创建者是否可以增加供应量(通常对价格不利)。虽然理解这篇文章的所有内容已超出范围。
当你访问 Dexscreener 或 CoinGecko 时, 它可能会获取一些元数据并将其添加到该币的配置文件中。
请注意“price_per_token”
"price_per_token": 0.0000822689,
根据 CoinGecko 的说法,这差不多是正确的
仓库在这里:https://github.com/helius-labs/test-drive
在本地克隆仓库(需要 node。):
git clone https://github.com/your-username/helius-rpc-playground.git
更改目录:
cd test-drive
安装依赖项:
npm install
开始:
npm run dev
这些是可用的方法。Solana HTTP RPC
来源:https://solana.com/docs/rpc/http/getaccountinfo
注意: 这是一个 API 扩展,独立于核心 RPC 方法,某些方法可能不适用于某些提供商。
我们将更深入地研究这些。有些可能你还无法理解,而且许多仅在特殊情况下才需要。该结果中提供的所有元数据都可用于学习关于 token 的更多信息。
接下来,我们将使用 Postman 进行一些 RPC 测试。
为什么要使用 Postman? Postman 是一个功能齐全的 API 测试套件,包括协作和 API collections。虽然 Helius Test Drive 工具很棒,但我们可能需要额外的功能用于企业应用程序。
在忽略本文的 Postman 部分之前,请注意你可以获得 Solana RPC endpoints 的完整 collection 作为 Postman collection。这非常有价值且节省时间。
所以我建议继续学习 Postman 部分。稍后我也会提到它。不要错过!
我建议使用 Postman 或其他 API 客户端 进行测试。
你们中的许多人可能已经使用过 Postman。
在 Chrome 或 IDE 中有一些轻量级选项,但如果你没有这些,Postman 是一个不错的选择,也是一个好的起点。它可以处理你的应用程序可能使用的各种场景(各种类型的 API,协作)。
免费注册 Postman: https://www.postman.com/
⚠️ 安全提示:为了额外的安全, 如果要做一个涉及电子商务、支付、银行等的大规模生产应用程序,最佳做法是不要存储 API 密钥而不采取额外的加密措施。这是一个关于 Devnet 的测试演示,并且我会在之后删除 API 密钥,所以我们只使用 Postman 云的 常规加密默认设置。
我们将做一个快速的 Postman 设置,并开始使用 Helius RPC。
让我们创建一个工作区。这给了我们一个干净的状态,我们将在其中放置所有 RPC 调用。
✅ 去创建一个工作区, 你可以在 Workspaces 选项卡 > Blank > Next 下找到它,如下图所示。前往此处:https://web.postman.co/workspace/create
在 NEXT 之后,创建工作区的第 2 页
现在点击 创建按钮 后,我看到的是:
🥰 感谢阅读!… 🔥 请鼓掌并分享本文,谢谢!🚀
https://www.postman.com/explore
你可以在上面的 url 和 API 网络中搜索 Solana endpoint collections。此外,我找到了一个,我将 url 放在此图像下方。
Solana Mainnet RPC Methods Postman Collection 作者:Blocktech Solutions
注意:这是 Postman API 网络上的公共 API endpoint collection。 如果使用它,请自行进行尽职调查,以确认它是安全的以及你所需要的。文档提供了创建者的 X.com 地址以及关于它的其他文档。
“这个 Solana RPC 方法 Postman collection 使你能够快速测试 Solana RPC 方法 […] 默认情况下,这些 collection 使用 Solana Foundation 的公共 Mainnet Beta RPC endpoint。此 endpoint 受到速率限制,并且由于其滥用潜力,某些方法已列入黑名单。
你可以将 collection 变量 _solRpcEndpoint 更新为另一个提供商的 URL”。
那是关键部分。我们将使用我们的 Helius endpoint。
这将使我们达到一个测试 Solana endpoints 的基线,但使用我们的 Helius 帐户。
你可以在这里看到该变量:
但是,我们将要做的是将这个公共 collection 分叉到我们的工作区中。
⚠️ 确保你在 Collection 中而不是 Environment 中——第一次我不小心只分叉了 environment。
确保你在 Collection > Fork Collection 中
你还可以指定 Environments。⚠️ 我有一次是单独进行操作的,而不是一次性完成!如果你首先只执行 Environments,则该 collection 将不会显示。
对于 environments,进入 Public API 上的 environment 并进行分叉(仅在需要时):
分叉的 collection 将显示在 Environments 下
现在单击你的 Workspace > Environments
你现在可以看到我在我的 Postman 工作区“Helius RPC’s”中拥有所有方法。
我的工作区“Helius RPC’s”。
我现在将用我的 Helius endpoint 替换掉 _solRpcEndpoint。
你还可以将你的 API 密钥放在一个单独的变量中,并确保任何额外的加密(查看文档了解如何操作),我正在使用一个临时的 API,它会在之后被删除,所以我就不在这里做这些了。
完整请求:
它返回:
✅ 恭喜!🎉
你正在使用 Postman 通过 Helius RPC Provider 调用 Solana 区块链!
你可能会问——“好的,很好,但那又怎么样?”
Postman 的好处:
cURL 可以从你的终端命令行 (CLI) 用于测试请求和结果。如果你不确定是否已安装它,MacOS 和 Linux 通常会自动安装,也许 Windows 也是:cURL 安装提示
有一种简单的方法可以从 Postman 获取 cURL 代码和你的请求的其他代码片段。
在 Postman 界面中,单击 Code snippet 按钮,然后找到 cURL。
现在它将为你提供要运行的片段:
curl --location 'https://mainnet.helius-rpc.com/?api-key=[your key goes here]' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "getAccountInfo",
"params": [\
"WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk",\
{\
"encoding": "base58"\
}\
]
}'
同样,我们使用的是 Wen 合约公钥: “WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk”
结果:
✅ 这非常酷,但我想使用 getAsset 方法。但是,这是 DAS API 扩展的一部分,虽然我们可以使用 Helius 调用它,但它不在 collection 中,因此我们必须添加它。
我转到 Metaplex DAS 页面并复制粘贴了 cURL 请求示例的一部分:https://developers.metaplex.com/das-api/methods/get-asset
我们在 Postman 中创建一个新请求,然后将该请求复制粘贴到 Body 中。
我已经将显示“New Request”的部分重命名为“getAsset”,现在它出现在该 collection 的方法列表中。
以下是它应具有的外观的查看:
curl --location 'https://mainnet.helius-rpc.com/?api-key=[your key goes here]' \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "getAsset",
"params": [\
"WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk"\
],
"id": 0
}'
现在让我们创建一个简短的 Node.js 脚本,我们可以将其集成到我们的应用程序的后端中,并且我们将使用 Helius endpoints 调用 Solana。
既然我们知道可以通过 Postman 获取代码片段,我们可以通过在本地执行一个快速的 Node.js 脚本来“作弊”。
你可以将此代码放在本地的任何位置,但我喜欢在 Github 上创建一个快速的新空 repo,将其克隆到本地,然后在那里执行。所以我将这样做。
但做任何你想做的,我建议遵循 Node.js typescript 设置。
git clone https://github.com/csjcode/helius-demos
cd helius-demos && code .
让我们使用 Axios 库进行请求,以便我们可以在 Postman 中找到它以快速执行此操作。当然,你可以使用另一个库,这很快,而且我经常使用 Axios 😁
const axios = require('axios');
let data = JSON.stringify({
"jsonrpc": "2.0",
"method": "getAsset",
"params": [\
"WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk"\
],
"id": 0
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://mainnet.helius-rpc.com/?api-key=[your key]',
headers: {
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
确保你在工作代码目录中,并且让我们安装 npm 和 axios。
npm init -y
npm install axios
然后创建一个 Node.js 文件并将上面的代码放在那里——确保添加你的 API 密钥。
touch getAsset.js
在上面的代码中复制粘贴。
⚡️现在我们要运行它:
node getAsset.js
它打印出来了,但只是一堆文字。
让我们让它看起来“更漂亮”。将以 axios.request(config)
开头的代码部分替换为以下内容。这将打印出来,使其看起来不错,你可以更好地看到信息:
axios.request(config)
.then((response) => {
console.log("Response Data:\n", JSON.stringify(response.data, null, 2)); // Pretty print JSON
})
.catch((error) => {
if (error.response) {
console.log("Error Response:\n", JSON.stringify(error.response.data, null, 2)); // Pretty print error details
} else {
console.log("Error:\n", error.message);
}
});
⚡️再次运行
node getAsset.js
✅ 结果:
Response Data:
{
"jsonrpc": "2.0",
"result": {
"interface": "FungibleToken",
"id": "WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk",
"content": {
"$schema": "https://schema.metaplex.com/nft1.0.json",
"json_uri": "https://qgp7lco5ylyitscysc2c7clhpxipw6sexpc2eij7g5rq3pnkcx2q.arweave.net/gZ_1id3C8InIWJC0L4lnfdD7ekS7xaIhPzdjDb2qFfU",
"files": [\
{\
"uri": "https://shdw-drive.genesysgo.net/GwJapVHVvfM4Mw4sWszkzywncUWuxxPd6s9VuFfXRgie/wen_logo.png",\
"cdn_uri": "https://cdn.helius-rpc.com/cdn-cgi/image//https://shdw-drive.genesysgo.net/GwJapVHVvfM4Mw4sWszkzywncUWuxxPd6s9VuFfXRgie/wen_logo.png",\
"mime": "image/png"\
}\
],
"metadata": {
"name": "Wen",
"symbol": "WEN",
"token_standard": "Fungible"
},
"links": {
"image": "https://shdw-drive.genesysgo.net/GwJapVHVvfM4Mw4sWszkzywncUWuxxPd6s9VuFfXRgie/wen_logo.png"
}
},
"authorities": [\
{\
"address": "Hd7tQ6JUPaKPid8tiqyhLfWEaivRnf7YJDyMi4abmsvx",\
"scopes": [\
"full"\
]\
}\
],
"compression": {
"eligible": false,
"compressed": false,
"data_hash": "",
"creator_hash": "",
"asset_hash": "",
"tree": "",
"seq": 0,
"leaf_id": 0
},
## etc. it continues....
我们成功地使其工作很棒,但最佳实践是将此代码放入 TypeScript 中。
让我们重写 typescript 的代码。
安装 typescript 库
npm install --save-dev typescript @types/node
最新版本的 axios 应包括类型。我正在使用 “axios”: “^1.7.9”
安装 ts-node
npm install --save-dev ts-node
初始化一个 tsconfig.json
文件:
npx tsc --init
.tsconfig 文件应如下所示:
{
"compilerOptions": {
"target": "ES6",
"module": "CommonJS",
"outDir": "./dist",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"skipLibCheck": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
创建 src 目录
mkdir src
cd src
制作一个新的 typescript 文件:
import axios, { AxiosRequestConfig } from 'axios';
const API_KEY = "[your key]"; // Replace with your actual API key
const URL = `https://mainnet.helius-rpc.com/?api-key=${API_KEY}`;
const data = {
jsonrpc: "2.0",
method: "getAsset",
params: [\
"WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk"\
],
id: 0
};
const config: AxiosRequestConfig = {
method: 'post',
maxBodyLength: Infinity,
url: URL,
headers: {
'Content-Type': 'application/json'
},
data: data
};
async function getAsset() {
try {
const response = await axios.request(config);
console.log("Response Data:\n", JSON.stringify(response.data, null, 2));
} catch (error: any) {
if (error.response) {
console.log("Error Response:\n", JSON.stringify(error.response.data, null, 2));
} else {
console.log("Error:\n", error.message);
}
}
}
getAsset();
⚡️现在运行该代码,你应该得到结果。
这是在你仅在本地安装 ts-node 的情况下。但是,如果你全局安装了 ts-node,则可以去掉 “npx” ts-node getAsset.ts
npx ts-node getAsset.ts
🚀 你应该获得与之前在常规 javascript 中相同的结果!
回到 Helius Dashboard,我可以看到我已经发出了一些请求,单击菜单的 Usage 选项卡:
请注意,你可以通过付费计划获得更多指标:
我们将在 PART 2 中进一步探索此内容——我们将设置一个 AWS Lambda,以便我们可以远程运行程序,使用 Webhooks 和增强的 API,查看更多深入的用例等等!
相关文章:
Solana for Cloud Developers \ \ Solana 的实践性云计算工程师入门。深入了解与云服务和 AWS 服务的比较\ \ medium.com
初创公司的入门/文档中心(快速入门) 适用于初创公司的低成本解决方案。https://store.systemsarchitect.io/l/docshub
初创公司的入门/文档中心(企业版) 适用于已建立的初创公司和成长型公司的豪华解决方案。
https://store.systemsarchitect.io/l/edocshub
披露:封面图像由 AI 生成并由 be 修改,其他屏幕截图来自 Helius 网站。
🥰 感谢阅读!… 🔥 请鼓掌并分享本文,谢谢!🚀
我是一位云架构师、高级开发人员和技术主管,喜欢使用创新解决方案解决高价值挑战。
在 SystemsArchitect.io Store 查看我的一些云工程电子书, 所有这些电子书对于部署支持链下应用程序/云基础设施的 Solana 应用程序也可能很有用:
我总是乐于讨论项目。 如果你需要帮助、有机会或只是想聊天,你可以在 csjcode at gmail 与我联系。
我已经从事软件开发 20 多年了, 无论是在 企业 环境中,例如 NIKE 和最初的 MP3.com,还是在 初创公司 中,例如 FreshPatents、SystemsArchitect.io、API.cc 和 Instantiate.io。
我的经验范围从 云电子商务、API 设计/实现、 无服务器、AI 集成 用于开发、内容管理、前端 UI/UX 架构 和登录/身份验证。我进行技术讲座、教程并分享架构软件的文档。之前还持有 AWS 解决方案架构师认证。
云电子书商店——以极高的价值查看云架构师和工程师书籍,“云指标”(800 多页)和“云审计”(800 多页)等等——https://store.systemsarchitect.io
- 原文链接: medium.com/solana-dev-ti...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!