MỚI: Helius mua lại Light Protocol
cách lấy danh sách người nắm giữ NFT của một bộ sưu tập
Blog/Phát triển

Solana Dev101 — Cách lấy danh sách người nắm giữ một bộ sưu tập NFT (Snapshot)

Kỹ sư Trải nghiệm Nhà phát triểnOwen Venter trên XOwen Venter trên LinkedIn
Đọc trong 3 phút

Giới thiệu

Nếu bạn muốn biết cách tạo snapshot về chủ sở hữu của một bộ sưu tập NFT, đây chính là hướng dẫn dành cho bạn. Với Helius, DAS API giúp quá trình tạo các snapshot này trở nên đơn giản.

Để làm theo hướng dẫn này, bạn cần có tài khoản Helius và khóa API. Bạn có thể nhận miễn phí bằng cách đăng ký tại đây.  Nếu có câu hỏi, bạn có thể tham khảo tài liệu liên quan ở cuối bài viết. Ngoài ra, đừng ngần ngại tham gia cộng đồng Discord của Helius hoặc gắn thẻ Helius trên Twitter để được hỗ trợ thêm.

Sử dụng DAS API

Digital Asset Standard (DAS) API là một đặc tả và hệ thống mã nguồn mở, cung cấp giao diện hợp nhất để tương tác với các tài sản kỹ thuật số (token, NFT, v.v.). Chúng ta sẽ sử dụng DAS API để lấy thông tin chủ sở hữu của các tài sản cụ thể. Có một số lệnh gọi khác nhau có thể sử dụng tùy theo phương thức nhóm của bộ sưu tập.

Lấy NFT từ một bộ sưu tập bằng địa chỉ bộ sưu tập (getAssetByGroup)

Phiên bản mới nhất của tiêu chuẩn NFT Metaplex sử dụng các bộ sưu tập đã được chứng nhận. Cơ chế này tạo một NFT để đại diện cho bộ sưu tập, nhờ đó có thể phân loại NFT và xác minh thông tin bộ sưu tập trên blockchain. Để truy xuất tất cả NFT trong một bộ sưu tập, bạn có thể sử dụng địa chỉ bộ sưu tập, tức địa chỉ mint của NFT đại diện cho bộ sưu tập. Nếu có một NFT thuộc bộ sưu tập, bạn có thể xem metadata của NFT đó và tìm địa chỉ bộ sưu tập trong phần collection.

Sau khi có địa chỉ, chúng ta có thể sử dụng phương thức getAssetByGroup của DAS để tìm tất cả NFT liên quan. Đoạn mã sau minh họa cách sử dụng phân trang để duyệt qua toàn bộ 10000 NFT Mad Lads. Trong phần params của lệnh gọi API, chúng ta sẽ chỉ định collection làm khóa nhóm, sau đó cung cấp địa chỉ bộ sưu tập làm giá trị nhóm.

Mã
const fs = require("fs"); // Required to save the snapshot to a file

const url =
  "https://mainnet.helius-rpc.com/?api-key=";

const getAssetsByGroup = async () => {
  console.time("getAssetsByGroup"); // Start the timer
  let page = 1;
  let assetList = [];

  while (page) {
    const response = await fetch(url, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        jsonrpc: "2.0",
        id: "my-id",
        method: "getAssetsByGroup",
        params: {
          groupKey: "collection",
          groupValue: "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w",
          page: page,
          limit: 1000,
        },
      }),
    });
    const { result } = await response.json();

    const owners = result.items.map((item) => ({
      NFTAddress: item.id,
      OwnerAddress: item.ownership.owner,
    }));
    assetList.push(...owners);
    if (result.total !== 1000) {
      page = false;
    } else {
      page++;
    }
  }
  const resultData = {
    totalResults: assetList.length,
    results: assetList,
  };
  console.log("Owners: ", resultData);
  fs.writeFile("output.json", JSON.stringify(resultData, null, 2), (err) => {
    if (err) throw err;
    console.log("Data written to file");
  });
  console.timeEnd("getAssetsByGroup"); // End the timer
};
getAssetsByGroup();

Lấy NFT từ một bộ sưu tập dựa trên người sáng tạo được xác minh đầu tiên (getAssetByCreator)

Để tạo snapshot dựa trên người sáng tạo được xác minh đầu tiên, bạn cần sử dụng hàm 'getAssetByCreator' và cung cấp địa chỉ của người sáng tạo trong các tham số. Bạn có thể tìm địa chỉ người sáng tạo của NFT trong phần creators thuộc metadata on-chain của NFT đó.

Sau khi xác minh người sáng tạo đầu tiên, hãy đặt địa chỉ đó làm địa chỉ người sáng tạo trong lệnh gọi tới getAssetsByCreator.

Mã
const fs = require("fs"); // Required to save the snapshot to a file

const url =
  "https://mainnet.helius-rpc.com/?api-key=";

const getAssetsByCreator = async () => {
  console.time("getAssetsByCreator"); // Start the timer
  let page = 1;
  let assetList = [];

  while (page) {
    const response = await fetch(url, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        jsonrpc: "2.0",
        id: "my-id",
        method: 'getAssetsByCreator',
      params: {
        creatorAddress: 'D3XrkNZz6wx6cofot7Zohsf2KSsu2ArngNk8VqU9cTY3',
        onlyVerified: true,
          page: page,
          limit: 1000,
        },
      }),
    });
    const { result } = await response.json();

    const owners = result.items.map((item) => ({
      NFTAddress: item.id,
      OwnerAddress: item.ownership.owner,
    }));
    assetList.push(...owners);
    if (result.total !== 1000) {
      page = false;
    } else {
      page++;
    }
  }
  const resultData = {
    totalResults: assetList.length,
    results: assetList,
  };
  console.log("Owners: ", resultData);
  fs.writeFile("output.json", JSON.stringify(resultData, null, 2), (err) => {
    if (err) throw err;
    console.log("Data written to file");
  });
  console.timeEnd("getAssetsByCreator"); // End the timer
};
getAssetsByCreator();

Đầu ra

Trong tất cả các đoạn mã trên, chúng ta xuất địa chỉ và chủ sở hữu tương ứng của từng NFT.

Mã

		{
			NFTAddress: 'J61tzxTJ1gqe1Z8orSQtNmvZUG27fokmcPcobdB3sZXz',
      ownerAddress: 'Dar5nrE6XWqv9vAi9o6enUQsamEJKq2zgxjNywncZpYj'
    },

Bạn có thể tùy ý sửa đổi đầu ra này để thêm bất kỳ thông tin cần thiết nào, chẳng hạn như tên, mô tả hoặc thuộc tính. Bạn có thể tìm thấy thông tin chi tiết về dữ liệu có trong phản hồi của API getAssetsByGroup trong tài liệu của chúng tôi.

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu cách truy xuất thông tin về những người nắm giữ một bộ sưu tập NFT bằng DAS API. Với DAS API, bạn có thể dễ dàng thu thập thông tin hữu ích về NFT và chủ sở hữu của chúng. Dù muốn phân tích hành vi người dùng hay theo dõi việc phân phối NFT, DAS API đều cung cấp một giải pháp thuận tiện. Bạn có thể bắt đầu sử dụng DAS API miễn phí ngay hôm nay bằng cách truy cập trang web của chúng tôi và đăng ký một gói dịch vụ.

Tài liệu tham khảo

Đăng ký nhận tin từ Helius

Luôn cập nhật những thông tin mới nhất về phát triển Solana và nhận thông báo khi chúng tôi đăng bài

Hình ảnh phóng to