diff --git a/scripts/generate-erc20.js b/scripts/generate-erc20.js index 0c741cf..4324393 100644 --- a/scripts/generate-erc20.js +++ b/scripts/generate-erc20.js @@ -15,6 +15,7 @@ const Mumbai = require("../src/erc20/mumbai.json"); const PancakeTop100 = require("../src/erc20/pancake-top100.json"); const { fetchDebankLogoURI } = require("./fetch-debank-logo-uri"); const { addChainId, generateTokenList } = require("./shared"); +const {invalidContractList} = require('./invalid-contract') const getMatamaskLogoURI = (url) => `https://raw.githubusercontent.com/MetaMask/contract-metadata/master/images/${url}`; @@ -97,8 +98,9 @@ const getUntreatedTokens = async () => { const start = async () => { const tokens = await getUntreatedTokens(); + const tmpTokensList = await invalidContractList(tokens) const MaskTokenList = generateTokenList( - tokens + tmpTokensList .map((x) => ({ ...x, address: EthereumAddress.checksumAddress(x.address), diff --git a/scripts/invalid-contract.js b/scripts/invalid-contract.js new file mode 100644 index 0000000..854ebfb --- /dev/null +++ b/scripts/invalid-contract.js @@ -0,0 +1,34 @@ + +const fetch = require("node-fetch"); + +const baseUrl = (chainId, address) =>`https://api.erc721validator.org/basic?test=5&chainId=${chainId}&contract=${address}` + +async function fetchInvalidERC721ContractResult (address) { + const response = await fetch(baseUrl(address)) + if (!response.ok) return {data: {result: false}} + const json = await response.json() + return json.data +} + +function delay(num) { + return new Promise(resolve => { + setTimeout(() => { + resolve(2) + }, num) + }) + } + +async function invalidContractList (tokensList) { + const tokens = [] + for (let i = 0; i < tokensList.length; i++) { + const token = tokensList[i] + + const result = await fetchInvalidERC721ContractResult(token.chainId, token.address) + if (!result.result) tokens.push(tokens) + await delay(1000) + } + + return tokens +} + +exports.invalidContractList = invalidContractList; \ No newline at end of file