用于解析 Solana NFT 元数据并更新元数据的代码示例

2024-03-15

在 Solana 上,NFT 元数据存储在共享合约代币元数据程序所拥有的账户中,地址为metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s.

我需要一个清晰、简洁的代码示例来说明如何使用某些现有库来获取特定 NFT 的元数据。让我们以这个 NFT 为例:SolStone4itgFt6tSotypyVAaUkLJzpGQ5KXsJNhwpKBANMv49mf

到目前为止我得到的最远的是复制metaplex库并使用像这样的调用

 await getProgramAccounts(connection, METADATA_PROGRAM_ID, 'finalized');

然而,这将加载所有现有 NFT 的元数据。我需要使用一些过滤器而不是'finalized'作为承诺论据。

In the 元复合体代码库 https://github.com/metaplex-foundation/metaplex/blob/master/js/packages/web/src/contexts/meta/loadAccounts.ts#L166我相信他们有一个按创建者地址过滤的示例。

filters: [
    {
        memcmp: {
            offset:
            1 + // key
            32 + // update auth
            32 + // mint
            4 + // name string length
            MAX_NAME_LENGTH + // name
            4 + // uri string length
            MAX_URI_LENGTH + // uri
            4 + // symbol string length
            MAX_SYMBOL_LENGTH + // symbol
            2 + // seller fee basis points
            1 + // whether or not there is a creators vec
            4 + // creators vec length
            i * MAX_CREATOR_LEN,
            bytes: whitelistedCreators[j].info.address,
        }
    }
]

所以理论上我应该能够更新这个过滤器来代替按 NFT 自己的地址进行过滤,但我不确定如何在这里获得正确的位偏移量以使过滤器准确。

在我能够读取 nft 元数据之后,接下来我需要一个用于更新元数据的代码示例。特别是 URI 字段。


您几乎已经完成了大部分工作!

地址4itgFt6tSotypyVAaUkLJzpGQ5KXsJNhwpKBANMv49mf实际上是一个代币铸币厂,如浏览器上所示:https://explorer.solana.com/address/4itgFt6tSotypyVAaUkLJzpGQ5KXsJNhwpKBANMv49mf https://explorer.solana.com/address/4itgFt6tSotypyVAaUkLJzpGQ5KXsJNhwpKBANMv49mf

这意味着您将使用与您找到的示例非常相似的调用,但不是过滤whitelistedCreators数组,您将过滤薄荷的位置,即字节1 + 32,假设我们可以信任代码中的注释。这给出了一个函数调用:

getProgramAccounts(connection, METADATA_PROGRAM_ID, {
  filters: [
    {
      memcmp: {
        offset:
          1 + // key
          32 // update auth
        bytes: mintAddress.toBytes(),
      },
    },
  ],
})

为了更新元数据,您可能需要使用UpdateMetadata操作说明。看起来 Metaplex JS 库有一个实用函数可以做到这一点:https://github.com/metaplex-foundation/metaplex/blob/9d5a5c6d668cd9c597cff8c63dfba00dee2f72f0/js/packages/common/src/actions/metadata.ts#L481 https://github.com/metaplex-foundation/metaplex/blob/9d5a5c6d668cd9c597cff8c63dfba00dee2f72f0/js/packages/common/src/actions/metadata.ts#L481

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于解析 Solana NFT 元数据并更新元数据的代码示例 的相关文章

  • WAX 区块链:NFT 之王

    在过去短短几个月中 xff0c WAX 区块链的 NFT 生态活跃度出现了爆发性增长 xff0c 奠定了 WAX 为 NFT 之王 的称号 在 WAX 区块链上首发的 NFT 都迅速销售一空 xff0c 每次发行量都超过 100 000 个
  • NFT和数字藏品的区别

    来源 xff1a 德勤 Web3 0模式分析及中国应用创新探索
  • go语言实现NFT

    此文章以及链码 合约 均为原创 已通过以heco nft记录为NFT资产 HecoInfo Transaction Hash Txhash Details HecoInfo 请勿转载 如有兴趣 可扫描文章最后的二维码 基于erc721的以太
  • 【Web3 系列开发教程——创建你的第一个 NFT(6)】为 NFT 设置价格

    我想作为 NFT 的创建者 你可能有意将你的 NFT 出售给你的 NFT 爱好者 为此 我们需要为 NFT 定价 一般有两种主要的定价方式 在智能合约内定价 本文所讲 在 NFT 市场或平台上列出你的 NFT 更流行的方法 在智能合约内设置
  • NFT数字藏品平台开发——如何快速搭建搭建数字藏品平台

    2021年可以称为元宇宙年 随着元宇宙概念的兴起 好多人都在关心我们是否可以成功构建元宇宙 显然是可以实现的 2022年年初 NFT在国内的热潮兴起 国内也称之为数字藏品 NFT由于具有不可置换 不可分割的特性 很快在国内掀起一热潮 西西弗
  • 信息网络向价值网络演进过程中产品形态的思考

    随着Facebook品牌更名Meta 持续火爆了一年多的元宇宙概念迎来了互联网巨头的正名 全球互联网生态产品将迎来怎样的新一轮大跃进 本文整理自Contentbox VP Castbox亚洲地区负责人杨霄在量江湖 拍乐云主办的 社交产品如何
  • GameFi 增长: 如果保持游戏用户的留存

    Mar 2023 Daniel 链游存在用户留存低的问题 对于所有关于成为游戏的未来的讨论 90 的区块链游戏在30天内就不活跃了 如果没有玩家长期享受游戏 今天大多数GameFi项目仍然只是DeFi协议 以及有更漂亮的图形和一些互动元素
  • NFT相关的常见术语

    NFT 爱好者在谈论这个东西时候总是会有一堆让人眼花缭乱的术语 对非圈内人来说会感觉难以理解 这里整理了23个术语解释来帮助你理解 1 10k 项目 一个 10k 项目是一个由大约 10 000 个头像组成的 集邮 项目 这种类型的 NFT
  • 疫情当下,我们如何正确的看待nft数字藏品

    我是一个做传统家居行业的老板 从2019年底开始 国内疫情的反复蔓延 导致家居生意越来越难 线上线下都很难活下去 公司从一开始的裁员 到最后的关门 中间经历了很多挫折 还记得公司在关门的那一刻 手底下员工对我讲期待我东山再起的那一刻 当时数
  • 手把手教你区块链java开发智能合约nft(第四篇)-如何动态获取gasPrice和gasLimit?

    手把手教你区块链java开发智能合约nft 第三篇 如何动态获取gasPrice和gasLimit 初学区块链 那真叫一个痛苦并无助 如果没有人带你的话 今天写的这篇是在前面文章基础上写的 初学区块链的朋友建议先看我前面写的文章 手把手教你
  • 如何查找 v2 糖果机铸造的所有 NFT

    我正在铸造 Solana NFT Candy machine v2 最近发布 v1 已弃用 如果我创建一个 v2 糖果机并铸造一些 NFT 我以后如何从所有铸造的代币中找到哈希值 如果您有糖果机 ID 您可以通过以下方式找到所有薄荷糖 im
  • 调试发送程序指令时“事务模拟失败”(Solana Solidity)

    当尝试调用编译的程序时 solana solidity 我收到以下错误 Transaction simulation failed Error processing Instruction 0 Program failed to compl
  • 来自同一来源的多个 NFT

    一般性的 NFT 问题 但不要攻击我 我真的试图找到答案 NFT 可以从同一张图像或该图像的副本创建吗 以我创建的这个 NFT 狮子猫为例 https rarible com token 0x60f80121c31a0d46b5279700
  • 如何从类型脚本读取缓冲区数据?(Solana)

    如何从类型脚本读取缓冲区数据 我想使用公钥来获取我拥有的所有令牌列表 我试图得到这个 但返回的是一个空的对象数组 import Connection Keypair from solana web3 js const Solana new
  • 将图像和名称添加到现有 WL spl 令牌

    我一直用的是Solana labs token listGithub 上的存储库 https github com solana labs token list https github com solana labs token list
  • solana web3 verifyTransaction @deprecated 使用 TransactionConfirmationConfig 示例

    使用此代码 VS 显示不推荐使用的警告 方法 Connection confirmTransaction 策略 字符串 承诺 承诺 Promise 1 重载 deprecated 相反 使用 交易确认配置 签名 策略 字符串 承诺 承诺 P
  • 如何使用 image 在 solana 上创建令牌,并立即禁用铸造新令牌?

    我尝试搜索 但旧指南说创建令牌并将其添加到 solana 存储库的令牌列表中 但它现在是只读的 我尝试搜索 但我发现的所有内容都不是有效的解决方案 死服务和诈骗服务什么的允许禁用 mint 并将 self 添加为 token cotrole
  • 如何将 Phantom 钱包连接到我的 Flutter Web 应用程序?

    我一直在尝试将 Flutter Web 应用程序连接到 Phantom 钱包 但没有成功 尚未发布 pub dev 软件包来实现此目的 并且无法弄清楚如何使用 dart js 互操作来实现此目的 想知道是否有人已经弄清楚了 我有一段 粗略的
  • 为什么“anchor build”和“Cargo build-bpf”显示错误的 rustc 版本?

    我正在尝试构建 https github com betterclever solend anchor https github com betterclever solend anchor 包使用anchor build 但是我收到以下错
  • 开发人员指南从以太坊迁移到 Solana

    这篇文章是关于什么的 以太坊是近期最重要的创新之一 历史上第一次 我们有了一个为社会协调而建立的去中心化全球平台 它有可能彻底改变许多行业 尽管重要 但以太坊的运行环境 以太坊虚拟机 EVM 目前的状态并不是为消费级应用而构建的 它是一个单

随机推荐