创建一个AtomicAssets模板
#教程 #node #区块链 #wax

介绍

现在我们有一个集合和多个图式的NFT,我们可以转移到模板上。一个模板使我们能够使用已经设置的模式的某些部分造成NFT。当我们要保证每个NFT都具有相同的属性时,这很有用。

例如,对于我们的小鸡蛋NFT,我们将希望它们都具有相同的名称,IMG和描述。考虑到这一点,我们可以创建一个模板,我们从中造成NFT。这不仅节省了确保我们使用相同属性造成每个NFT的麻烦,而且还可以在Atomichub上启用其他功能。 Atomichub UI将向用户向用户展示其NFT的模板,其薄荷的数量以及该模板中存在多少NFT,已被铸造出来,并燃烧了多少个NFT。现在,用户将确切地知道他们的NFT来自何处,NFT的罕见以及在Atomichub Marketplace的表现。

了解CreateTempl动作

让我们看createtempl方法:

createtempl snapshot

每个字段都是非常不言自明的,它是基于我们已经解决的集合和模式信息:

  • authorized_creator-在我们的示例中,作者将与我们上次示例的付款人相同:waxcourse123。这应该是您的帐户名称,或以前的收藏创建步骤中的授权帐户。
  • collection_name-与以前相同,babychicknft
  • schema_name-这是我们模式的名称。我们将拥有一个babychickchickegg
  • 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

示例响应:

Example response

Another example response

运行这些脚本后,我们准备铸造一些NFT!

其他链接