Skip to main content
准备好在 Solana 上构建应用了吗?本指南将引导您使用 Helius API 创建第一个应用程序。 您将学习如何获取 NFT 数据、理解响应结构,并了解在我们的基础设施上构建强大应用程序是多么容易。
1

创建您的免费 Helius 帐户

首先在 Helius Dashboard 上创建您的免费帐户。您的免费套餐每月包括 100,000 次 DAS API 调用,非常适合开始和构建原型。希望以编程方式创建 Helius 帐户的代理应使用 Helius CLI 并参考 代理注册说明
2

获取您的 API 密钥

前往 API Keys 部分并复制您的密钥。此密钥使您可以访问所有 Helius API,包括 RPC 节点、DAS API 和增强的交易数据。
性能提示:使用我们的 Gatekeeper(Beta)端点:https://beta.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操作构建可重用代码

进一步扩展

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

接下来是什么?

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