介绍
现在我们有一个集合和多个图式的NFT,我们可以转移到模板上。一个模板使我们能够使用已经设置的模式的某些部分造成NFT。当我们要保证每个NFT都具有相同的属性时,这很有用。
例如,对于我们的小鸡蛋NFT,我们将希望它们都具有相同的名称,IMG和描述。考虑到这一点,我们可以创建一个模板,我们从中造成NFT。这不仅节省了确保我们使用相同属性造成每个NFT的麻烦,而且还可以在Atomichub上启用其他功能。 Atomichub UI将向用户向用户展示其NFT的模板,其薄荷的数量以及该模板中存在多少NFT,已被铸造出来,并燃烧了多少个NFT。现在,用户将确切地知道他们的NFT来自何处,NFT的罕见以及在Atomichub Marketplace的表现。
了解CreateTempl动作
让我们看createtempl
方法:
每个字段都是非常不言自明的,它是基于我们已经解决的集合和模式信息:
-
authorized_creator
-在我们的示例中,作者将与我们上次示例的付款人相同:waxcourse123
。这应该是您的帐户名称,或以前的收藏创建步骤中的授权帐户。 -
collection_name
-与以前相同,babychicknft
。 -
schema_name
-这是我们模式的名称。我们将拥有一个babychick
和chickegg
。 -
transferable
-标记使用此模板铸造的资产是否可以转移到其他钱包。 -
burnable
-标记使用此模板铸造的资产是否可燃烧。 -
max_supply
-从此模板可以铸造多少个NFT。 -
immutable_data
-这是我们填写从该模板铸造的所有NFT中相同的属性的地方。
让我们的模板从immutable_data
开始:
const template = [
{ "key": "name", "value": ["string", "Baby Chick Egg"] },
{ "key": "img", "value": ["image", "QmTAJmKRFUo4SnmKiq6ixM4FuhAQeReHuCBKE1NZZRpkM9"] },
{ "key": "description", "value": ["string", "Baby Chick Egg for hatching"] },
{ "key": "url", "value": ["string", "https://capsulecat.com"] },
{ "key": "socials", "value": ["string", JSON.stringify(socials)] }
];
在这里,我们定义了小鸡鸡蛋NFT模板。当我们造成蛋NFT时,这是它们将衍生的模板。所有鸡蛋都将具有相同的名称,IMG,描述,URL和社交信息。
接下来,让我们看一下小鸡的immutable_data
。当用户孵化鸡蛋时,我们将铸造三种小鸡Nfts之一。
const templateEpic = [
{ "key": "name", "value": ["string", "Epic Baby Chick"] },
{ "key": "img", "value": ["image", "QmUwqZ64McMgzzP9Hv1qXvEUaubcHQZwAVpdfjKpn9M5vv"] },
{ "key": "description", "value": ["string", "Epic baby chick"] },
{ "key": "rarity", "value": ["string", "Epic"] },
{ "key": "url", "value": ["string", "https://capsulecat.com"] },
{ "key": "socials", "value": ["string", JSON.stringify(socials)] }
];
const templateRare = [
{ "key": "name", "value": ["string", "Rare Baby Chick"] },
{ "key": "img", "value": ["image", "QmdQsG8JNfPSSxNzHE5gwhHmBSJNVYaWLWYwpYpEGX8UJ6"] },
{ "key": "description", "value": ["string", "Rare baby chick"] },
{ "key": "rarity", "value": ["string", "Rare"] },
{ "key": "url", "value": ["string", "https://capsulecat.com"] },
{ "key": "socials", "value": ["string", JSON.stringify(socials)] }
];
const templateCommon = [
{ "key": "name", "value": ["string", "Common Baby Chick"] },
{ "key": "img", "value": ["image", "Qmd2FHnTHw3ernkYegh2xNQK1FFKTd8PwA21ToRhGLvddz"] },
{ "key": "description", "value": ["string", "Common baby chick"] },
{ "key": "rarity", "value": ["string", "Common"] },
{ "key": "url", "value": ["string", "https://capsulecat.com"] },
{ "key": "socials", "value": ["string", JSON.stringify(socials)] }
];
脚本Chickegg模板
每只小鸡都有自己的一组属性,可帮助用户确定他们拥有哪种类型的小鸡NFT。在Atomichub上,当用户查找模板时,他们的NFT被铸造了,他们可以看到从同一模板中铸造的NFT的价格历史。
让S填写其余的脚本以创建鸡蛋模板:
async function createChickEggTemplates() {
const author = process.env.WAX_ACCOUNT;
if (!author) {
throw new Error("Missing WAX_ACCOUNT");
}
try {
await transact([
{
account: "atomicassets",
name: "createtempl",
authorization: [
{
actor: auth,
permission: "active",
},
],
data: {
authorized_creator: auth,
collection_name: collectionName('babychicknft'),
schema_name: name('chickegg'),
transferable: true,
burnable: true,
max_supply: 100,
immutable_data: template
},
},
])
} catch (error) {
console.error(error);
return false;
}
}
(async () => {
const result = await createChickEggTemplates();
console.log(result);
})();
脚本babychicks模板
和类似的小鸡,除了这次,我们将在同一交易中执行3条痕迹:
async function createBabyChickTemplates() {
const author = process.env.WAX_ACCOUNT;
if (!author) {
throw new Error("Missing WAX_ACCOUNT");
}
try {
await transact([
{
account: "atomicassets",
name: "createtempl",
authorization: [
{
actor: auth,
permission: "active",
},
],
data: {
authorized_creator: auth,
collection_name: collectionName('babychicknft'),
schema_name: name('babychick'),
transferable: true,
burnable: true,
max_supply: 10,
immutable_data: templateEpic
},
},
{
account: "atomicassets",
name: "createtempl",
authorization: [
{
actor: auth,
permission: "active",
},
],
data: {
authorized_creator: auth,
collection_name: collectionName('babychicknft'),
schema_name: name('babychick'),
transferable: true,
burnable: true,
max_supply: 20,
immutable_data: templateRare
},
},
{
account: "atomicassets",
name: "createtempl",
authorization: [
{
actor: auth,
permission: "active",
},
],
data: {
authorized_creator: auth,
collection_name: collectionName('babychicknft'),
schema_name: name('babychick'),
transferable: true,
burnable: true,
max_supply: 70,
immutable_data: templateCommon
},
},
])
} catch (error) {
console.error(error);
return false;
}
}
(async () => {
const result = await createBabyChickTemplates();
console.log(result);
})();
运行脚本
运行脚本:
WAX_ACCOUNT=waxcourse123 \
WAX_PRIVATE_KEY="<YOUR WAX ACCOUNT ACTIVE PRIVATE KEY>" \
WAX_ENDPOINT=<https://testnet.wax.pink.gg> \
node ./src/030-create-chick-egg-templates.js
WAX_ACCOUNT=waxcourse123 \
WAX_PRIVATE_KEY="<YOUR WAX ACCOUNT ACTIVE PRIVATE KEY>" \
WAX_ENDPOINT=<https://testnet.wax.pink.gg> \
node ./src/040-create-baby-chick-templates.js
示例响应:
运行这些脚本后,我们准备铸造一些NFT!
其他链接
- Github: https://github.com/CapsuleCat/wax-nft-tutorial/blob/main/babychicks/scripts/src/030-create-chick-egg-templates.js
- https://github.com/CapsuleCat/wax-nft-tutorial/blob/main/babychicks/scripts/src/040-create-baby-chick-templates.js
- 文档:https://github.com/pinknetworkx/atomicassets-contract/wiki/Actions#createtempl
- 进一步阅读:https://developer.wax.io/build/tutorials/howto_atomicassets/templates_js.html
- Shubham Dhage摄于Unsplash