fix update_chain script

This commit is contained in:
Pham Tu 2024-02-02 14:23:55 +07:00
parent a399a2d87b
commit 5bc0b34db0
No known key found for this signature in database
GPG Key ID: 7460FD99133ADA1C

View File

@ -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());
}