#domain-name #nft #tokenize #name-service #solana #mint #metaplex

name-tokenizer

一个Solana程序,可以将Solana域名服务NFT化

2个稳定版本

2.0.0 2024年6月4日
1.0.0 2023年12月20日

#8#metaplex

Download history 6/week @ 2024-05-19 1/week @ 2024-05-26 107/week @ 2024-06-02 10/week @ 2024-06-09 16/week @ 2024-06-16 7/week @ 2024-06-23 182/week @ 2024-06-30 272/week @ 2024-07-07 266/week @ 2024-07-14 262/week @ 2024-07-21 349/week @ 2024-07-28 373/week @ 2024-08-04 338/week @ 2024-08-11 249/week @ 2024-08-18

1,312 每月下载量
2 个crates中使用(通过 sns-sdk

MIT 许可证

70KB
1.5K SLoC

名称分词器



将域名分词成Metaplex NFT


目录


  1. 程序ID
  2. 简介
  3. 安全性
  4. 可重复构建
  5. 收藏
  6. 铸造
  7. NFT
  8. 测试
    • Rust
    • JS

程序ID


主网程序ID nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk


简介


此程序允许人们将他们的域名分词成遵循 Metaplex标准 的NFT,具有创建/赎回机制。


可重复构建


可以使用可重复构建脚本(build.sh)来使用docker构建程序


安全性


有关安全披露或报告错误,请访问 ImmuneFi 了解有关我们的赏金计划更多信息。


收藏


NFT全部属于经过验证的收藏 E5ZnBpH9DYcxRkumKdS4ayJ3Ftb6o3E8wSbXw4N92GWg


铸造


NFT铸造是从代表域名的密钥派生的PDAs。派生方式如下

pub const MINT_PREFIX: &[u8; 14] = b"tokenized_name";

// ...

let (mint, mint_nonce) = Pubkey::find_program_address(
    &[MINT_PREFIX, &accounts.name_account.key.to_bytes()],
    program_id,
);

NFT


当域名被分词时,其所有权转移到将持有域名的PDA,而在域名分词期间。作为交换,程序为用户铸造一个NFT。当赎回域名时,域名将转移回NFT持有者,并且NFT将被销毁。

在分词过程中创建了一个NftRecord,其状态如下

pub struct NftRecord {
    /// Tag
    pub tag: Tag,

    /// Nonce
    pub nonce: u8,

    /// Name account of the record
    pub name_account: Pubkey,

    /// Record owner
    pub owner: Pubkey,

    /// NFT mint
    pub nft_mint: Pubkey,
}

如果在域名分词期间不小心将资金发送到NftRecord而不是NFT持有者,则所有者有取回这些资金的可能性。正确的所有者如下确定

  • 如果NftRecord处于活动状态,即域名已分词:正确的所有者是NFT持有者
  • 如果 NftRecord 失效,即NFT已被兑换:正确的所有者是最后一个兑换的人(在 NftRecord 中的 owner 字段)

测试


Rust

可以使用以下命令运行功能Rust测试:

cargo test-bpf --features devnet

JS

可以使用以下命令运行端到端测试:

yarn jest

依赖关系

~38MB
~647K SLoC