From 5bc0b34db05480b2c28af11ff2ac4adcc232f1b4 Mon Sep 17 00:00:00 2001 From: Pham Tu Date: Fri, 2 Feb 2024 14:23:55 +0700 Subject: [PATCH] fix update_chain script --- update_chain.js | 53 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/update_chain.js b/update_chain.js index afc9497a..88cd4b1b 100644 --- a/update_chain.js +++ b/update_chain.js @@ -19,19 +19,56 @@ const chainNameMap = { 'dyson-protocol': 'dyson', }; +const filterProvider = (providers) => { + return providers.filter((p) => { + const url = p.address || p; + return url.startsWith('https://') && !url.includes('notional'); + }); +}; + const updateChain = async (chainFile) => { const first = chainFile.split('.')[0]; const chainName = chainNameMap[first] || first; - const url = `https://raw.githubusercontent.com/cosmos/chain-registry/master/${chainName}/chain.json`; + const filePath = path.join(chainsPath, chainFile); + const chainData = fs.existsSync(filePath) + ? JSON.parse(fs.readFileSync(filePath).toString()) + : {}; + try { - const data = await fetch(url).then((res) => res.json()); - const cosmwasmEnabled = data.codebase?.cosmwasm_enabled ?? false; - const logo = data.logo_URIs?.svg ?? data.logo_URIs?.png; - const filePath = path.join(chainsPath, chainFile); - const chainData = JSON.parse(fs.readFileSync(filePath).toString()); + let data = await fetch( + `https://raw.githubusercontent.com/cosmos/chain-registry/master/${chainName}/chain.json` + ).then((res) => res.json()); + // re-assign + chainData.cosmwasm_enabled = data.codebase?.cosmwasm_enabled ?? false; + const logo = data.logo_URIs?.svg || data.logo_URIs?.png; if (logo) chainData.logo = logo; - if (cosmwasmEnabled) chainData.cosmwasm_enabled = cosmwasmEnabled; - fs.writeFileSync(filePath, JSON.stringify(chainData, null, 2)); + + chainData.chain_name = data.chain_name; + chainData.sdk_version = data.codebase.cosmos_sdk_version.match( + /v((?:\d+\.)?(?:\d+\.)?(?:\*|\d+))/ + )[1]; + chainData.coin_type = data.slip44; + chainData.min_tx_fee = data.fees.fee_tokens[0].low_gas_price; + chainData.addr_prefix = data.bech32_prefix; + chainData.api = filterProvider(data.apis.rest); + chainData.grpc = filterProvider(data.apis.grpc); + // re-assign assets + data = await fetch( + `https://raw.githubusercontent.com/cosmos/chain-registry/master/${chainName}/assetlist.json` + ).then((res) => res.json()); + chainData.assets = data.assets.map((asset) => { + return { + base: asset.base, + symbol: asset.symbol, + exponent: asset.denom_units.find((u) => u.denom === asset.display) + .exponent, + coingecko_id: asset.coingecko_id ?? asset.display, + logo: asset.logo_URIs?.svg || asset.logo_URIs?.png, + }; + }); + const strData = JSON.stringify(chainData, null, 2); + // console.log(strData); + fs.writeFileSync(filePath, strData); } catch (ex) { console.log('Problem with', url, ex.toString()); }