2个稳定版本
2.0.0 | 2024年6月4日 |
---|---|
1.0.0 | 2023年12月20日 |
#8 在 #metaplex
1,312 每月下载量
在 2 个crates中使用(通过 sns-sdk)
70KB
1.5K SLoC
名称分词器
将域名分词成Metaplex NFT
目录
程序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