铭文NFT与代币进行联动,销毁NFT铭文可以铸造mint代币,支付usdt或者WETH可以mint铸造NFT铭文

  • A+
所属分类:币安BSC

chatGPT账号

一、需求说明

目前将NFT铭文与代币进行融合联动是比较常见的defi应用场景。首先代币可以上线去中心化dex,给代币锚定到usdt的实际价值。然后实现nft铭文和代币的联动环节。通过前端dapp页面由用户完成铭文的mint或者claim领取,同时需要支付要求数量的WETH用于nft铭文铸造上链的gas费用和推广邀请返佣。用户支付的WETH暂时保存到资金池,定期归集到项目方指定钱包地址,用于后期的链游,swap,质押系统的生态发展。

  1. 用户通过支付usdt或者WETH可以铸造一张NFT铭文作品进入拍卖市场
  2. 随着nft铭文作品的拍卖次数增加,nft铭文的价值呈现指数性的递增,每成功拍卖一次nft铭文的价值上涨3%
  3. 如果nft铭文流拍,则对当前nft铭文的价格进行折扣处理
  4. nft铭文可以通过销毁的方式按照当前拍卖后的实际价值兑换等价值的代币,然后将代币卖出到资金池进行变现。通过代币作为中间介质实现nft铭文的交易买卖,通过去中心化swap可以实现nft铭文的线上交易
  5. 用户通过盲盒游戏可以开出不同中奖概率的代币,达到指定数量的代币后可以合成NFT铭文,然后将NFT铭文进行线上拍卖以增加nft铭文的价值。当用户需要兑现nft铭文时再通过销毁nft铭文的方式回归代币,最后在代币资金池进行兑现。

铭文NFT与代币进行联动,销毁NFT铭文可以铸造mint代币,支付usdt或者WETH可以mint铸造NFT铭文

二、解决方案

整个系统合约层面的需求需要拆分为三个部分:代币,NFT铭文,盲合开奖

代币:主要包括代币本身的功能以及外围接口的调用和权限访问控制,代币设置相关的滑点分配包括(回流底池增加底池厚度,LP加权分红,NFT铭文持有分红,代币啊交易通缩)。同时为了保障代币价格随着时间的持续性递增,而不依赖外部资金的流入设置了资金池的单边燃烧机制,每小时燃烧资金池0.5%,24小时燃烧12%。

NFT铭文:nft铭文的铸造,销毁,拍卖,价值变更,通证兑换等功能。铭文NFT可以通过用户借助dapp前端页面支付usdt完成铸造mint,也可以直接往mint合约地址转账指定数量的weth来完成nft铭文的铸造领取

盲盒:主要是设置公平合理的抽奖算法。盲盒可以有指定概率开出BTC,ETH,NFT铭文碎片等奖励。

铭文NFT与代币进行联动,销毁NFT铭文可以铸造mint代币,支付usdt或者WETH可以mint铸造NFT铭文

三、核心代码实现

  1. 代币的mint权限访问控制代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "./Ownable.sol";

abstract contract AccessControl is Ownable{

    event SetOperator(address indexed add, bool value);

    function setOperator(address _operator, bool _v) external onlyOwner {
        _operators[_operator] = _v;
        emit SetOperator(_operator, _v);
    }

    function isOperator(address _address) external view returns(bool){
        return  _operators[_address];
    }

    modifier onlyOperator() {
        require(_operators[msg.sender]);
    }
}

2. 代币铸造mint功能部分核心代码

/** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");
        require(amount > 0, "ERC20: Mint amount must be greater than zero");
        require(account != _uniswapV2Pair, "ERC20: mint to uniswapV2Pair address");
        require(account != _uniswapV2UsdtPair, "ERC20: mint to uniswapV2UsdtPair address");
        require(_totalSupply < MAX_SUPPLY, "ERC20: totalSupply greater than or equal MAX_SUPPLY");
        if(_totalSupply.add(amount) > MAX_SUPPLY) {
            uint256 maxAmount =  MAX_SUPPLY.mul(_totalSupply);
            amount = maxAmount;
        }
        _totalSupply = _totalSupply.add(amount);
        emit Transfer(address(0), account, amount);
    }

3. 代币transfer交易时核心功能前置验证(批量杀区块,批量杀抢开盘软件机器人,限制添加和撤销流动性)代码

if (_swapPairList[sender] || _swapPairList[recipient]) {
            if (!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
                if (_swapPairList[sender]) {
                    isRemoveLP = _isRemoveLiquidity();
                } else {
                    isAddLP = _isAddLiquidity();
                }
                if (
                    (0 == startTradeBlock && startTradeTime == 0) ||
                    startTradeTime + 30 days > block.timestamp
                ) { 
                    require(0 < startAddLPBlock && isAddLP && addLiquidityEnabled, "ERC20:operater action is not AddLiquidity or addLiquidity is disabled");
                }
                if (block.number < startTradeBlock.add(killBlockNumber)) {
                    _funTransfer(sender, recipient, amount);
                    return;
                }
                if (
                    enableKillBatchBots &&
                    _swapPairList[sender] &&
                    block.number < startTradeBlock + killBatchBlockNumber
                ) {
                    if (block.number != user2blocks[tx.origin]) {
                        user2blocks[tx.origin] = block.number;
                    } else {
                        batchBots++;
                        _funTransfer(sender, recipient, amount);
                        return;
                    }
                }
            }
        }

4. 用户支付usdt获取铸造NFT铭文权限并铸造NFT铭文的函数接口代码

function nftMintForUsdt(uint256 usdtAmount) public lockMintAndSwap returns (bool) {
        require(usdtAmount >= _nftMintForUsdtCondition, "ERC20: subscribe usdt amount less than nftMintForUsdtCondition");
        uint256 usdtBalance = USDT.balanceOf(address(this));

        INFT nft = INFT(_nftAddress);
        uint256 tokenId = nft.autoMint(_nftReceiver);
        emit NftMintForUsdt(msg.sender, _nftReceiver, tokenId);

        return true;
    }

5. 销毁NFT铭文反向铸造mint代币接口函数实现

function nftBurnForMintToken(uint256 tokenId, address account) external onlyOperator returns (bool) {
        
        INFT nft = INFT(_nftAddress);
        uint256 nftAuctionStat = _tokenAuctionStat[tokenId];
        uint256 tokenCurrentPrice = ITokenTool(_tokenTool).getTokenPrice();
        if(nftAuctionStat != 2) {
            swapAmount = swapAmount.mul(_nftBurnAuctionPercent).div(_nftBurnAuctionBase);
        }

        IERC20 Token = IERC20(_Token);
        emit NftBurnForMintToken(tokenId, account, swapAmount);
        
        return true;
    }

至此,完成NFT铭文与代币进行联动,销毁NFT铭文可以铸造mint代币,支付usdt可以mint铸造NFT铭文所有操作流程。

pdf+视频比特币链ARC20+BRC20+ORC20+SRC20,EVM网络BSC20+ERC20+ARB20+SPL20+POL20铭文deploy部署Mint铸造打新教程下载:

比特币链ARC20+BRC20+ORC20+SRC20,EVM网络BSC20+ERC20+ARB20+SPL20+POL20铭文deploy部署Mint铸造(铭文铭刻deploy部署、铸造mint、转账transfer、upgrade、cancel、挂单unisat、Migration、marketplace、EVM Marketing挂单交易)教程下载:

铭文NFT与代币进行联动,销毁NFT铭文可以铸造mint代币,支付usdt或者WETH可以mint铸造NFT铭文

pdf+视频比特币链ARC20+BRC20+ORC20+SRC20,EVM网络BSC20+ERC20+ARB20+SPL20+POL20铭文deploy部署Mint铸造打新教程下载地址:

此处为隐藏的内容!
登录后才能查看!

添加VX或者telegram获取全程线上免费指导

铭文NFT与代币进行联动,销毁NFT铭文可以铸造mint代币,支付usdt或者WETH可以mint铸造NFT铭文

免责声明

发文时比特币价格:$42249

当前比特币价格:[crypto coins=”BTC” type=”text” show=”price”]

当前比特币涨幅:[crypto coins=”BTC” type=”text” show=”percent”]

免责声明:

本文不代表路远网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与路远网没有任何关系;

路远网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,路远网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,路远网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与路远网没有任何关系;

路远区块链研究院声明:路远区块链研究院内容由路远网发布,部分来源于互联网和行业分析师投稿收录,内容为路远区块链研究院加盟专职分析师独立观点,不代表路远网立场。

 

本文是全系列中第8 / 18篇:NFT发行

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
路远

发表评论

您必须登录才能发表评论!