You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新Solana NFT的freezeAuthority?能否用指定工具库操作?

更新Solana NFT的Freeze Authority及工具库实现方法

Solana NFT本质是供应量为1的SPL Token,其freezeAuthority是mint账户的核心权限,用于控制是否能冻结对应的代币账户。更新该权限必须由当前持有freezeAuthority的密钥对签名发起交易,以下是使用指定工具库的实现方案:

一、使用@solana/spl-token库实现

spl-token是Solana官方的SPL Token操作库,可以直接对mint账户的权限进行修改,步骤如下:

  1. 导入依赖模块
import { Connection, Keypair, PublicKey, sendAndConfirmTransaction } from '@solana/web3.js';
import { updateFreezeAuthority } from '@solana/spl-token';
  1. 配置核心参数
// Solana网络连接(根据需求切换主网/测试网RPC)
const connection = new Connection('https://api.devnet.solana.com');
// 当前持有freezeAuthority的密钥对(需妥善保管)
const currentFreezeAuthority = Keypair.fromSecretKey(new Uint8Array([/* 你的私钥数组 */]));
// 目标NFT的mint地址
const mintAddress = new PublicKey('NFT_MINT_ADDRESS_HERE');
// 新的freezeAuthority公钥(设为null则移除该权限)
const newFreezeAuthority = new PublicKey('NEW_AUTHORITY_ADDRESS_HERE'); // 或 null
  1. 构建并发送交易
async function updateNftFreezeAuthority() {
  const transaction = await updateFreezeAuthority(
    connection,
    currentFreezeAuthority,
    mintAddress,
    newFreezeAuthority,
    [] // 额外签名者(如果需要)
  );

  const signature = await sendAndConfirmTransaction(connection, transaction, [currentFreezeAuthority]);
  console.log(`交易完成,签名:${signature}`);
}

updateNftFreezeAuthority();

二、使用@metaplex-foundation库实现

Metaplex的生态库(如@metaplex-foundation/js)封装了NFT的高级操作,同时也支持底层SPL Token权限的修改,以下是实现方式:

  1. 导入依赖模块
import { Connection, Keypair, PublicKey } from '@solana/web3.js';
import { Metaplex, keypairIdentity } from '@metaplex-foundation/js';
  1. 初始化Metaplex实例并获取NFT信息
const connection = new Connection('https://api.devnet.solana.com');
const currentFreezeAuthority = Keypair.fromSecretKey(new Uint8Array([/* 你的私钥数组 */]));
const mintAddress = new PublicKey('NFT_MINT_ADDRESS_HERE');
const newFreezeAuthority = new PublicKey('NEW_AUTHORITY_ADDRESS_HERE'); // 或 null

// 创建Metaplex实例并设置身份
const metaplex = Metaplex.make(connection)
  .use(keypairIdentity(currentFreezeAuthority));
  1. 更新Freeze Authority
    Metaplex的Token模块可直接调用底层SPL Token方法,或者通过NFT对象关联操作:
async function updateNftFreezeAuthority() {
  // 通过mint地址获取TokenMint对象
  const mint = await metaplex.tokens().findMintByAddress({ address: mintAddress });
  
  // 更新freezeAuthority
  const result = await metaplex.tokens().updateFreezeAuthority({
    mintAddress: mint.address,
    newFreezeAuthority,
    authority: currentFreezeAuthority,
  });

  console.log(`交易完成,签名:${result.response.signature}`);
}

updateNftFreezeAuthority();

注意事项

  • 只有当前的freezeAuthority持有者才能发起更新交易,否则会报错。
  • 将newFreezeAuthority设为null会彻底移除该权限,后续无法再冻结代币账户。
  • 确保使用的RPC节点稳定,测试环境建议使用Devnet,主网操作前请做好测试。

内容的提问来源于stack exchange,提问作者DoHan_Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:15:46