Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade MerkleNFTDistributor::register to v2 #196

Merged
merged 4 commits into from
Nov 6, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified build/StarcoinFramework/bytecode_modules/Genesis.mv
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/GenesisNFT.mv
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/MerkleNFTDistributor.mv
Binary file not shown.
Binary file modified build/StarcoinFramework/bytecode_modules/NFT.mv
Binary file not shown.
2 changes: 0 additions & 2 deletions build/StarcoinFramework/docs/Genesis.md
Original file line number Diff line number Diff line change
Expand Up @@ -414,8 +414,6 @@ The module for init Genesis
<a href="GenesisNFT.md#0x1_GenesisNFT_initialize">GenesisNFT::initialize</a>(&genesis_account, merkle_root, 1639u64, image);
};
<a href="Config.md#0x1_Config_publish_new_config">Config::publish_new_config</a>(&genesis_account, <a href="LanguageVersion.md#0x1_LanguageVersion_new">LanguageVersion::new</a>(4));
// upgrade genesis <a href="NFT.md#0x1_NFT">NFT</a>
<a href="GenesisNFT.md#0x1_GenesisNFT_upgrade_to_nft_type_info_v2">GenesisNFT::upgrade_to_nft_type_info_v2</a>(&genesis_account);

//v11 -&gt; v12
<a href="Block.md#0x1_Block_checkpoints_init">Block::checkpoints_init</a>();
Expand Down
37 changes: 34 additions & 3 deletions build/StarcoinFramework/docs/MerkleNFT.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
- [Resource `MerkleNFTDistribution`](#0x1_MerkleNFTDistributor_MerkleNFTDistribution)
- [Constants](#@Constants_0)
- [Function `register`](#0x1_MerkleNFTDistributor_register)
- [Function `register_v2`](#0x1_MerkleNFTDistributor_register_v2)
- [Function `mint_with_cap`](#0x1_MerkleNFTDistributor_mint_with_cap)
- [Function `encode_leaf`](#0x1_MerkleNFTDistributor_encode_leaf)
- [Function `set_minted_`](#0x1_MerkleNFTDistributor_set_minted_)
Expand Down Expand Up @@ -98,7 +99,7 @@



<pre><code><b>public</b> <b>fun</b> <a href="MerkleNFT.md#0x1_MerkleNFTDistributor_register">register</a>&lt;NFTMeta: <b>copy</b>, drop, store, Info: <b>copy</b>, drop, store&gt;(signer: &signer, merkle_root: vector&lt;u8&gt;, leafs: u64, info: Info, meta: <a href="NFT.md#0x1_NFT_Metadata">NFT::Metadata</a>): <a href="NFT.md#0x1_NFT_MintCapability">NFT::MintCapability</a>&lt;NFTMeta&gt;
<pre><code><b>public</b> <b>fun</b> <a href="MerkleNFT.md#0x1_MerkleNFTDistributor_register">register</a>&lt;NFTMeta: <b>copy</b>, drop, store, Info: <b>copy</b>, drop, store&gt;(_signer: &signer, _merkle_root: vector&lt;u8&gt;, _leafs: u64, _info: Info, _meta: <a href="NFT.md#0x1_NFT_Metadata">NFT::Metadata</a>): <a href="NFT.md#0x1_NFT_MintCapability">NFT::MintCapability</a>&lt;NFTMeta&gt;
</code></pre>


Expand All @@ -107,7 +108,37 @@
<summary>Implementation</summary>


<pre><code><b>public</b> <b>fun</b> <a href="MerkleNFT.md#0x1_MerkleNFTDistributor_register">register</a>&lt;NFTMeta: <b>copy</b> + store + drop, Info: <b>copy</b> + store + drop&gt;(signer: &signer, merkle_root: vector&lt;u8&gt;, leafs: u64, info: Info, meta: Metadata): MintCapability&lt;NFTMeta&gt; {
<pre><code><b>public</b> <b>fun</b> <a href="MerkleNFT.md#0x1_MerkleNFTDistributor_register">register</a>&lt;NFTMeta: <b>copy</b> + store + drop, Info: <b>copy</b> + store + drop&gt;(
_signer: &signer,
_merkle_root: vector&lt;u8&gt;,
_leafs: u64,
_info: Info,
_meta: Metadata
): MintCapability&lt;NFTMeta&gt; {
<b>abort</b> <a href="Errors.md#0x1_Errors_deprecated">Errors::deprecated</a>(1)
}
</code></pre>



</details>

<a name="0x1_MerkleNFTDistributor_register_v2"></a>

## Function `register_v2`



<pre><code><b>public</b> <b>fun</b> <a href="MerkleNFT.md#0x1_MerkleNFTDistributor_register_v2">register_v2</a>&lt;NFTMeta: <b>copy</b>, drop, store&gt;(signer: &signer, merkle_root: vector&lt;u8&gt;, leafs: u64, meta: <a href="NFT.md#0x1_NFT_Metadata">NFT::Metadata</a>): <a href="NFT.md#0x1_NFT_MintCapability">NFT::MintCapability</a>&lt;NFTMeta&gt;
</code></pre>



<details>
<summary>Implementation</summary>


<pre><code><b>public</b> <b>fun</b> <a href="MerkleNFT.md#0x1_MerkleNFTDistributor_register_v2">register_v2</a>&lt;NFTMeta: <b>copy</b> + store + drop&gt;(signer: &signer, merkle_root: vector&lt;u8&gt;, leafs: u64, meta: Metadata): MintCapability&lt;NFTMeta&gt; {
<b>let</b> bitmap_count = leafs / 128;
<b>if</b> (bitmap_count * 128 &lt; leafs) {
bitmap_count = bitmap_count + 1;
Expand All @@ -122,7 +153,7 @@
merkle_root,
claimed_bitmap
};
<a href="NFT.md#0x1_NFT_register">NFT::register</a>&lt;NFTMeta, Info&gt;(signer, info, meta);
<a href="NFT.md#0x1_NFT_register_v2">NFT::register_v2</a>&lt;NFTMeta&gt;(signer, meta);
<b>move_to</b>(signer, distribution);
<a href="NFT.md#0x1_NFT_remove_mint_capability">NFT::remove_mint_capability</a>&lt;NFTMeta&gt;(signer)
}
Expand Down
Binary file modified build/StarcoinFramework/source_maps/Genesis.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/GenesisNFT.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/GenesisNFTScripts.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/IdentifierNFT.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/IdentifierNFTScripts.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/MerkleNFTDistributor.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/MerkleProof.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/NFT.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/NFTGallery.mvsm
Binary file not shown.
Binary file modified build/StarcoinFramework/source_maps/NFTGalleryScripts.mvsm
Binary file not shown.
2 changes: 0 additions & 2 deletions sources/Genesis.move
Original file line number Diff line number Diff line change
Expand Up @@ -349,8 +349,6 @@ module StarcoinFramework::Genesis {
GenesisNFT::initialize(&genesis_account, merkle_root, 1639u64, image);
};
Config::publish_new_config(&genesis_account, LanguageVersion::new(4));
// upgrade genesis NFT
GenesisNFT::upgrade_to_nft_type_info_v2(&genesis_account);

//v11 -> v12
Block::checkpoints_init();
Expand Down
3 changes: 1 addition & 2 deletions sources/GenesisNFT.move
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ module StarcoinFramework::GenesisNFT {
public fun initialize(sender: &signer, merkle_root: vector<u8>, leafs: u64, image: vector<u8>){
CoreAddresses::assert_genesis_address(sender);
let metadata = NFT::new_meta_with_image(b"StarcoinGenesisNFT", image, b"The starcoin genesis NFT");
let nft_info = GenesisNFTInfo{merkle_root: *&merkle_root, total_supply: leafs};
let cap = MerkleNFTDistributor::register<GenesisNFTMeta, GenesisNFTInfo>(sender, merkle_root, leafs, nft_info, metadata);
let cap = MerkleNFTDistributor::register_v2<GenesisNFTMeta>(sender, merkle_root, leafs, metadata);
move_to(sender, GenesisNFTMintCapability{cap});
}

Expand Down
14 changes: 12 additions & 2 deletions sources/MerkleNFT.move
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,17 @@ module StarcoinFramework::MerkleNFTDistributor {
claimed_bitmap: vector<u128>,
}

public fun register<NFTMeta: copy + store + drop, Info: copy + store + drop>(signer: &signer, merkle_root: vector<u8>, leafs: u64, info: Info, meta: Metadata): MintCapability<NFTMeta> {
public fun register<NFTMeta: copy + store + drop, Info: copy + store + drop>(
_signer: &signer,
_merkle_root: vector<u8>,
_leafs: u64,
_info: Info,
_meta: Metadata
): MintCapability<NFTMeta> {
abort Errors::deprecated(1)
}

public fun register_v2<NFTMeta: copy + store + drop>(signer: &signer, merkle_root: vector<u8>, leafs: u64, meta: Metadata): MintCapability<NFTMeta> {
let bitmap_count = leafs / 128;
if (bitmap_count * 128 < leafs) {
bitmap_count = bitmap_count + 1;
Expand All @@ -62,7 +72,7 @@ module StarcoinFramework::MerkleNFTDistributor {
merkle_root,
claimed_bitmap
};
NFT::register<NFTMeta, Info>(signer, info, meta);
NFT::register_v2<NFTMeta>(signer, meta);
move_to(signer, distribution);
NFT::remove_mint_capability<NFTMeta>(signer)
}
Expand Down
19 changes: 5 additions & 14 deletions sources/NFT.move
Original file line number Diff line number Diff line change
Expand Up @@ -286,20 +286,11 @@ module NFT {
/// Register a NFT type to genesis
/// Note: this function is deprecated, please use `register_v2`
public fun register<NFTMeta: copy + store + drop, NFTTypeInfoExt: copy + store + drop>(
sender: &signer,
info: NFTTypeInfoExt,
meta: Metadata
) acquires NFTTypeInfo {
let genesis_account = GenesisSignerCapability::get_genesis_signer();
let type_info = new_nft_type_info(sender, info, meta);
move_to<NFTTypeInfo<NFTMeta, NFTTypeInfoExt>>(&genesis_account, type_info);
let mint_cap = MintCapability<NFTMeta> {};

Self::upgrade_nft_type_info_from_v1_to_v2<NFTMeta, NFTTypeInfoExt>(sender, &mut mint_cap);

move_to<MintCapability<NFTMeta>>(sender, mint_cap);
move_to<BurnCapability<NFTMeta>>(sender, BurnCapability {});
move_to<UpdateCapability<NFTMeta>>(sender, UpdateCapability {});
_sender: &signer,
_info: NFTTypeInfoExt,
_meta: Metadata
) {
abort Errors::deprecated(1)
pause125 marked this conversation as resolved.
Show resolved Hide resolved
}

/// Register a NFT type to genesis
Expand Down