NFT 开发流程
Nft项目开发流程
一、调研公链,了解对应公链的合约发布、链码测试、链码正式部署、链码正式调用流程。
例子:bsc公链(币安智能链)
合约来源:github搜索。
在线编辑合约地址:https://remix.ethereum.org/
在线钱包:小狐狸。
额外了解:小狐狸钱包如何通过配置添加BSC公链,开发时将BSC的主网和测试网全部添加到小狐狸中。
二、准备相应的智能合约,如erc20、erc721、erc1155、erc998
例子:BEP721NFT,BEP1155NFT两份智能合约。
1.将下载的合约文件导入remix中;
2.主要关注721协议和1155协议必须要实现的接口及上链、查询、白名单、铸币人等接口方法,如果方法不全或不方便测试,可以修改或增加方法便于测试;
3.将合约方法检查完后,选择合适的版本进行编译,编译报错的解决错误问题,未报错说明编译成功;
4.在remix的部署页面上面选择“Injected Web3”,拉起小狐狸的授权页面进行授权,授权成功后,在remix部署页面选择要部署的主合约(如NFT721Token合约),选择正确的合约后,会出现构造函数输入框,输入参数name、symbol、address后点击deploy按钮进行部署,此时会拉起小狐狸钱包进行消费确认,点击确认按钮后等待部署上链。部署成功后,remix的部署页面下面会显示已部署合约的所有可调用的方法。
5.测试合约方法,主要测试授权、创作、铸币、查询这些接口,测试完成后,代表合约部分已准备完毕。
注意事项:测试时小狐狸要选择测试网络。
三、根据业务流程进行代码开发。
整个721nft流程说明:
1.通过在线remix部署合约,获得合约信息(合约id、发布人、时间等信息);
该步骤也可以由前端完成,前端sdk可以实现合约的编译和部署。
2.将合约信息手动录入到数据库中,后续业务开发基于这个合约来完成业务,合约id不能有误。
3.用户在页面上输入创建信息,点击创建方法后,先经过后端接口查询当前用户是否是铸币人,如果不是,后端接口会调用合约的addMinter方法将用户添加到铸币人列表中;
4.前端接收到后台返回值后,根据返回接口判断用户是否能铸币(链上方法),若有权限,则前端调用合约的safeMint(链上方法)方法进行铸币,该方法需要用户的小狐狸钱包支付bnb进行确认,支付成功后,前端得到交易hash,调用后端的铸币接口(后端铸币接口只是将铸币信息存入到数据库中)。完成铸币信息的记录。
5.用户在收藏列表上架nft,该过程实际是将用户持有的nft交易给平台托管地址,这个过程需要用户的小狐狸钱包支付交易矿工费确认。前端得到小狐狸的交易hash之后调用后端的上架接口(后端接口记录上架信息,市场信息,并完成资产转移)。
6.交易(步骤多,较为复杂)
A.验证交易价格;
B.记录买家支付BNB的交易记录;
C.平台托管地址给作者打版权费BNB(链上方法),并记录流水;
D.平台托管地址给卖家打BNB(链上方法),并记录流水;
E.平台给买家打nft(链上方法),并记录流水;
F.平台给买家打erc20(链上方法)的代币,并记录流水;
G.修改市场上nft的数量;
H.修改买家nft资产情况;
注意:上述步骤必须全部走完,如果交易失败,也要有一条记录,并在remark标识一下。
7.下架,下架只是修改了状态,变成下架审核中,管理后台审核下架内容,若通过,则从平台托管地址将nft交易给卖家手上(链上方法)。
Nft721合约的核心方法:
1.getTotalSupply(获取总铸币量);
2.tokenByIndex(获取对应下标的tokenId);
3.addMinter(添加铸币人);
4.removeMinter(移除铸币人);
5.ownerof(根据tokenId获取指定数量持有量);
6.SafeTransferFrom(交易);
721和1155合约模板:
https://github.com/wangqianfu/history-memory