# NFT合约级mint实践 **Published by:** [r4yyy.eth](https://paragraph.com/@r4yyy/) **Published on:** 2022-04-30 **URL:** https://paragraph.com/@r4yyy/nft-mint ## Content 简明教程 找到对应地址 可以先试用页面触发小狐狸的审批页面,之后找对应的地址。 浏览器查看合约交互 nft 项目一般都是 mint 的方法的调用。在交易详情的advance里面看到decode 之后的内容,一般是合约的方法名和参数 看合约代码 直接找到 调用的mint 函数的定义内容,检查其逻辑。 构造调用参数,进行合约交互 实践记录 以下面的合约为例子。 https://polygonscan.com/address/0x3a67c34c7dbd846108044fed38a3154b99a97cb1 看到有大量的Mint 调用,在advence查看调用内容,如下 Function: mint(uint256 amount, uint256 timeout) *** MethodID: 0x1b2ef1ca [0]: 0000000000000000000000000000000000000000000000000000000000000001 [1]: 000000000000000000000000000000000000000000000000000000000001c378 这里主要是看解码出来的 Functiin name,这里的参数不一定百分百准确,因为是使用 字典来进行解码的。 这里推荐使用 4byte来进行方法名解码。有比较强大的 DB https://www.4byte.directory/signatures/?bytes4_signature=0x1b2ef1ca 我们可以看到解码的内容是。 167720mint(uint256,uint256)0x1b2ef1ca 在其公布的sol code的 RaremintsERC721 里面我们可以找到mint的定义: function mint(uint256 num, uint256 metadata) public payable { uint256 supply = totalSupply(); require( !_paused, "Sale paused" ); require( supply + num <= _supply - _reserved, "Exceeds maximum supply" ); require( msg.value >= _price * num, "Ether sent is not correct" ); for(uint256 i; i < num; i++){ performMint(msg.sender, supply + i, metadata); } } 可以看到 : payable num metadata 这里第三个request就看出来我们的payable需要达到单价以上。在这里price 设置的是 0.5matic 所以我们这里就保持1:0.5 的数量价格比。另外一个参数是 metadata,这里 performMint用到了这个参数,其函数内容如下。 function performMint(address _to, uint256 _tokenId, uint256 _metadata) private { _safeMint(_to, _tokenId); emit MintEvent(_to, _tokenId, _metadata); } 我们可以看到,这里只是在 emit 事件的时候用到了这个 metadata,其他地方没有,所以这里意味着我们可以进行自定义。 综上 构建出参数 ,使用 write Contract 来进行交互。 找到 mint 函数,参数如下 Payable: 1.5 matic Num: 3 Metadata: 0000(任意) 点击 Write 写合约 ,完成交互过程。简单轻松 后 从简单的流程分析来切入智能合约的路子上 ## Publication Information - [r4yyy.eth](https://paragraph.com/@r4yyy/): Publication homepage - [All Posts](https://paragraph.com/@r4yyy/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@r4yyy): Subscribe to updates - [Twitter](https://twitter.com/_R4y_opz): Follow on Twitter