当前位置: 首页 > Web前端 > HTML

NFT数字收藏盲盒挖矿链游系统开发智能合约源码

时间:2023-03-28 18:53:34 HTML

NFT盲盒是什么意思?正如玩家所说,你永远猜不到盒子里装的是什么。这就是魔法。它迎合了大众的心理,追求未知的刺激。现在盲盒也开始转移到线上,再次掀起热潮。以目前NFT项目与盲盒的结合为例。盲盒与挖矿相结合,保证了项目的稳定发展和社区的持续活力。该项目通过DeFi生态中流动性、产出矿池和NFT的独特性,将其与盲盒游戏模式相结合。盲盒游戏软件开发I34-合约I633-部署53I9最大的特点是写在智能合约上,保证公开透明。一旦盲盒满足相应的开奖条件,立即点击开奖,开奖结果已经生成,不可编辑。由于智能合约本身及其执行过程是可观察的,支持监督和可信,智能合约的所有参与方都确信合约以100%中立和公正的方式执行,没有欺诈、操纵或未经授权修改的风险.契约部分,先把这个契约部分的源码直接粘贴到remix中进行编译。源码如下:pragmasolidity^0.8.10;导入“@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol”;导入“@openzeppelin/contracts/access/Ownable.sol”;导入“@openzeppelin/contracts/utils/Strings.sol”;合约NftMeta是ERC721Enumerable,Ownable{usingStringsforuint256;//是否允许nft开始销售-switchboolpublic_isSaleActive=false;//初始化盲盒,等待一定时间随机打开盒子,变为trueboolpublic_revealed=false;//nft总量uint256publicconstantMAX_SUPPLY=10;//铸造Nft的价格uint256publicmintPrice=0.3ether;//铸造的钱包最多只能有一个nft数量uint256publicmaxBalance=1;//mint的nft数量uint256publicmaxMint=1;//盲盒开关打开后,需要显示解包图片的基地址stringbaseURI;//盲盒图片的meta和json地址后面会讲到stringpublicnotRevealedUri;//默认地址的扩展类型stringpublicbaseExtension=".json";映射(uint256=>字符串)私有_tokenURIs;//构造函数构造函数(字符串内存initBaseURI,stringmemoryinitNotRevealedUri)ERC721("NftMeta","NM")//实现ERC721的父类构造函数,是子类继承的实现方法{setBaseURI(initBaseURI);setNotRevealedURI(initNotRevealedUri);}//外部地址投nft函数调用functionmintNftMeta(uint256tokenQuantity)publicpayable{//检查总供应量+每次铸造数量<=nft总量require(totalSupply()+tokenQuantity<=MAX_SUPPLY,"销售将超过最大供应量");//检查销售是否启用require(_isSaleActive,"销售必须激活才能铸造NicMetas");//查看已铸造钱包地址的nft数量+本次铸造数量<=钱包拥有的最大nft数量require(balanceOf(msg.sender)+tokenQuantity<=maxBalance,"Salewouldexceedmaxbalance");//检查本次铸币数量*铸币价格<=本次消息附加的eth数量require(tokenQuantity*mintPrice<=msg.value,"发送的以太币不足");//验证本次铸币数量<=本次最大铸币数量require(tokenQuantity<=maxMint,"一次只能铸币1个");//满足以上验证条件,执行nft的铸币_mintNftMeta(tokenQuantity);}//Mintfunction_mintNftMeta(uint256tokenQuantity)internal{for(uint256i=0;i0){返回字符串(abi.encodePacked(base,_tokenURI));}//如果有baseURI但没有tokenURI,则将tokenID连接到baseURI。返回字符串(abi.encodePacked(基础,tokenId.toString(),baseExtension));}//内部函数_baseURI()内部视图virtualoverridereturns(stringmemory){returnbaseURI;}//只有所有者函数flipSaleActive()publiconlyOwner{_isSaleActive=!_isSaleActive;}函数flipReveal()publiconlyOwner{_revealed=!_revealed;}functionsetMintPrice(uint256_mintPrice)publiconlyOwner{mintPrice=_mintPrice;}functionsetNotRevealedURI(stringmemory_notRevealedURI)publiconlyOwner{notRevealedUri=_notRevealedURI;}functionsetBaseURI(stringmemory_newBaseURI)publiconlyOwner{baseURI=_newBaseURI;}functionsetBaseExtension(stringmemory_newBaseExtension)publiconlyOwner{baseExtension=_newBaseExtension;}函数setMaxBalance(uint256_maxBalance)publiconlyOwner{maxBalance=_maxBalance;}functionsetMaxMint(uint256_maxMint)publiconlyOwner{maxMint=_maxMint;}functionwithdraw(addressto)publiconlyOwner{uint256balance=address(this).balance;应付(至).转账(余额);}}