欢迎关注我的推特:@0xXiaoChen
欢迎加入黑魔法社区:NFT黑魔法社区
PXN的合约已经开源和上架OpenSea,合约类型是ERC721A。

荷兰拍 4000 首拍2E,每15分钟降低0.05E 开始时间固定
MintWL 6000 初始价格设置为0.35E,最后价格为荷兰拍最终价格的一半
团队预留
开发者预留
看两个主要MINT函数:
mintDutchAuction()
使用
callerIsUser修饰器,限制调用者为真实地址(非合约)
modifier callerIsUser() {
require(tx.origin == msg.sender, "The caller is another contract");
_;
}
需要进行signature签名
条件:
DA_ACTIVE == true
directMintAllowed为flase时对签名进行recover()校验,保证是前端mint
当前总量+Mint数量 < 荷兰拍规定的数量
当前时间戳 > 荷兰拍规定开始的时间戳 且 < MintWL规定开始的时间戳
此次Mint数量最大为2,地址最大Mint数为2
Mint价格由currentPrice()调用获取,并检查发送的ETH是否足够Mint
userToTokenBatchPriceData结构体会记录本次Mint的基本信息
条件成立,使用_safeMint()进行Mint
mintWl()
使用
callerIsUser修饰器,限制调用者为真实地址(非合约)
modifier callerIsUser() {
require(tx.origin == msg.sender, "The caller is another contract");
_;
}
需要进行signature签名
条件:
DA_ACTIVE == true
directMintAllowed为flase时对签名进行recover()校验,保证是前端mint
当前总量+Mint数量 < WLmint规定的数量
userToHasMintedPublicWL查询调用者是否重复mint
当前时间戳 > MintWL规定开始的时间戳,时间持续24小时
此次Mint数量为1
检查发送的ETH是否足够Mint
将userToHasMintedPublicWL更改为true
条件成立,使用_safeMint()进行Mint
总结:合约将_safeMint()函数放在最后,以及对signature签名进行校验,同时又规避了外部合约Mint。目前我看了是一个没有什么问题的合约,在devMint和teamMint也做了总量设置,不会出现项目方作恶的情况。
如果有什么问题,请欢迎私信推特指正!!
