Skip to main content

Helius 提供什么?

Helius 提供 REST 和 JSON-RPC API,用于构建任何 Solana 应用程序——从分析平台和 DeFi 仪表板到交易机器人和合规工具。查询代币余额、获取 NFT 元数据、流式传输实时区块链事件、发送优化交易,并使用单一 API 密钥监控钱包。本指南将带您在几分钟内完成第一次 API 调用和一个可运行的应用程序。
1

创建您的免费 Helius 账户

首先在 Helius Dashboard 创建您的免费账户。您的免费层包含每月 100,000 次 DAS API 调用,非常适合入门和构建原型。想要以编程方式创建 Helius 账户的代理应使用 Helius CLI,并参考 代理注册说明
2

获取您的 API 密钥

转到 API 密钥 部分并复制您的密钥。此密钥使您能够访问所有 Helius API,包括 RPC 节点、DAS API 和增强的交易数据。
性能提示:使用我们的 Gatekeeper (Beta) 端点:https://beta.helius-rpc.com 代替 https://mainnet.helius-rpc.com 以降低延迟。您的 API 密钥适用于两者。了解更多 →
3

进行您的第一次 API 调用

让我们从一个实用的例子开始:从钱包中获取 NFT。我们将使用 getAssetsByOwner 方法查询由 86xCn…o2MMY 拥有的资产(Solana 联合创始人 Anatoly Yakovenko 的钱包)。这里发生了什么? DAS API 允许您通过一次调用查询压缩和标准 NFT。注意响应如何包含元数据、图片 URL 和所有权信息——构建丰富用户体验所需的所有数据。
4

理解响应

太好了!您已成功获取 NFT 数据。响应包括:
  • 资产 ID:每个 NFT 的唯一标识符
  • 元数据:名称、符号、描述和属性
  • 内容:图片 URL 和文件信息
  • 所有权:当前所有者和权威信息

使用代码构建

现在让我们在一个真实的应用程序中实现这一点。我们将创建一个简单的NFT投资组合查看器,您可以在此基础上进行扩展。
我们将在这个示例中使用Node.js。确保您已从nodejs.org安装它。
1

设置您的项目

mkdir solana-nft-viewer
cd solana-nft-viewer
npm init -y
npm install node-fetch
2

创建NFT投资组合查看器

nft-portfolio.js
const fetch = require('node-fetch');

class NFTPortfolioViewer {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseUrl = 'https://mainnet.helius-rpc.com';
  }

  async fetchNFTsByOwner(ownerAddress, limit = 10) {
    try {
      const response = await fetch(`${this.baseUrl}/?api-key=${this.apiKey}`, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          jsonrpc: '2.0',
          id: '1',
          method: 'getAssetsByOwner',
          params: {
            ownerAddress,
            page: 1,
            limit,
            displayOptions: {
              showFungible: false,
              showNativeBalance: false,
            },
          },
        }),
      });

      const data = await response.json();

      if (data.error) {
        throw new Error(data.error.message);
      }

      return data.result;
    } catch (error) {
      console.error('Error fetching NFTs:', error.message);
      throw error;
    }
  }

  displayNFTPortfolio(nfts) {
    console.log('\n🖼️  NFT Portfolio Summary');
    console.log('========================');
    console.log(`Total NFTs: ${nfts.total}`);
    console.log(`Showing: ${nfts.items.length} items\n`);

    nfts.items.forEach((nft, index) => {
      console.log(`${index + 1}. ${nft.content?.metadata?.name || 'Unnamed NFT'}`);
      console.log(`   Collection: ${nft.grouping?.[0]?.group_value || 'Individual'}`);
      console.log(`   Compressed: ${nft.compression?.compressed ? 'Yes' : 'No'}`);
      console.log(`   Image: ${nft.content?.files?.[0]?.uri || 'No image'}`);
      console.log(`   ID: ${nft.id}\n`);
    });
  }

  async getRandomNFT(ownerAddress) {
    const portfolio = await this.fetchNFTsByOwner(ownerAddress, 50);
    
    if (portfolio.items.length === 0) {
      console.log('No NFTs found for this address.');
      return null;
    }

    const randomIndex = Math.floor(Math.random() * portfolio.items.length);
    return portfolio.items[randomIndex];
  }
}

// Usage example
async function main() {
  const viewer = new NFTPortfolioViewer('YOUR_API_KEY');
  
  // Anatoly's wallet address
  const walletAddress = '86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY';
  
  console.log('🚀 Fetching NFT portfolio...');
  
  try {
    // Get full portfolio overview
    const portfolio = await viewer.fetchNFTsByOwner(walletAddress);
    viewer.displayNFTPortfolio(portfolio);
    
    // Get a random NFT for featured display
    console.log('🎲 Featured Random NFT:');
    console.log('=====================');
    const randomNFT = await viewer.getRandomNFT(walletAddress);
    
    if (randomNFT) {
      console.log(`Name: ${randomNFT.content?.metadata?.name}`);
      console.log(`Description: ${randomNFT.content?.metadata?.description || 'No description'}`);
      console.log(`Image: ${randomNFT.content?.files?.[0]?.uri}`);
    }
    
  } catch (error) {
    console.error('Failed to fetch NFT data:', error.message);
  }
}

main();
3

添加您的 API 密钥

YOUR_API_KEY 替换为您从 Helius 仪表板获取的实际 API 密钥。
4

运行您的 NFT 投资组合查看器

node nft-portfolio.js
5

成功! 🎉

您已经构建了您的第一个Solana应用程序!输出显示:
  • 钱包中的NFT总数
  • 个别NFT详细信息,包括压缩状态
  • 集合信息
  • 一个精选的随机NFT
您学到了什么:
  • 如何构建对Helius的API调用
  • 使用DAS API响应格式
  • 处理压缩与标准NFT
  • 为NFT操作构建可重用代码

进一步扩展

现在您已经了解了基础知识,探索这些高级功能:

发送交易

学习交易优化、优先费用和智能路由,以实现可靠的执行。

高级NFT操作

按属性搜索NFT,获取集合统计数据,并大规模处理代币元数据。

实时数据流

使用gRPC或增强的WebSockets以亚秒级延迟流式传输实时区块链数据。

使用Webhook自动化

为钱包活动、NFT销售和自定义链上事件设置智能通知。

接下来是什么?

您已经成功使用 Helius 构建了您的第一个 Solana 应用程序!以下是一些扩展项目的想法:
  • 添加钱包连接:与钱包集成
  • 构建用户界面:创建一个 React/Vue 前端来显示投资组合
  • 添加筛选:按集合、特征或铸造日期搜索
  • 实时更新:使用 WebSockets 显示实时投资组合变化
  • 分析:跟踪投资组合价值和 NFT 价格历史