Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
February 27, 2022 08:15 am GMT

NFT

NFT | | (learnblockchain.cn)

api


16441283511.png


public async claimDrop() {    try {      this.claimLoading = true;      const feeInfo = await this.getFeeInfo(Operation.Claim);      if (!feeInfo || !feeInfo.platformFee) {        console.log('get fee error');      }      const mintSignContent = `${this.campaign?.name}${this.campaign?.description}`;      const signature1 = '';      const variables = {        input: {          signature: signature1,          campaignID: this.campaign?.id,          address: this.account,          mintCount: 1,          chain: this.isGasless ? this.campaign.chain : this.currentChainName,        },      };      const { data } = await this.$apollo.mutate({        mutation: PREPARE_PARTICIPATE,        variables,      });      if (data && data.prepareParticipate.allow && this.isMinter) {        const signature2 = data.prepareParticipate.signature;        const dummyId = data.prepareParticipate.mintFuncInfo.verifyIDs[0];        const powahs = data.prepareParticipate.mintFuncInfo.powahs[0];        const starNFT = data.prepareParticipate.mintFuncInfo.nftCoreAddress;        const spaceStationAddress = this.spaceStationAddress;        const cap = data.prepareParticipate.mintFuncInfo.cap;        if (this.isGasless) {          const isAsyncClaim = data.prepareParticipate.metaTxResp.reqQueueing;          console.log(data.prepareParticipate.metaTxResp);          // alert(data.prepareParticipate.metaTxResp.reqQueueing);          if (isAsyncClaim) {            await this.claimEvmGaslessCampaign(data.prepareParticipate);            return;          }

claimDropsignature

signature

etherscan.io
etherscan
Contract list - Ethereum Contract Library by Dedaub (contract-library.com)

16441289401.png
etherscan
MethodID: 0x2e4dbe8fcontract-library

function 0x2e4dbe8f(uint256 varg0, address varg1, uint256 varg2, uint256 varg3, uint256 varg4) public payable {  find similar    require(msg.data.length - 4 >= 160);    require(varg4 <= 0x100000000);    require(4 + varg4 + 32 <= 4 + (msg.data.length - 4));    require(!(((?).length > 0x100000000) | (36 + varg4 + (?).length > 4 + (msg.data.length - 4))));    require(!_paused, 'Contract paused');    require(varg2 > 15000, 'SpaceStation migrated');    require(!(0xff & map_5[varg2]), 'Already minted');    v0 = 0x18b2(keccak256(0xab24fc7f8acd203d6001ca43a3e2f9954f0e9c8939ff9c48ba3cb56b750c6486, varg0, varg1, varg2, varg3, msg.sender));    v1 = new bytes[]((?).length);    CALLDATACOPY(v1.data, 36 + varg4, (?).length);    MEM[v1.data + (?).length] = 0;    v2 = 0x1d02(v1, v0);    require(address(v2) == stor_0_1_20, 'Invalid signature');    map_5[varg2] = 0x1 | ~0xff & map_5[varg2];    require(1 > 0, 'Must mint more than 0');    if (map_4[varg0][2]) {        v3 = _SafeMul(1, map_4[varg0][2]);        require(msg.value >= v3, 'Insufficient Payment');        v4 = v5 = MEM[64] + 32;        MEM[64] = v5;        v6 = v7 = 0;        while (v6 >= 32) {            MEM[v4] = MEM[v4];            v6 = v6 + ~31;            v4 += 32;            v4 += 32;        }        MEM[v4] = MEM[v4] & ~(256 ** (32 - v6) - 1) | MEM[v4] & 256 ** (32 - v6) - 1;        v8, v9 = _fallback.call(MEM[(MEM[64]) len (v7 + v5 - MEM[64])], MEM[(MEM[64]) len 0]).value(msg.value).gas(msg.gas);        if (RETURNDATASIZE() != 0) {            v10 = new bytes[](RETURNDATASIZE());            RETURNDATACOPY(v10.data, 0, RETURNDATASIZE());        }        require(v8, 'Transfer platformFee failed');    }    if (map_4[varg0][1]) {        v11 = _SafeMul(1, map_4[varg0][1]);        require((address(map_4[varg0])).code.size);        v12, v13 = address(map_4[varg0]).transferFrom(msg.sender, _fallback, v11).gas(msg.gas);        require(v12); // checks call status, propagates error data on error        require(RETURNDATASIZE() >= 32);        require(v13, 'Transfer erc20Fee failed');    }    require(varg1.code.size);    v14, v15 = varg1.mint(msg.sender).gas(msg.gas);    require(v14); // checks call status, propagates error data on error    require(RETURNDATASIZE() >= 32);    emit 0x7b817396dff06715a9274aba8056efc47492ff13d976d2c7cfbcd1d3508580a4(varg0, varg2, v15, msg.sender);}

soliditysolidity

function claim(uint256 _cid, IStarNFT _starNFT, uint256 _dummyId, uint256 _powah, bytes calldata _signature) external payable onlyNoPaused {        require(!hasMinted[_dummyId], "Already minted");        require(_verify(_hash(_cid, _starNFT, _dummyId, _powah, msg.sender), _signature), "Invalid signature");        hasMinted[_dummyId] = true;        _payFees(_cid);        uint256 nftID = _starNFT.mint(msg.sender, _powah);        emit EventClaim(_cid, _dummyId, nftID, msg.sender);    }
function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));    }function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);    }     function _hash(uint256 _cid, IStarNFT _starNFT, uint256 _dummyId, uint256 _powah, address _account) public view returns (bytes32) {        return _hashTypedDataV4(keccak256(abi.encode(                keccak256("NFT(uint256 cid,address starNFT,uint256 dummyId,uint256 powah,address account)"),                _cid, _starNFT, _dummyId, _powah, _account            )));
function _verify(bytes32 hash, bytes calldata signature) public view returns (bool) {        return ECDSA.recover(hash, signature) == galaxy_signer; //0x1d02     }    //stor_0_1_20  galaxy_signer    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {        require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ECDSA: invalid signature 's' value");        require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value");        address signer = ecrecover(hash, v, r, s);        require(signer != address(0), "ECDSA: invalid signature");        return signer;    }

galaxy_signer_signatureclaim4ECDSA
ECDSA
ECDSA






Original Link: https://dev.to/auok007/chang-shi-bao-po-nftjiang-li-shi-jian-xian-zhi-er--1o4e

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To