# PXN测试网合约审计 **Published by:** [Kevin779](https://paragraph.com/@kevin779/) **Published on:** 2022-05-04 **URL:** https://paragraph.com/@kevin779/pxn ## Content 一、合约审计分析Reentrancy 如果mint 的函数没有写在function的最后一行,那么就可以调用合约交互进行反复攻击 例子 The dao attack Ownership 合约权限管理,检查权限时候放开,检查合约里ownerable函数Timestamp dependency 时间戳攻击,一般被矿工利用,矿工可以提前几个区块进行mint,以减少gasDos with ThrowContract interact 合约交互,检查是否该项目合约能否与合约进行交互 在项目合约中搜索origin Txn.origin == msg.sender 如果有 这样的函数就不能进行合约与合约交互二、业务逻辑分析Start from require()/ revert()白单 白单是否符合roadmap的设计,包括并不限于白单的总数,每个白单可以mint的个数。 白单mint完之后的记录,如果不记录,把nft transfer 之后,还能mint signature是否用message.sender 进行约束 例如 NBA的合约公售 公售函数是否符合roadmap的设计,包括并不限于公售的总数,每个钱包可以mint的个数。withdraw函数 mint完之后项目方提取ETH的方法,如果有漏洞ETH有可能被锁在合约中提取不出来,如Akutar的合约。三、PXN测试网合约审计合约地址: https://rinkeby.etherscan.deth.net/address/0x3201fe090e70bd464bc93469545be5278595d1f5#code合约类型:ERC721A合约结构: 白单0.35 ETH,共6000个 团队设置mint4000个 没有mint完的 进行荷兰拍 如果荷兰拍没有mint完 又有dev mint 垫底,这个项目一定能mint完。(人为制造繁荣?) 公售以荷兰拍的形式进行,每个最多钱包可以mint2能否可以进行合约交互:不可以 modifier callerIsUser() { require(tx.origin == msg.sender, "The caller is another contract"); _;}合约漏洞:能力有限没有看出来,大概率没有前两部分所涉及的漏洞 ## Publication Information - [Kevin779](https://paragraph.com/@kevin779/): Publication homepage - [All Posts](https://paragraph.com/@kevin779/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@kevin779): Subscribe to updates