next.js 如何使用Crossmint API创建NFT?

enyaitl3  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(128)

我现在正在开发集成Crossmint API的NFT市场。我在我的网站上添加了CrossmintPayButton,如下所示。

import { CrossmintPayButton } from '@crossmint/client-sdk-react-ui';
...
<CrossmintPayButton
    clientId="..."
      environment='staging'
      mintConfig={{
      type: 'erc-721',
      totalPrice: price * quantity,
      _price: price
      _quantity: quantity,
      _tokenURI: tokenURI
    }}
/>

我怎样写造币合约函数来造币NFT?请帮帮我.

uemypmqf

uemypmqf1#

所以这个问题的答案有点复杂,但是我会给予你一个高层次的答案,你会想从OpenZeppelin契约继承,最有可能帮助减少潜在的错误。
下面是一个将与Crossmint一起使用的mint函数示例:

function mint(address _to, uint256 _quantity) 
        external  
        payable
        isCorrectPayment(_quantity)
        isAvailable(_quantity) 
    {
        mintInternal(_to, _quantity);
    }

    function mintInternal(address _to, uint256 _quantity) internal {
        for (uint256 i = 0; i < _quantity; i++) {
            uint256 tokenId = nextId.current();
            nextId.increment();

            _safeMint(_to, tokenId);

            emit Mint(tokenId);
        }
    } 

    modifier isCorrectPayment(uint256 _quantity) {
        require(msg.value == (price * _quantity), "Incorrect Payment Sent");
        _;
    }

    modifier isAvailable(uint256 _quantity) {
        require(nextId.current() + _quantity <= MAX_SUPPLY, "Not enough tokens left for quantity");
        _;
    }

所有这些代码都取自一个示例入门NFT合同,您可以在这里查看:https://github.com/dmulvi/evm-721-starter
如果你实现了这个契约,你需要稍微修改一下按钮代码,看起来像这样:

<CrossmintPayButton
        clientId="_YOUR_CROSSMINT_CLIENT_ID_"
        environment="staging"
        mintConfig={{
            totalPrice: "0.001",
            _quantity: "1"
    }}
    />

相关问题