민팅시 화이트리스트 nft를 회수하고자 합니다


1번을통해서 화리 ture false 할수 있게하고 회수할 화이트 리스트 nft contract를 작성할수 있게하였습니다.


const mintNFT = async () => {

    if (mintInProgress) {

        console.log("Request for minting with: " + account);

        console.log("keyring: " + keyring.address);

        if (process.env.REACT_APP_WHITELIST === "true") {

            for (var i = 0; i < quantityVal; i++) {

                await contract_WL.methods.transferFrom(account, treasury_account, await contract_WL.methods.tokenOfOwnerByIndex(account, 0).call()).send({

                    from: treasury_account,

                    gas: 300000,

                });

               

            }

        }

3번사진의 코드 전체부분이며 가지고있는 화이트리스트 nft갯수에 민팅갯수를 일치시켜 회수하는수량을 일치시키려고 했습니다.


4번 사진의 잘린부분 전체입니다.
const payNFT = async () => {

    if (allowMint) {

        if (!mintInProgress) {

            let totalSupply = await contract.methods.totalSupply().call();

            if (parseInt(totalSupply) + quantityVal <= process.env.REACT_APP_NUMBER_OF_NFT) {

                if (process.env.REACT_APP_WHITELIST === "true") {

                    console.log(process.env.REACT_APP_WHITELIST_ADDR,);

                    if ((await contract_WL.methods.balanceOf(account).call()) <= 0) {

                        return true;

                                                                                                 

                    }

                                           

                    if ((await contract_WL.methods.isApprovedForAll(account, process.env.REACT_APP_TREASURY_ACCOUNT).call()) !== true) {

                        await contract_WL.methods.setApprovalForAll(process.env.REACT_APP_TREASURY_ACCOUNT, true).send({

                            from: account,

                            gas: 300000,

                        });

                        return true;

                    }

                                                                 

                }

여기서 추가로 화이트리스트 nft또한 등급을 나누려고 생각중인데 예를들어 처음에 골드 실버 브론즈 이런식으로 지갑에있는지 확인하고 회수를 진행함과 동시에 nft를 발행하려 합니다. 그러려면 else if를 사용하면 될까요? 어떻게 해도 한가지 화이트리스트 nft에대한 회수작업 이외에는 할수가 없어서 질문 드립니다.

안녕하세요, 일단 질문의 의도를 파악하기 힘듭니다. 기존에 화이트리스트 대상자에게 NFT를 발행하고, 정식 NFT를 발행할때 기존 화이트리스트 대상자에게 발행한 NFT를 회수하는 부분에서 NFT의 등급에 따라 조건부로 다른 NFT를 발행하시겠다는 것인가요?

개인적인 의견으로는 솔리디티를 이용해 컨트랙트 내에서 화이트리스트 대상자 목록을 관리하신다면 복잡하게 이중으로 NFT를 발행해서 관리하실 이유는 없다고 생각합니다.

질문주신 내용과 관련해서, 제가 제대로 해석할 것이라면, 만약 조건부로 화리용 NFT의 등급을 확인해서 진행하시려면 해당 등급을 어떻게 구현하셨는지가 중요한 요소일것 같습니다. 컨트랙트 내에서 등급을 설정하셨으면, 해당 컨트랙트에서 정보를 받아와서 조건부로 진행하시면 될 문제고, 만약 메타데이터에서 설정하신 부분이라면 토큰의 URI를 받아오셔서 정보를 파싱해서 사용하셔야하겠네요.

하지만, 최종적으로 발행될 NFT의 등급은 어떤식으로 설정해서 발행하실 예정인지 등의 방법에 따라 구현에 차이가 발생할것으로 생각됩니다.

1 Like