IscnIdPrefix
Class
(or “Collection” in OpenSea speak) related to an ISCNClass
related to an AccountMsgNewClass
to create NFT Class related to their account or a ISCN record, and call MsgUpdateClass
as needed.MsgMintNFT
to mint NFT under the Class.MsgSendNFT
to transfer the token to another account.MsgNewClass
to create NFT Class related to their account or a ISCN record, and call MsgUpdateClass
as needed.MsgCreateBlindBoxContent
, MsgUpdateBlindBoxContent
, MsgDeleteBlindBoxContent
to prepare metadata of available tokens.MsgMintNFT
to mint unrevealed tokens before the reveal time.MsgCreateRoyaltyConfig
to configure the royalty rate and stakeholders.MsgUpdateRoyaltyConfig
to change the settings, or MsgDeleteRoyaltyConfig
to disable the royalty feature.MsgCreateListing
to list the token for sale, and call MsgUpdateListing
and MsgDeleteListing
as needed.MsgUpdateListing
to extend the expiration.QueryListingsByNFTRequest
. After verifying the listing is created by the current NFT owner via x/nft QueryOwnerRequest
, user call MsgBuyNFT
to purchase.MsgCreateOffer
to offer to buy a token, and call MsgUpdateOffer
and MsgDeleteOffer
as needed.MsgUpdateOffer
to extend the expiration.QueryOffersByNFTRequest
and call MsgSellNFT
to sell.ClassId
is mapped for related NFT Classessdk.AccAddress
) form, while they are formatted in bech32 string for external interfaces.Extends ADR-43 Class object:message Class {string id = 1;string name = 2;string symbol = 3;string description = 4;string uri = 5;string uri_hash = 6;google.protobuf.Any data = 7;}
ID
field:SHA256(append(bytes(IscnIdPrefix) or AccAddress, bytes(string(Serial))))
, in Bech32 with likenft
prefix.Serial
is the number of classes related to the parentlikenft12fre0mt7kzprlrnw7mc0e50gphcgr2zef88jwc7us7jgmx304g4smdde4v
Data
field:class_parent
, either ISCN fields or account will be filled, depending on the parent type.iscn_version_at_mint
is the latest ISCN version observed when the first token is minted for this class. Before minting, It will also be refreshed whenever user calls UpdateClass
. It will be frozen after the first token is minted (in line with UpdateClass
's policy).blind_box_config
is not emptymint_periods
allows flexible control of minting schedule, allowlisting and pricesallowed_addresses
being empty means any user is allowedstart_time
must be later than current time and earlier than the reveal_time
Extends ADR-43 NFT object:message NFT {string class_id = 1;string id = 2;string uri = 3;string uri_hash = 4;google.protobuf.Any data = 10;}
Data
field:class_parent
reflects the respective value in Class
data.to_be_revealed
denotes the class is blind box and the token content hasn’t been revealed yet.id
is different from the final NFT token’s ID, which will be generated sequentially at mint time. This ID is scoped to the blind box content templates under the class.Allocatable Royalty = Floor(Float(Txn Amount) / 10000.0 * Float(Rate Bps))
Allocated Royalty = Floor(Float(Allocatable Royalty) / Float(Total Weights) * Float(Stakeholder Weight))
sdk.AccAddress
) form, and formatted in bech32 string for external usages.sdk.AccAddress
) form, and formatted in bech32 string for external usages.input
field is required.id
and input
field is ignored even if supplied, a sequential token id will be generated.[a-zA-Z][a-zA-Z0-9/:-]{2,100}
burnable
flag must be true at the Class configUpdateClass
)id
is independent from the final minted token ID. It is scoped to the blind box contents under the class only.QueryOwnerRequest
to save gas fee in case of invalid listing