代币,也就是区块链资产,用来代表你在区块链上虚拟物品的身份。
当你的游戏项目在区块链上时,它们的价值就会更有形,因为它们的身份是不可改变的,透明的,不可破坏的。
虚拟物品的标记化和管理是NFTEX平台的核心功能。
有两种不同的令牌类型可以使用NFTEX平台创建。
传统货币和加密货币是可互换的;它们是相同的、可互换的、可分割的。要使货币成为标准的支付方式,可互换性是必不可少的。
可替换代币没有一个独特的序列号或历史;没有任何东西可以将一个代币与下一个代币区分开来。例如,每一张5美元的纸币都是完全一样的,具有相同的价值。每一半的可替换代币等于另一半的四分之二。
可替换代币对于货币、奖励点、折扣和促销材料等都很有用--任何不需要独特身份的物品。
不可变卖的代币是一种独特的资产。
非通用代币是不可分割的,并作为具有独立数据的独立代币存储在NFTEX钱包中。然而,非互换性代币并不总是100%唯一的。例如,一组代币可能共享相同的名称、描述和图像,但如果它们具有独特的、可区分的属性(身份、历史和元数据),它们仍然是不可互换的。
非通用代币适用于诸如身份识别、证书、收藏品、游戏角色--任何需要自己独特身份的资产。
有两种类型的数据可以附加到每个令牌上。
这些数据可以随时进行编辑,并用新的设置替换。
名称。将会被写入区块链的名字。
元数据URI
请参阅使用元数据部分。
元数据URI允许您添加一个包含JSON的URL,该URL描述了您的项目的属性,包括图像。
可转让
确定物品是可以交易,还是绑定在其所有者身上(即不可交易)。
转让费用设置:值
如果使用ENJ,请将该值乘以10^18以包含18位小数。当您第一次设置转账费用时,该设置将成为您可以收取的最高费用。但是,您可以在任何时候降低转让费,这时,您可以将其提高到您最初设置的金额。
totalSupply。这是你希望世界上存在的物品数量。这个限制可以是
断的,也可以是不同的意思,这取决于你上面使用的供应模式。例如,如果你
,使用COLLAPSING供应类型,那么初始供应量将代表
,在原始运行期间存在的物品总数。最容易理解的是fixed,它告诉用户,任何时候都只能有
"这么多"这种物品存在。
initialReserve。这是你想预付的铸币数量,作为初始创建操作的一部分。铸币项目将从这个余额中扣除,直到用完为止。您必须在创建时
,至少支付一个物品。拥有初始储备金可以让你在创建物品时无需花费所有的ENJ作为总供给。
转让费用设置:类型
你可以选择对你的用户进行的每一笔点对点交易收取转账费用。这让你可以将围绕着你的游戏的经济货币化,并通过在你的社区内培养有趣的新社交动态来获得收入。
transferFeeSettings:
您想用来作为转账费用的代币ID。如果您想让您的用户用NFTEX Coin支付,请使用0。
meltValue
你想要使用的每单位物品的ENJ数量。您需要使用最小
的ENJ数量来支持您的物品,这取决于您在初始储备中创建的数量(最小成本将在标签旁边列出)。一般来说,您制作的物品种类越多,每单位物品所需的ENJ越少。
supplyModel。这就是物品池在铸币和熔化方面的表现。
以下是我们目前的供应类型。
meltFeeRatio
这是当前玩家在熔炼物品时将获得的ENJ百分比。剩余的ENJ将归创造者所有。
nonFungible
该项目是Non-Fungible还是Fungible,是真还是假。
现在你已经创建了模板并定义了它的元数据,是时候铸造你的第一批代币了。
铸造可熔化代币(FT)与非可熔化代币(NFT)的请求略有不同。
您可以将任何类型的令牌批量铸造到多个地址,也可以将它们铸造到单个地址。
可互换代币的供应基本上由代币数据中的数量字段表示,而非可互换代币的供应则由单独的代币身份数量表示。
这就是为什么,如果你需要在一个交易中铸造多个NFT,你需要为每个单独的项目指定接收Ethereum地址。另外,建议不要在单笔交易中铸造超过100个NFT,因为超载交易会导致交易失败。
FT没有同样的限制,你可以将无限量的可锻打代币铸入一个Ethereum地址。然而,建议不要在一次交易中向超过100个不同的Ethereum地址中铸造任何数量的可锻打代币。这也可能导致交易因网络过载而失败。
这里是2种不同代币类型(FT和NFT)之间的相同请求。
菌类代币。
mutation MintFungibleItems($identityId: Int!, $appId: Int!, $tokenId: String!) {
transaction: CreateNFTEXRequest(
identity_id: $identityId
appId: $appId
type: MINT
mint_token_data: {
token_id: $tokenId
recipient_address_array: [
"WALLET_ADDRESS_1"
"WALLET_ADDRESS_2"
]
value_array: [
5
3
]
}
) {
id
encodedData
}
}
这个请求将铸造5倍的物品到"WALLET_ADDRESS_1"和3倍的物品到"WALLET_ADDRESS_2"。您可以铸造最多<inline-code>初始储备<inline-code>的物品。</inline-code></inline-code>
非真菌性代币。
mutation MintNonFungibleItems($identityId: Int!, $appId: Int!, $tokenId: String!) {
transaction: CreateNFTEXRequest(
identityId: $identityId
appId: $appId
type: MINT
mint_token_data: {
token_id: $tokenId
token_index: "0"
recipient_address_array: [
"WALLET_ADDRESS_1"
"WALLET_ADDRESS_1"
"WALLET_ADDRESS_1"
"WALLET_ADDRESS_1"
"WALLET_ADDRESS_1"
"WALLET_ADDRESS_2"
"WALLET_ADDRESS_2"
"WALLET_ADDRESS_2"
]
}
) {
id
encodedData
}
}
该请求将向"WALLET_ADDRESS_1"铸造5个物品,向"WALLET_ADDRESS_2"铸造3个物品。
一旦请求成功,您需要在钱包的REQUESTS部分接受并签署交易。
如果钱包守护进程抱怨交易的参数无效,需要还原,你可以通过使用以下突变来还原交易。
mutation CancelTransaction($id: Int) {
transaction: UpdateNFTEXRequest(id: $id state: CANCELED_USER) {
id
title
state
}
}
代币模板包含核心的、不可改变的代币数据,这些数据将被提交到区块链上。
要创建一个项目,你需要提出一个带有所需项目属性的请求。这里是
一个例子。
mutation CreateToken(
$identityId: Int
$name: String
$totalSupply: Int
$initialReserve: Int
) {
transaction: CreateNFTEXRequest(
identityId: $identityId
appId: $appId
type: CREATE
create_token_data: {
name: $name
totalSupply: $totalSupply
initialReserve: $initialReserve
supplyModel: FIXED
meltValue: "15000000000000000000"
meltFeeRatio: 1250
transferable: PERMANENT
transferFeeSettings: {
type: PER_TRANSFER
token_id: "0"
value: "1000000000000000000"
}
nonFungible: false
}
) {
id
encodedData
}
}
一旦请求成功,您需要在钱包的REQUESTS部分接受并签署交易。
代币ID是赋予你的代币模板的永久身份,一旦它被提交到区块链。
因此,一旦创建了代币模板,您将需要找到代币ID,以MINT您在模板中定义的代币。
有多种方法可以找到资产的代币ID。
query Tokens($name: String, $page: Int, $perPage: Int) {
tokens: NFTEXTokens(
name: $name
pagination: { page: $page, limit: $perPage }
) {
id
name
creator
meltValue
meltFeeRatio
meltFeeMaxRatio
supplyModel
totalSupply
circulatingSupply
reserve
transferable
nonFungible
blockHeight
markedForDelete
availableToMint
itemURI
}
}
最后,如果您使用的是NFTEX面板,您会发现,当您铸造新创建的资产时,您还可以在面板上看到令牌ID。
注意:你需要先等待它在区块链上被确认和搜刮。
一旦您通过创建代币模板定义了您的代币的区块链数据,您就可以为其添加Metadata,Metadata存储在一个.json文件中,托管在某个具有公共读取权限的地方。
在元数据方面,请注意以下要求。
严格来说,物品元数据是可选的。不过,如果您想在游戏中显示图片和自定义物品属性,那么您的资产就会变得特别独特。NFTEX Wallet和其他NFTEX服务也会根据您设置的元数据来显示您的资产。
您可以包含一个名称(将代替区块链项目名称显示)、描述和图片链接,例如下面的例子。
{
"name": "item_name",
"description": "Description line 1.\nDescription line 2.",
"image": "/image.jpg"
}
您需要将该文件保存为.json文件。一旦你上传了那个.json文件,并有公开的读取权限,你就可以请求设置项目URI(统一资源标识符)。
如果你对托管文件不熟悉,请看本指南。
下面的突变将为您的资产设置项目URI。
mutation SetItemUri($identityId: Int!, $itemUriData: SetItemUriInput!) {
CreateNFTEXRequest(identity_id: $identityId, type: SET_ITEM_URI, set_item_uri_data: $itemUriData) {
id
encodedData
state
}
}
Advanced Users: The URI value allows for ID substitution by clients. If the string {id} exists in any URI, clients must replace this with the actual token ID in hexadecimal form. This allows for large number of tokens to use the same on-chain string by defining a URI once, for a large collection of tokens.
Example of such a URI:
详情请参见ERC-1155标准文档中的元数据部分。
一旦请求成功,您需要在钱包的REQUESTS部分接受并签署交易。