diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000000..4e5a9d0127
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,25 @@
+on:
+ pull_request:
+ types: [opened, synchronize, reopened]
+ workflow_dispatch:
+
+name: Lint PR
+
+jobs:
+ lint-json:
+ name: Lint JSON files
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repository π₯
+ uses: actions/checkout@v4
+
+ - name: Setup Node.js π
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20.x'
+
+ - name: Install ESLint
+ run: npm install
+
+ - name: Lint JSON files
+ run: npx eslint ./
diff --git a/.github/workflows/update_chainjson.yml b/.github/workflows/update_chainjson.yml
deleted file mode 100644
index b37c81863b..0000000000
--- a/.github/workflows/update_chainjson.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-on:
- workflow_dispatch:
- schedule:
- - cron: "0 0 * * *"
-name: Update chain.json
-jobs:
- update_chainjson:
- name: Update chains' chain.json
- runs-on: ubuntu-latest
- steps:
- - name: checkout registry
- uses: actions/checkout@v3
-
- - name: Set up Python
- uses: actions/setup-python@v3
- with:
- python-version: 3.9
-
- - name: Install Python dependencies
- run: |
- python -m pip install --upgrade pip
- cd .github/workflows/utility
- python -m pip install requests
-
- - name: Check chain JSON Update
- shell: python
- run: |
- import sys
- sys.path.insert(1, '.github/workflows/utility')
- import update_chaindata
- update_chaindata.checkUpdate()
-
- - name: Add Commit Push
- uses: devops-infra/action-commit-push@master
- with:
- github_token: "${{ secrets.GITHUB_TOKEN }}"
- add_timestamp: false
- commit_prefix: "[AUTO]"
- commit_message: "Chain.json automatic update"
- force: false
- target_branch: update/chainjsonv2
-
- - name: Create A PR
- uses: devops-infra/action-pull-request@v0.4.2
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- source_branch: update/chainjsonv2
- target_branch: master
- title: Chain.json automatic update
- body: "**Automated pull request**"
- old_string: "**THIS IS AN AUTOMATED UPDATE OF CHAIN.JSON**"
- new_string: "** Automatic pull request**"
- get_diff: true
- ignore_users: "dependabot"
diff --git a/.github/workflows/utility/chain_registry.mjs b/.github/workflows/utility/chain_registry.mjs
index b446d45063..cafd107d51 100644
--- a/.github/workflows/utility/chain_registry.mjs
+++ b/.github/workflows/utility/chain_registry.mjs
@@ -13,19 +13,20 @@ export let chainNameToDirectoryMap = new Map();
export const chainRegistryRoot = "../../../chain-registry";
-const networkTypeToDirectoryNameMap = new Map();
+export const networkTypeToDirectoryNameMap = new Map();
networkTypeToDirectoryNameMap.set("mainnet", "");
networkTypeToDirectoryNameMap.set("testnet", "testnets");
const networkTypes = Array.from(networkTypeToDirectoryNameMap.keys());
-const domainToDirectoryNameMap = new Map();
+export const domainToDirectoryNameMap = new Map();
domainToDirectoryNameMap.set("cosmos", "");
domainToDirectoryNameMap.set("non-cosmos", "_non-cosmos");
const domains = Array.from(domainToDirectoryNameMap.keys());
-const fileToFileNameMap = new Map();
+export const fileToFileNameMap = new Map();
fileToFileNameMap.set("chain", "chain.json");
fileToFileNameMap.set("assetlist", "assetlist.json");
+fileToFileNameMap.set("versions", "versions.json");
const files = Array.from(domainToDirectoryNameMap.keys());
export const nonChainDirectories = [
@@ -46,7 +47,10 @@ export const nonChainDirectories = [
"versions.schema.json",
"README.md",
"LICENSE",
- "package.json"
+ "package.json",
+ "package-lock.json",
+ "eslint.config.mjs",
+ "primary_colors.py"
]
export const assetSchema = {
@@ -67,6 +71,13 @@ export const assetSchema = {
keywords: []
}
+export const schemas = new Map([
+ ["ibc", "ibc_data.schema.json"],
+ ["chain", "chain.schema.json"],
+ ["assetlist", "assetlist.schema.json"],
+ ["versions", "versions.schema.json"],
+]);
+
export const bech32ConfigSuffixMap = new Map([
["bech32PrefixAccAddr", ""],
["bech32PrefixAccPub", "pub"],
@@ -77,7 +88,7 @@ export const bech32ConfigSuffixMap = new Map([
]);
-const networkTypeToDirectoryMap = new Map();
+export const networkTypeToDirectoryMap = new Map();
networkTypeToDirectoryMap.set("mainnet", "");
networkTypeToDirectoryMap.set("testnet", "testnets");
for (const [networkType, directory] of networkTypeToDirectoryMap.entries()) {
@@ -86,7 +97,7 @@ for (const [networkType, directory] of networkTypeToDirectoryMap.entries()) {
const fileNames = {
chain: "chain.json",
- assetlist: "assetlist.json",
+ assetlist: "assetlist.json"
};
let paths = {};
diff --git a/.github/workflows/utility/chain_registry_local.mjs b/.github/workflows/utility/chain_registry_local.mjs
index 95a95c2574..307a199f1d 100644
--- a/.github/workflows/utility/chain_registry_local.mjs
+++ b/.github/workflows/utility/chain_registry_local.mjs
@@ -13,19 +13,20 @@ export let chainNameToDirectoryMap = new Map();
export const chainRegistryRoot = "../../..";
-const networkTypeToDirectoryNameMap = new Map();
+export const networkTypeToDirectoryNameMap = new Map();
networkTypeToDirectoryNameMap.set("mainnet", "");
networkTypeToDirectoryNameMap.set("testnet", "testnets");
const networkTypes = Array.from(networkTypeToDirectoryNameMap.keys());
-const domainToDirectoryNameMap = new Map();
+export const domainToDirectoryNameMap = new Map();
domainToDirectoryNameMap.set("cosmos", "");
domainToDirectoryNameMap.set("non-cosmos", "_non-cosmos");
const domains = Array.from(domainToDirectoryNameMap.keys());
-const fileToFileNameMap = new Map();
+export const fileToFileNameMap = new Map();
fileToFileNameMap.set("chain", "chain.json");
fileToFileNameMap.set("assetlist", "assetlist.json");
+fileToFileNameMap.set("versions", "versions.json");
const files = Array.from(domainToDirectoryNameMap.keys());
export const nonChainDirectories = [
@@ -46,7 +47,10 @@ export const nonChainDirectories = [
"versions.schema.json",
"README.md",
"LICENSE",
- "package.json"
+ "package.json",
+ "package-lock.json",
+ "eslint.config.mjs",
+ "primary_colors.py"
]
export const assetSchema = {
@@ -67,6 +71,13 @@ export const assetSchema = {
keywords: []
}
+export const schemas = new Map([
+ ["ibc", "ibc_data.schema.json"],
+ ["chain", "chain.schema.json"],
+ ["assetlist", "assetlist.schema.json"],
+ ["versions", "versions.schema.json"],
+]);
+
export const bech32ConfigSuffixMap = new Map([
["bech32PrefixAccAddr", ""],
["bech32PrefixAccPub", "pub"],
@@ -77,7 +88,7 @@ export const bech32ConfigSuffixMap = new Map([
]);
-const networkTypeToDirectoryMap = new Map();
+export const networkTypeToDirectoryMap = new Map();
networkTypeToDirectoryMap.set("mainnet", "");
networkTypeToDirectoryMap.set("testnet", "testnets");
for (const [networkType, directory] of networkTypeToDirectoryMap.entries()) {
diff --git a/.github/workflows/utility/update_chaindata.py b/.github/workflows/utility/update_chaindata.py
deleted file mode 100644
index 108eb4284e..0000000000
--- a/.github/workflows/utility/update_chaindata.py
+++ /dev/null
@@ -1,32 +0,0 @@
-import requests, json
-import os
-from os import getcwd
-
-rootdir = getcwd()
-
-def checkUpdate():
- for chainfolder in os.listdir(rootdir):
- chainjson = os.path.join(chainfolder, "chain.json")
- # The following line is commented out: it will be used when everyone adopts the chainjson on their chain repo.
- # if os.path.isfile(chainjson):
- if chainjson == "osmosis/chain.json":
- current = json.load(open(os.path.join(rootdir, chainjson)))
-
- #Safeguard for updatelink being 0
- if current['update_link'] == None:
- continue
-
- URL = current["update_link"]
- chain_data_holder = requests.get("" + URL + "")
- response = json.loads(chain_data_holder.text)
- chaindata = response["codebase"]
-
- #If what's on the chain repo doesn't match what's here
- if chaindata != current["codebase"]:
- #Add conditional checkers for if various fields that are non-modifiable have been modified.
- current["codebase"] = chaindata
- with open(os.path.join(rootdir, chainjson), 'w', encoding='utf-8') as f:
- json.dump(current, f, ensure_ascii=False, indent=2)
- return True
- else:
- print("No update needed for " + chainjson)
diff --git a/.github/workflows/utility/validate_data.mjs b/.github/workflows/utility/validate_data.mjs
index 137d0a9c93..a6594c1e77 100644
--- a/.github/workflows/utility/validate_data.mjs
+++ b/.github/workflows/utility/validate_data.mjs
@@ -133,6 +133,28 @@ function checkTraceCounterpartyIsValid(chain_name, asset) {
}
+
+async function checkIbcDenomAccuracy(chain_name, asset) {
+
+ if (!asset.base) { return; }
+ if (asset.type_asset === "ics20") {
+
+ if (!asset.traces) {
+ throw new Error(`Trace of ${chain_name}, ${asset.base} not found for ics20 asset (where it is required).`);
+ }
+ const path = asset.traces[asset.traces.length - 1]?.chain?.path;
+ if (!path) {
+ throw new Error(`Path not defined for ${chain_name}, ${asset.base}.`);
+ }
+ const ibcHash = await chain_reg.calculateIbcHash(path);
+ if (ibcHash !== asset.base) {
+ throw new Error(`IBC Denom (SHA256 Hash) of ${path} does not match ${chain_name}, ${asset.base}.`);
+ }
+ }
+
+}
+
+
function checkImageSyncIsValid(chain_name, asset) {
if (!asset.base) { return; }
@@ -150,6 +172,269 @@ function checkImageSyncIsValid(chain_name, asset) {
}
+function checkVersionsFileAndVersionsArray(chain_name) {
+
+ const versionsFile = chain_reg.getFileProperty(chain_name, "versions", "versions");
+ const versionsArray = chain_reg.getFileProperty(chain_name, "chain", "codebase")?.versions;
+
+ if (versionsFile && versionsArray) {
+ throw new Error(`Invalid versions array detected in chain.json for ${chain_name}. versions.json already used.`);
+ }
+
+}
+
+
+function checkReplacementVersionProperties(chain_name) {
+
+ const codebase = chain_reg.getFileProperty(chain_name, "chain", "codebase");
+ const versions = codebase?.versions;
+
+ if (codebase) {
+ versions?.forEach((version) => {
+ checkVersionForReplacementProperties(chain_name, version);
+ });
+ checkVersionForReplacementProperties(chain_name, codebase);
+ }
+
+}
+
+function checkVersionForReplacementProperties(chain_name, versionObject) {
+
+ const replacementPropertiesMap = new Map([
+ ["cosmos_sdk_version", "sdk"],
+ ["ibc_go_version", "ibc"],
+ ["go_version", "language"],
+ ["cosmwasm_version", "cosmwasm"]
+ ]);
+
+ const splitRegexPattern = /^(?:([^ \@]*)[ \@])?(.*)$/;
+ const repoRegexPattern = /(?:.*\/)?([^\/]+\/[^\/]+)$/;
+ const tagRegexPattern = /^(?=.*-).+$/;
+ const versionRegexPattern = /^([^ -]+)/;
+
+ const name = versionObject.name;
+
+ for (const [deprecated, replacement] of replacementPropertiesMap) {
+
+ const deprecatedValue = versionObject[deprecated];
+ const replacementValue = versionObject[replacement];
+
+
+ if (deprecatedValue) {
+
+ //replacement must exist
+ if (!replacementValue) {
+ throw new Error(`Missing replacement property (${replacement}) for deprecated proerty (${deprecated}) for: ${chain_name}::${name}`);
+ }
+
+ //split the value into repo, version, and tag, then check that they match
+ let repo = deprecatedValue;
+ repo = repo.match(splitRegexPattern)?.[1];
+ repo = repo?.match(repoRegexPattern)?.[1];
+ if (repo) {
+ repo = "https://github.com/" + repo;
+ if (repo != replacementValue.repo) {
+ throw new Error(`Replacement property (${replacement}.repo) value (${replacementValue.repo}) does not match computed value (${repo}) in deprecated property (${deprecatedValue}) for: ${chain_name}::${name}`);
+ }
+ }
+
+ let tag = deprecatedValue;
+ tag = tag.match(splitRegexPattern)?.[2];
+ let version = tag;
+ tag = tag?.match(tagRegexPattern)?.[1];
+ if (tag) {
+ //console.log(tag);
+ if (repo != replacementValue.tag) {
+ throw new Error(`Replacement property (${replacement}.tag) value (${replacementValue.tag}) does not match computed value (${tag}) in deprecated property (${deprecatedValue}) for: ${chain_name}::${name}`);
+ }
+ }
+
+ version = version?.match(versionRegexPattern)?.[1];
+ if (version) {
+ //console.log(version);
+ if (version != replacementValue.version) {
+ throw new Error(`Replacement property (${replacement}.version) value (${replacementValue.version}) does not match computed value (${version}) in deprecated property (${deprecatedValue}) for: ${chain_name}::${name}`);
+ }
+ }
+
+ if (deprecated === "ibc_go_version") {
+ const expectedValue = "go";
+ if (!replacementValue.type || (replacementValue.type !== expectedValue)) {
+ throw new Error(`Replacement property (${replacement}.type) value (${replacementValue.type}) does not match expected value (${expectedValue}) in deprecated property (${deprecatedValue}) for: ${chain_name}::${name}`);
+ }
+ }
+
+ if (deprecated === "go_version") {
+ const expectedValue = "go";
+ if (!replacementValue.type || (replacementValue.type !== expectedValue)) {
+ throw new Error(`Replacement property (${replacement}.type) value (${replacementValue.type}) does not match expected value (${expectedValue}) in deprecated property (${deprecatedValue}) for: ${chain_name}::${name}`);
+ }
+ }
+
+ if (deprecated === "cosmos_sdk_version") {
+ const expectedValue = "cosmos";
+ if (!replacementValue.type || (replacementValue.type !== expectedValue)) {
+ throw new Error(`Replacement property (${replacement}.type) value (${replacementValue.type}) does not match expected value (${expectedValue}) in deprecated property (${deprecatedValue}) for: ${chain_name}::${name}`);
+ }
+ }
+
+ }
+
+ }
+
+ if (versionObject.cosmwasm_enabled) {
+ if (versionObject.cosmwasm_enabled != versionObject.cosmwasm.enabled) {
+ throw new Error(`Replacement property (versionObject.cosmwasm.enabled) value (${versionObject.cosmwasm.enabled}) does not match deprecated property (versionObject.cosmwasm_enabled) value (${versionObject.cosmwasm_enabled}) for: ${chain_name}::${name}`);
+ }
+ }
+
+ if (versionObject.cosmwasm_path) {
+ if (versionObject.cosmwasm_path != versionObject.cosmwasm.path) {
+ throw new Error(`Replacement property (versionObject.cosmwasm.path) value (${versionObject.cosmwasm.path}) does not match deprecated proerty (versionObject.cosmwasm_path) value (${versionObject.cosmwasm_path}) for: ${chain_name}::${name}`);
+ }
+ }
+
+ if (versionObject.ics_enabled) {
+ if (!(arraysEqual(versionObject.ics_enabled, versionObject.ibc.ics_enabled))) {
+ throw new Error(`Replacement property (versionObject.ibc.ics_enabled) value (${versionObject.ibc.ics_enabled}) does not match deprecated property (versionObject.ics_enabled) value (${versionObject.ics_enabled}) for: ${chain_name}::${name}`);
+ }
+ }
+
+}
+
+function checkFileSchemaReference(fileLocation, fileName, extraParentDirectories, schema) {
+
+ let calculatedSchemaLocation = path.join(
+ extraParentDirectories,
+ chain_reg.schemas.get(schema)
+ );
+
+ const file = path.join(fileLocation, fileName);
+ const jsonFileContents = chain_reg.readJsonFile(file);
+
+ if (!jsonFileContents) {
+ console.log("Err: No JSON Contents");
+ console.log(`${jsonFileContents}`);
+ console.log(`${fileLocation}`);
+ console.log(`${fileName}`);
+ }
+
+ if (jsonFileContents?.$schema !== calculatedSchemaLocation) {
+ throw new Error(`Schema Value: ${jsonFileContents?.$schema} does not match calculated Schema Location: ${calculatedSchemaLocation} for file: ${file}.`);
+ }
+
+}
+
+function checkFileSchemaReferences() {
+
+ const root = chain_reg.chainRegistryRoot;
+ //Directories (from Root--will join later)
+ const ibcDirectory = "_IBC";
+ const networkTypes = [...chain_reg.networkTypeToDirectoryNameMap.values()];
+ const chainTypes = [...chain_reg.domainToDirectoryNameMap.values()];
+ const chainFiles = [...chain_reg.fileToFileNameMap.keys()];
+ let extraParentDirectories = "";
+
+ //mainnets vs testnets/devnets
+ networkTypes.forEach((networkType) => {
+
+ if (networkType !== "") {
+ extraParentDirectories += "../";
+ }
+
+ //remember to look at IBC
+ let fileLocation = path.join(root, networkType, ibcDirectory);
+ let files = chain_reg.getDirectoryContents(fileLocation);
+ extraParentDirectories += "../";
+ files.forEach((file) => {
+ checkFileSchemaReference(fileLocation, file, extraParentDirectories, "ibc");
+ });
+ extraParentDirectories = extraParentDirectories.slice(0,-3);
+
+ //cosmos vs non_cosmos
+ chainTypes.forEach((chainType) => {
+ if (chainType !== "") {
+ extraParentDirectories += "../";
+ }
+
+ //look at each chain
+ let chains = chain_reg.getDirectoryContents(path.join(root, networkType, chainType));
+ chains.forEach((chain) => {
+ if (chain_reg.nonChainDirectories.includes(chain)) { return; }
+ extraParentDirectories += "../";
+ let fileLocation = path.join(root, networkType, chainType, chain);
+ let files = chain_reg.getDirectoryContents(fileLocation);
+
+ //chain.json vs assetlist.json vs ...
+ chainFiles.forEach((chainFile) => {
+ let fileName = chain_reg.fileToFileNameMap.get(chainFile);
+ if (files.includes(fileName)) {
+ checkFileSchemaReference(fileLocation, fileName, extraParentDirectories, chainFile);
+ }
+ });
+ extraParentDirectories = extraParentDirectories.slice(0, -3);
+ });
+ if (chainType !== "") {
+ extraParentDirectories = extraParentDirectories.slice(0, -3);
+ }
+ });
+ if (networkType !== "") {
+ extraParentDirectories = extraParentDirectories.slice(0, -3);
+ }
+ });
+
+}
+
+function arraysEqual(arr1, arr2) {
+ if (arr1.length !== arr2.length) return false;
+
+ for (let i = 0; i < arr1.length; i++) {
+ if (arr1[i] !== arr2[i]) return false;
+ }
+
+ return true;
+}
+
+function checkTypeAsset(chain_name, asset) {
+
+ let type_asset = "ics20";
+ if (asset.base.startsWith("ibc/") && asset.type_asset !== type_asset) {
+ throw new Error(`Type_asset not specified as ${type_asset}: ${chain_name}, ${asset.base}, ${asset.symbol}.`);
+ }
+
+ if (
+ asset.base.startsWith("cw20")
+ ) {
+ if (chain_name.startsWith("secret")) {
+ type_asset = "snip20";
+ if (asset.type_asset !== type_asset && asset.type_asset !== "snip25") {
+ throw new Error(`Type_asset not specified as ${type_asset}: ${chain_name}, ${asset.base}, ${asset.symbol}.`);
+ }
+ } else {
+ type_asset = "cw20";
+ if (asset.type_asset !== "cw20") {
+ throw new Error(`Type_asset not specified as ${type_asset}: ${chain_name}, ${asset.base}, ${asset.symbol}.`);
+ }
+ }
+ }
+
+ type_asset = "erc20";
+ if (
+ asset.base.startsWith("0x") &&
+ !asset.base.includes("::") &&
+ !asset.base.includes("00000") &&
+ asset.type_asset !== type_asset
+ ) {
+ throw new Error(`Type_asset not specified as ${type_asset}: ${chain_name}, ${asset.base}, ${asset.symbol}.`);
+ }
+
+ if (!asset.type_asset) {
+ throw new Error(`Type_asset not specified: ${chain_name}, ${asset.base}, ${asset.symbol}.`);
+ }
+
+}
+
+
export function validate_chain_files() {
//get Chain Names
@@ -169,11 +454,20 @@ export function validate_chain_files() {
//check if all staking tokens are registered
checkStakingTokensAreRegistered(chain_name);
+ //check if all old version properties' data are added into the new replacement version properties
+ checkReplacementVersionProperties(chain_name);
+
+ //check that versions[] cannot be defined in chain.json when versions.json exists
+ checkVersionsFileAndVersionsArray(chain_name);
+
//get chain's assets
const chainAssets = chain_reg.getFileProperty(chain_name, "assetlist", "assets");
//iterate each asset
chainAssets?.forEach((asset) => {
+
+ //require type_asset
+ checkTypeAsset(chain_name, asset);
//check denom units
checkDenomUnits(asset);
@@ -181,6 +475,9 @@ export function validate_chain_files() {
//check counterparty pointers of traces
checkTraceCounterpartyIsValid(chain_name, asset);
+ //check ibc denom accuracy
+ checkIbcDenomAccuracy(chain_name, asset);
+
//check image_sync pointers of images
checkImageSyncIsValid(chain_name, asset);
@@ -191,8 +488,79 @@ export function validate_chain_files() {
}
+function validate_ibc_files() {
+
+ //IBC directory name
+ const ibcDirectoryName = "_IBC";
+
+ //create maps of chains and channels
+ const chainNameToIbcChannelsMap = new Map();
+
+ Array.from(chain_reg.networkTypeToDirectoryMap.keys()).forEach((networkType) => {
+
+ //Get all IBC Files (Mainnet and Testnet)
+ const networkTypeDirectory = chain_reg.networkTypeToDirectoryMap.get(networkType);
+ const directory = path.join(
+ networkTypeDirectory,
+ ibcDirectoryName
+ );
+ const ibcFiles = chain_reg.getDirectoryContents(directory);
+
+ ibcFiles.forEach((ibcFile) => {
+
+ //check for ibc channel duplicates
+ const ibcFileContents = chain_reg.readJsonFile(path.join(directory, ibcFile));
+ const chain1 = ibcFileContents.chain_1.chain_name;
+ const chain2 = ibcFileContents.chain_2.chain_name;
+ const channels = ibcFileContents.channels;
+ channels.forEach((channel) => {
+
+ //check for duplicate channel-ids
+ checkDuplicateChannels(channel.chain_1.channel_id, chain1, chain2, chainNameToIbcChannelsMap);
+ checkDuplicateChannels(channel.chain_2.channel_id, chain2, chain1, chainNameToIbcChannelsMap);
+
+ });
+
+ });
+
+ });
+
+}
+
+function checkDuplicateChannels(channel_id, chain, counterparty, chainNameToIbcChannelsMap) {
+
+ if (channel_id === "*") { return; }
+ let duplicateChannel = undefined;
+ let chainChannels = chainNameToIbcChannelsMap.get(chain);
+ if (!chainChannels) {
+ chainChannels = [];
+ } else {
+ duplicateChannel = chainChannels.find(obj => obj.channel_id === channel_id);
+ }
+ if (duplicateChannel) {
+ //report duplicate
+ throw new Error(`For chain: ${chain}, channel_id: ${channel_id} is registered for both: ${duplicateChannel.chain_name} and ${counterparty}.`);
+ } else {
+ const obj = {
+ channel_id: channel_id,
+ chain_name: counterparty
+ };
+ chainChannels.push(obj);
+ chainNameToIbcChannelsMap.set(chain, chainChannels);
+ }
+
+}
+
function main() {
+
+ //check all chains
validate_chain_files();
+
+ //check all IBC channels
+ validate_ibc_files();
+
+ //check file schema references
+ checkFileSchemaReferences();
}
main();
\ No newline at end of file
diff --git a/8ball/assetlist.json b/8ball/assetlist.json
index 6df906b162..05337fedea 100644
--- a/8ball/assetlist.json
+++ b/8ball/assetlist.json
@@ -30,7 +30,8 @@
"primary_color_hex": "#dbdbdb"
}
}
- ]
+ ],
+ "type_asset": "sdk.coin"
}
]
}
\ No newline at end of file
diff --git a/8ball/chain.json b/8ball/chain.json
index 8c07160eda..6cc251122e 100644
--- a/8ball/chain.json
+++ b/8ball/chain.json
@@ -1,10 +1,11 @@
{
"$schema": "../chain.schema.json",
"chain_name": "8ball",
- "status": "live",
+ "status": "killed",
"website": "https://8ball.info/",
"network_type": "mainnet",
"pretty_name": "8ball",
+ "chain_type": "cosmos",
"chain_id": "eightball-1",
"bech32_prefix": "8ball",
"daemon_name": "8ball",
@@ -56,9 +57,23 @@
"cosmwasm_enabled": true,
"binaries": {
"linux/amd64": "https://8ball.info/8ball.tar.gz"
+ },
+ "sdk": {
+ "type": "cosmos",
+ "version": "0.46.7"
+ },
+ "cosmwasm": {
+ "enabled": true
}
}
- ]
+ ],
+ "sdk": {
+ "type": "cosmos",
+ "version": "0.46.7"
+ },
+ "cosmwasm": {
+ "enabled": true
+ }
},
"logo_URIs": {
"png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/8ball/images/8ball.png",
diff --git a/README.md b/README.md
index c832de87cd..a18fb5da83 100644
--- a/README.md
+++ b/README.md
@@ -51,6 +51,7 @@ A sample `chain.json` includes the following information.
"status": "live",
"website": "https://osmosis.zone/",
"network_type": "mainnet",
+ "chain_type": "cosmos"
"pretty_name": "Osmosis",
"chain_id": "osmosis-1",
"bech32_prefix": "osmo",
@@ -83,26 +84,45 @@ A sample `chain.json` includes the following information.
},
"codebase": {
"git_repo": "https://github.com/osmosis-labs/osmosis",
- "recommended_version": "v12.2.0",
+ "genesis": {
+ "name": "v3",
+ "genesis_url": "https://github.com/osmosis-labs/networks/raw/main/osmosis-1/genesis.json"
+ },
+ "recommended_version": "v25.0.0",
"compatible_versions": [
- "v12.1.0"
- "v12.2.0"
+ "v25.0.0"
],
- "cosmos_sdk_version": "0.46",
+ "binaries": {
+ "linux/amd64": "https://github.com/osmosis-labs/osmosis/releases/download/v25.0.0/osmosisd-25.0.0-linux-amd64",
+ "linux/arm64": "https://github.com/osmosis-labs/osmosis/releases/download/v25.0.0/osmosisd-25.0.0-linux-arm64"
+ },
"consensus": {
- "type": "tendermint",
- "version": "0.34"
+ "type": "cometbft",
+ "version": "osmosis-labs/cometbft v0.37.4-v25-osmo-2"
},
- "cosmwasm_version": "0.28",
- "cosmwasm_enabled": true,
- "ibc_go_version": "3.0.0",
- "ics_enabled": [
- "ics20-1"
- ],
- "genesis": {
- "name": "v3",
- "genesis_url": "https://github.com/osmosis-labs/networks/raw/main/osmosis-1/genesis.json"
+ "language": {
+ "type": "go",
+ "version": "1.21.4"
+ },
+ "sdk": {
+ "type": "cosmos",
+ "repo": "https://github.com/osmosis-labs/cosmos-sdk",
+ "version": "v0.47.5",
+ "tag": "v0.47.5-v25-osmo-1"
+ },
+ "ibc": {
+ "type": "go",
+ "version": "v7.4.0",
+ "ics_enabled": [
+ "ics20-1"
+ ]
},
+ "cosmwasm": {
+ "version": "v0.45.0",
+ "repo": "https://github.com/osmosis-labs/wasmd",
+ "tag": "v0.45.0-osmo",
+ "enabled": true
+ }
"versions": [
{
"name": "v3",
@@ -112,34 +132,56 @@ A sample `chain.json` includes the following information.
},
...//version history can alternatively go into 'versions.json'
{
- "name": "v12",
- "tag": "v12.1.0",
- "height": 6246000,
- "proposal": 335,
- "recommended_version": "v12.2.0",
+ "name": "v25",
+ "tag": "v25.0.0",
+ "proposal": 782,
+ "height": 15753500,
+ "recommended_version": "v25.0.0",
"compatible_versions": [
- "v12.1.0"
- "v12.2.0"
+ "v25.0.0"
],
- "cosmos_sdk_version": "0.46",
+ "binaries": {
+ "linux/amd64": "https://github.com/osmosis-labs/osmosis/releases/download/v25.0.0/osmosisd-25.0.0-linux-amd64",
+ "linux/arm64": "https://github.com/osmosis-labs/osmosis/releases/download/v25.0.0/osmosisd-25.0.0-linux-arm64"
+ },
+ "previous_version_name": "v24",
+ "next_version_name": "v26",
"consensus": {
- "type": "tendermint",
- "version": "0.34"
+ "type": "cometbft",
+ "version": "osmosis-labs/cometbft v0.37.4-v25-osmo-2"
},
- "cosmwasm_version": "0.28",
- "cosmwasm_enabled": true,
- "ibc_go_version": "3.0.0",
- "ics_enabled": [
- "ics20-1"
- ],
- "next_version_name": "v13"
+ "cosmwasm": {
+ "version": "v0.45.0",
+ "repo": "https://github.com/osmosis-labs/wasmd",
+ "tag": "v0.45.0-osmo",
+ "enabled": true
+ },
+ "sdk": {
+ "type": "cosmos",
+ "version": "v0.47.5",
+ "repo": "https://github.com/osmosis-labs/cosmos-sdk",
+ "tag": "v0.47.5-v25-osmo-1"
+ },
+ "ibc": {
+ "type": "go",
+ "version": "v7.4.0",
+ "ics_enabled": [
+ "ics20-1"
+ ]
+ },
+ "language": {
+ "type": "go",
+ "version": "1.21.4"
+ }
}
]
},
"images": [
{
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmosis-chain-logo.svg",
"png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmosis-chain-logo.png",
"theme": {
+ "circle": true,
"primary_color_hex": "#231D4B"
}
}
@@ -151,10 +193,9 @@ A sample `chain.json` includes the following information.
"address": "ec2-44-234-84-104.us-west-2.compute.amazonaws.com:26656",
"provider": "notional"
},
+ ...
{
- "id": "f515a8599b40f0e84dfad935ba414674ab11a668",
- "address": "osmosis.blockpane.com:26656",
- "provider": "blockpane"
+ //another peer
}
],
"persistent_peers": [
@@ -163,22 +204,9 @@ A sample `chain.json` includes the following information.
"address": "52.79.199.137:26656",
"provider": "cosmostation"
},
- {
- "id": "8d9967d5f865c68f6fe2630c0f725b0363554e77",
- "address": "134.255.252.173:26656",
- "provider": "divecrypto"
- },
...
- ...
- {
- "id": "64d36f3a186a113c02db0cf7c588c7c85d946b5b",
- "address": "209.97.132.170:26656",
- "provider": "solidstake"
- },
{
- "id": "4d9ac3510d9f5cfc975a28eb2a7b8da866f7bc47",
- "address": "37.187.38.191:26656",
- "provider": "stakelab"
+ //another peer
}
]
},
@@ -188,15 +216,19 @@ A sample `chain.json` includes the following information.
"address": "https://osmosis.validator.network/",
"provider": "validatornetwork"
},
+ ...
{
- "address": "https://rpc-osmosis.blockapsis.com",
- "provider": "chainapsis"
+ //another rpc
}
],
"rest": [
{
"address": "https://lcd-osmosis.blockapsis.com",
"provider": "chainapsis"
+ },
+ ...
+ {
+ //another rest
}
]
},
@@ -206,6 +238,10 @@ A sample `chain.json` includes the following information.
"url": "https://www.mintscan.io/osmosis",
"tx_page": "https://www.mintscan.io/osmosis/txs/${txHash}",
"account_page": "https://www.mintscan.io/osmosis/account/${accountAddress}"
+ },
+ ...
+ {
+ //another explorer
}
],
"keywords": [
@@ -243,6 +279,7 @@ An example assetlist json contains the following structure:
"exponent": 6
}
],
+ "type_asset": "sdk.coin",
"base": "uosmo",
"name": "Osmosis",
"display": "osmo",
@@ -252,6 +289,7 @@ An example assetlist json contains the following structure:
"png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.png",
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/osmo.svg",
"theme": {
+ "circle": false,
"primary_color_hex": "#5c09a0"
}
}
@@ -266,39 +304,54 @@ An example assetlist json contains the following structure:
"twitter": "https://twitter.com/osmosiszone"
}
},
+ ..
{
+ "description": "The native staking and governance token of the Cosmos Hub.",
"denom_units": [
{
- "denom": "uion",
- "exponent": 0
+ "denom": "ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2",
+ "exponent": 0,
+ "aliases": [
+ "uatom"
+ ]
},
{
- "denom": "ion",
+ "denom": "atom",
"exponent": 6
}
],
- "base": "uion",
- "name": "Ion",
- "display": "ion",
- "symbol": "ION",
+ "type_asset": "ics20",
+ "base": "ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2",
+ "name": "Cosmos Hub",
+ "display": "atom",
+ "symbol": "ATOM",
+ "traces": [
+ {
+ "type": "ibc",
+ "counterparty": {
+ "chain_name": "cosmoshub",
+ "base_denom": "uatom",
+ "channel_id": "channel-141"
+ },
+ "chain": {
+ "channel_id": "channel-0",
+ "path": "transfer/channel-0/uatom"
+ }
+ }
+ ],
"images": [
{
- "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/ion.png",
- "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/images/ion.svg",
+ "image_sync": {
+ "chain_name": "cosmoshub",
+ "base_denom": "uatom"
+ },
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/cosmoshub/images/atom.png",
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/cosmoshub/images/atom.svg",
"theme": {
- "primary_color_hex": "#3f97fc"
+ "primary_color_hex": "#272d45"
}
}
- ],
- "coingecko_id": "ion",
- "keywords": [
- "memecoin",
- "defi"
- ],
- "socials": {
- "website": "https://ion.wtf",
- "twitter": "https://twitter.com/_IONDAO"
- }
+ ]
}
]
}
diff --git a/_IBC/agoric-kava.json b/_IBC/agoric-kava.json
new file mode 100644
index 0000000000..49ffef9512
--- /dev/null
+++ b/_IBC/agoric-kava.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "agoric",
+ "client_id": "07-tendermint-78",
+ "connection_id": "connection-73"
+ },
+ "chain_2": {
+ "chain_name": "kava",
+ "client_id": "07-tendermint-147",
+ "connection_id": "connection-182"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-63",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-133",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/akash-doravota.json b/_IBC/akash-doravota.json
index 280cdde0d1..2f3a7e6621 100644
--- a/_IBC/akash-doravota.json
+++ b/_IBC/akash-doravota.json
@@ -23,7 +23,7 @@
"ordering": "unordered",
"version": "ics20-1",
"tags": {
- "status": "live",
+ "status": "killed",
"preferred": true,
"dex": "osmosis"
}
diff --git a/_IBC/andromeda-kyve.json b/_IBC/andromeda-kyve.json
new file mode 100644
index 0000000000..72f8543899
--- /dev/null
+++ b/_IBC/andromeda-kyve.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "andromeda",
+ "client_id": "07-tendermint-17",
+ "connection_id": "connection-13"
+ },
+ "chain_2": {
+ "chain_name": "kyve",
+ "client_id": "07-tendermint-2",
+ "connection_id": "connection-3"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-14",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-2",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "fee_version": "ics29-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/_IBC/andromeda-osmosis.json b/_IBC/andromeda-osmosis.json
new file mode 100644
index 0000000000..bf8b5dbb5a
--- /dev/null
+++ b/_IBC/andromeda-osmosis.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "andromeda",
+ "client_id": "07-tendermint-19",
+ "connection_id": "connection-15"
+ },
+ "chain_2": {
+ "chain_name": "osmosis",
+ "client_id": "07-tendermint-3250",
+ "connection_id": "connection-2735"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-17",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-81924",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/archway-beezee.json b/_IBC/archway-beezee.json
new file mode 100644
index 0000000000..b654d3273a
--- /dev/null
+++ b/_IBC/archway-beezee.json
@@ -0,0 +1,30 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "archway",
+ "client_id": "07-tendermint-114",
+ "connection_id": "connection-107"
+ },
+ "chain_2": {
+ "chain_name": "beezee",
+ "client_id": "07-tendermint-8",
+ "connection_id": "connection-2"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-147",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-2",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live"
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/_IBC/archway-osmosis.json b/_IBC/archway-osmosis.json
index 1d86b3ffce..7b1a8ecef7 100644
--- a/_IBC/archway-osmosis.json
+++ b/_IBC/archway-osmosis.json
@@ -25,6 +25,36 @@
"tags": {
"status": "live"
}
+ },
+ {
+ "chain_1": {
+ "channel_id": "*",
+ "port_id": "wasm.*"
+ },
+ "chain_2": {
+ "channel_id": "*",
+ "port_id": "icahost"
+ },
+ "ordering": "ordered",
+ "version": "ics27-1",
+ "tags": {
+ "status": "live"
+ }
+ },
+ {
+ "chain_1": {
+ "channel_id": "*",
+ "port_id": "wasm.*"
+ },
+ "chain_2": {
+ "channel_id": "*",
+ "port_id": "icqhost"
+ },
+ "ordering": "unordered",
+ "version": "icq-1",
+ "tags": {
+ "status": "live"
+ }
}
]
-}
+}
\ No newline at end of file
diff --git a/_IBC/axelar-lava.json b/_IBC/axelar-lava.json
new file mode 100644
index 0000000000..990ae31bc8
--- /dev/null
+++ b/_IBC/axelar-lava.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "axelar",
+ "client_id": "07-tendermint-225",
+ "connection_id": "connection-210"
+ },
+ "chain_2": {
+ "chain_name": "lava",
+ "client_id": "07-tendermint-0",
+ "connection_id": "connection-0"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-156",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-0",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/_IBC/axelar-nolus.json b/_IBC/axelar-nolus.json
new file mode 100644
index 0000000000..a19745773f
--- /dev/null
+++ b/_IBC/axelar-nolus.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "axelar",
+ "client_id": "07-tendermint-205",
+ "connection_id": "connection-186"
+ },
+ "chain_2": {
+ "chain_name": "nolus",
+ "client_id": "07-tendermint-17",
+ "connection_id": "connection-13"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-143",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-10177",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/_IBC/axelar-self.json b/_IBC/axelar-self.json
index 3a0153cfd0..da3c22e42a 100644
--- a/_IBC/axelar-self.json
+++ b/_IBC/axelar-self.json
@@ -17,7 +17,7 @@
"port_id": "transfer"
},
"chain_2": {
- "channel_id": "channel-1",
+ "channel_id": "channel-2",
"port_id": "transfer"
},
"ordering": "unordered",
diff --git a/_IBC/bandchain-stride.json b/_IBC/bandchain-stride.json
new file mode 100644
index 0000000000..770f1e927c
--- /dev/null
+++ b/_IBC/bandchain-stride.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "bandchain",
+ "client_id": "07-tendermint-169",
+ "connection_id": "connection-150"
+ },
+ "chain_2": {
+ "chain_name": "stride",
+ "client_id": "07-tendermint-146",
+ "connection_id": "connection-146"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-161",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-258",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/beezee-noble.json b/_IBC/beezee-noble.json
new file mode 100644
index 0000000000..b2cf63b13f
--- /dev/null
+++ b/_IBC/beezee-noble.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "beezee",
+ "client_id": "07-tendermint-9",
+ "connection_id": "connection-3"
+ },
+ "chain_2": {
+ "chain_name": "noble",
+ "client_id": "07-tendermint-112",
+ "connection_id": "connection-107"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-3",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-95",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/_IBC/bostrom-cosmoshub.json b/_IBC/bostrom-cosmoshub.json
new file mode 100644
index 0000000000..3526552cc6
--- /dev/null
+++ b/_IBC/bostrom-cosmoshub.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "bostrom",
+ "client_id": "07-tendermint-15",
+ "connection_id": "connection-10"
+ },
+ "chain_2": {
+ "chain_name": "cosmoshub",
+ "client_id": "07-tendermint-764",
+ "connection_id": "connection-553"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-8",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-341",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/canto-gravitybridge.json b/_IBC/canto-gravitybridge.json
new file mode 100644
index 0000000000..b4a932fc7f
--- /dev/null
+++ b/_IBC/canto-gravitybridge.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "canto",
+ "client_id": "07-tendermint-0",
+ "connection_id": "07-tendermint-0"
+ },
+ "chain_2": {
+ "chain_name": "gravitybridge",
+ "client_id": "07-tendermint-156",
+ "connection_id": "connection-150"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-0",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-88",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/canto-sommelier.json b/_IBC/canto-sommelier.json
new file mode 100644
index 0000000000..973246f72d
--- /dev/null
+++ b/_IBC/canto-sommelier.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "canto",
+ "client_id": "07-tendermint-24",
+ "connection_id": "connection-16"
+ },
+ "chain_2": {
+ "chain_name": "sommelier",
+ "client_id": "07-tendermint-10",
+ "connection_id": "connection-6"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-10",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-2",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/coreum-doravota.json b/_IBC/coreum-doravota.json
index 1c0cbf9931..6c13431c19 100644
--- a/_IBC/coreum-doravota.json
+++ b/_IBC/coreum-doravota.json
@@ -23,7 +23,7 @@
"ordering": "unordered",
"version": "ics20-1",
"tags": {
- "status": "live",
+ "status": "killed",
"preferred": true,
"dex": "osmosis"
}
diff --git a/_IBC/cosmoshub-lava.json b/_IBC/cosmoshub-lava.json
new file mode 100644
index 0000000000..a8392c3fe3
--- /dev/null
+++ b/_IBC/cosmoshub-lava.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "cosmoshub",
+ "client_id": "07-tendermint-1318",
+ "connection_id": "connection-1050"
+ },
+ "chain_2": {
+ "chain_name": "lava",
+ "client_id": "07-tendermint-7",
+ "connection_id": "connection-12"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-969",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-6",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/_IBC/cosmoshubtestnet-symphonytestnet.json b/_IBC/cosmoshubtestnet-symphonytestnet.json
new file mode 100644
index 0000000000..d370dab959
--- /dev/null
+++ b/_IBC/cosmoshubtestnet-symphonytestnet.json
@@ -0,0 +1,30 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "cosmoshubtestnet",
+ "client_id": "07-tendermint-3748",
+ "connection_id": "connection-3798"
+ },
+ "chain_2": {
+ "chain_name": "symphonytestnet",
+ "client_id": "07-tendermint-29",
+ "connection_id": "connection-14"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-4320",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-12",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live"
+ }
+ }
+ ]
+}
diff --git a/_IBC/doravota-dydx.json b/_IBC/doravota-dydx.json
index 9e1ed0aff2..11d5817656 100644
--- a/_IBC/doravota-dydx.json
+++ b/_IBC/doravota-dydx.json
@@ -23,7 +23,7 @@
"ordering": "unordered",
"version": "ics20-1",
"tags": {
- "status": "live",
+ "status": "killed",
"preferred": true,
"dex": "osmosis"
}
diff --git a/_IBC/doravota-injective.json b/_IBC/doravota-injective.json
index a6d280d6ca..d9aadd5387 100644
--- a/_IBC/doravota-injective.json
+++ b/_IBC/doravota-injective.json
@@ -23,7 +23,7 @@
"ordering": "unordered",
"version": "ics20-1",
"tags": {
- "status": "live",
+ "status": "killed",
"preferred": true,
"dex": "osmosis"
}
diff --git a/_IBC/doravota-noble.json b/_IBC/doravota-noble.json
new file mode 100644
index 0000000000..587a3d0c16
--- /dev/null
+++ b/_IBC/doravota-noble.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "doravota",
+ "client_id": "07-tendermint-23",
+ "connection_id": "connection-29"
+ },
+ "chain_2": {
+ "chain_name": "noble",
+ "client_id": "07-tendermint-111",
+ "connection_id": "connection-106"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-14",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-94",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/doravota-nolus.json b/_IBC/doravota-nolus.json
index 8c89aec10a..e3888d351b 100644
--- a/_IBC/doravota-nolus.json
+++ b/_IBC/doravota-nolus.json
@@ -23,7 +23,7 @@
"ordering": "unordered",
"version": "ics20-1",
"tags": {
- "status": "live",
+ "status": "killed",
"preferred": true,
"dex": "osmosis"
}
diff --git a/_IBC/doravota-sei.json b/_IBC/doravota-sei.json
index 8b1163640e..d9a58eb5a4 100644
--- a/_IBC/doravota-sei.json
+++ b/_IBC/doravota-sei.json
@@ -23,7 +23,7 @@
"ordering": "unordered",
"version": "ics20-1",
"tags": {
- "status": "live",
+ "status": "killed",
"preferred": true
}
}
diff --git a/_IBC/dydx-pryzm.json b/_IBC/dydx-pryzm.json
new file mode 100644
index 0000000000..14e78e096b
--- /dev/null
+++ b/_IBC/dydx-pryzm.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "dydx",
+ "client_id": "07-tendermint-29",
+ "connection_id": "connection-34"
+ },
+ "chain_2": {
+ "chain_name": "pryzm",
+ "client_id": "07-tendermint-9",
+ "connection_id": "connection-9"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-71",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-24",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/injective-secretnetwork.json b/_IBC/injective-secretnetwork.json
index b96fa6b850..98462307a1 100644
--- a/_IBC/injective-secretnetwork.json
+++ b/_IBC/injective-secretnetwork.json
@@ -2,13 +2,13 @@
"$schema": "../ibc_data.schema.json",
"chain_1": {
"chain_name": "injective",
- "client_id": "07-tendermint-97",
- "connection_id": "connection-83"
+ "client_id": "07-tendermint-126",
+ "connection_id": "connection-101"
},
"chain_2": {
"chain_name": "secretnetwork",
- "client_id": "07-tendermint-22",
- "connection_id": "connection-8"
+ "client_id": "07-tendermint-49",
+ "connection_id": "connection-30"
},
"channels": [
{
diff --git a/_IBC/kava-noble.json b/_IBC/kava-noble.json
new file mode 100644
index 0000000000..5dee842f46
--- /dev/null
+++ b/_IBC/kava-noble.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "kava",
+ "client_id": "07-tendermint-172",
+ "connection_id": "connection-214"
+ },
+ "chain_2": {
+ "chain_name": "noble",
+ "client_id": "07-tendermint-107",
+ "connection_id": "connection-102"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-151",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-88",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
diff --git a/_IBC/kimanetwork-osmosis.json b/_IBC/kimanetwork-osmosis.json
new file mode 100644
index 0000000000..a4a7623be1
--- /dev/null
+++ b/_IBC/kimanetwork-osmosis.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "kimanetwork",
+ "client_id": "07-tendermint-1",
+ "connection_id": "connection-0"
+ },
+ "chain_2": {
+ "chain_name": "osmosis",
+ "client_id": "07-tendermint-3275",
+ "connection_id": "channel-83350"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-0",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-83350",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true,
+ "dex": "osmosis"
+ }
+ }
+ ]
+}
diff --git a/_IBC/kyve-source.json b/_IBC/kyve-source.json
new file mode 100644
index 0000000000..867a501512
--- /dev/null
+++ b/_IBC/kyve-source.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "kyve",
+ "client_id": "07-tendermint-3",
+ "connection_id": "connection-5"
+ },
+ "chain_2": {
+ "chain_name": "source",
+ "client_id": "07-tendermint-15",
+ "connection_id": "connection-16"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-3",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-2",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "fee_version": "ics29-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/_IBC/lava-osmosis.json b/_IBC/lava-osmosis.json
new file mode 100644
index 0000000000..9f0747d339
--- /dev/null
+++ b/_IBC/lava-osmosis.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "lava",
+ "client_id": "07-tendermint-1",
+ "connection_id": "connection-1"
+ },
+ "chain_2": {
+ "chain_name": "osmosis",
+ "client_id": "07-tendermint-3210",
+ "connection_id": "connection-2668"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-1",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-76971",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true,
+ "dex": "osmosis"
+ }
+ }
+ ]
+}
diff --git a/_IBC/lava-stargaze.json b/_IBC/lava-stargaze.json
new file mode 100644
index 0000000000..b244c90265
--- /dev/null
+++ b/_IBC/lava-stargaze.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "lava",
+ "client_id": "07-tendermint-8",
+ "connection_id": "connection-13"
+ },
+ "chain_2": {
+ "chain_name": "stargaze",
+ "client_id": "07-tendermint-366",
+ "connection_id": "connection-307"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-7",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-391",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/testnets/_IBC/celestiatestnet3-neutrontestnet.json b/_IBC/lorenzo-osmosis.json
similarity index 71%
rename from testnets/_IBC/celestiatestnet3-neutrontestnet.json
rename to _IBC/lorenzo-osmosis.json
index 489be7c692..dee6be5686 100644
--- a/testnets/_IBC/celestiatestnet3-neutrontestnet.json
+++ b/_IBC/lorenzo-osmosis.json
@@ -1,14 +1,14 @@
{
"$schema": "../ibc_data.schema.json",
"chain_1": {
- "chain_name": "celestiatestnet3",
+ "chain_name": "lorenzo",
"client_id": "07-tendermint-0",
"connection_id": "connection-0"
},
"chain_2": {
- "chain_name": "neutrontestnet",
- "client_id": "07-tendermint-113",
- "connection_id": "connection-101"
+ "chain_name": "osmosis",
+ "client_id": "07-tendermint-3243",
+ "connection_id": "connection-2731"
},
"channels": [
{
@@ -17,7 +17,7 @@
"port_id": "transfer"
},
"chain_2": {
- "channel_id": "channel-160",
+ "channel_id": "channel-79840",
"port_id": "transfer"
},
"ordering": "unordered",
@@ -28,4 +28,4 @@
}
}
]
-}
\ No newline at end of file
+}
diff --git a/_IBC/medasdigital-sentinel.json b/_IBC/medasdigital-sentinel.json
index ffb90009d6..af8cb0f301 100644
--- a/_IBC/medasdigital-sentinel.json
+++ b/_IBC/medasdigital-sentinel.json
@@ -13,7 +13,7 @@
"channels": [
{
"chain_1": {
- "channel_id": "channel-0",
+ "channel_id": "channel-4",
"port_id": "transfer"
},
"chain_2": {
diff --git a/_IBC/neutron-penumbra.json b/_IBC/neutron-penumbra.json
new file mode 100644
index 0000000000..0702ab3bdc
--- /dev/null
+++ b/_IBC/neutron-penumbra.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "neutron",
+ "client_id": "07-tendermint-137",
+ "connection_id": "connection-98"
+ },
+ "chain_2": {
+ "chain_name": "penumbra",
+ "client_id": "07-tendermint-9",
+ "connection_id": "connection-7"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-4886",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-6",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/_IBC/noble-titan.json b/_IBC/noble-titan.json
new file mode 100644
index 0000000000..917a297475
--- /dev/null
+++ b/_IBC/noble-titan.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "noble",
+ "client_id": "07-tendermint-114",
+ "connection_id": "connection-109"
+ },
+ "chain_2": {
+ "chain_name": "titan",
+ "client_id": "07-tendermint-1",
+ "connection_id": "connection-0"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-99",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-0",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/osmosis-penumbra.json b/_IBC/osmosis-penumbra.json
new file mode 100644
index 0000000000..55e6d69d3a
--- /dev/null
+++ b/_IBC/osmosis-penumbra.json
@@ -0,0 +1,32 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "osmosis",
+ "client_id": "07-tendermint-3242",
+ "connection_id": "connection-2730"
+ },
+ "chain_2": {
+ "chain_name": "penumbra",
+ "client_id": "07-tendermint-4",
+ "connection_id": "connection-4"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-79703",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-4",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true,
+ "dex": "osmosis"
+ }
+ }
+ ]
+}
diff --git a/_IBC/osmosis-routerchain.json b/_IBC/osmosis-routerchain.json
new file mode 100644
index 0000000000..fea1d816f9
--- /dev/null
+++ b/_IBC/osmosis-routerchain.json
@@ -0,0 +1,47 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "osmosis",
+ "client_id": "07-tendermint-3235",
+ "connection_id": "connection-2722"
+ },
+ "chain_2": {
+ "chain_name": "routerchain",
+ "client_id": "07-tendermint-7",
+ "connection_id": "connection-9"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-79180",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-7",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ },
+ {
+ "chain_1": {
+ "channel_id": "channel-79179",
+ "port_id": "wasm.osmo145vur8faym70dt7a4h60jz348vxxxqwpnezdz6ee9r88a4cftsvq85dtxr"
+ },
+ "chain_2": {
+ "channel_id": "channel-6",
+ "port_id": "crosschain"
+ },
+ "ordering": "unordered",
+ "version": "router-ibc-v1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/_IBC/osmosis-stratos.json b/_IBC/osmosis-stratos.json
new file mode 100644
index 0000000000..b49ced6c6a
--- /dev/null
+++ b/_IBC/osmosis-stratos.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "osmosis",
+ "client_id": "07-tendermint-3248",
+ "connection_id": "connection-2734"
+ },
+ "chain_2": {
+ "chain_name": "stratos",
+ "client_id": "07-tendermint-3",
+ "connection_id": "connection-2"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-81016",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-1",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/pryzm-stride.json b/_IBC/pryzm-stride.json
new file mode 100644
index 0000000000..8c63371f96
--- /dev/null
+++ b/_IBC/pryzm-stride.json
@@ -0,0 +1,31 @@
+{
+ "$schema": "../ibc_data.schema.json",
+ "chain_1": {
+ "chain_name": "pryzm",
+ "client_id": "07-tendermint-8",
+ "connection_id": "connection-8"
+ },
+ "chain_2": {
+ "chain_name": "stride",
+ "client_id": "07-tendermint-145",
+ "connection_id": "connection-145"
+ },
+ "channels": [
+ {
+ "chain_1": {
+ "channel_id": "channel-23",
+ "port_id": "transfer"
+ },
+ "chain_2": {
+ "channel_id": "channel-257",
+ "port_id": "transfer"
+ },
+ "ordering": "unordered",
+ "version": "ics20-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
+ }
+ ]
+}
diff --git a/_IBC/pryzm-terra2.json b/_IBC/pryzm-terra2.json
index b3e6c44ffd..a1ddb82146 100644
--- a/_IBC/pryzm-terra2.json
+++ b/_IBC/pryzm-terra2.json
@@ -39,8 +39,8 @@
"ordering": "ordered",
"version": "ics27-1",
"tags": {
- "status": "live",
- "preferred": true
+ "status": "killed",
+ "preferred": false
}
},
{
@@ -74,6 +74,22 @@
"status": "live",
"preferred": true
}
+ },
+ {
+ "chain_1": {
+ "channel_id": "channel-25",
+ "port_id": "icacontroller-delegation-uluna"
+ },
+ "chain_2": {
+ "channel_id": "channel-526",
+ "port_id": "icahost"
+ },
+ "ordering": "ordered",
+ "version": "ics27-1",
+ "tags": {
+ "status": "live",
+ "preferred": true
+ }
}
]
}
diff --git a/_non-cosmos/0l/assetlist.json b/_non-cosmos/0l/assetlist.json
index 1b72758b38..a6a16b940f 100644
--- a/_non-cosmos/0l/assetlist.json
+++ b/_non-cosmos/0l/assetlist.json
@@ -1,5 +1,5 @@
{
- "$schema": "../assetlist.schema.json",
+ "$schema": "../../assetlist.schema.json",
"chain_name": "0l",
"assets": [
{
diff --git a/_non-cosmos/aptos/assetlist.json b/_non-cosmos/aptos/assetlist.json
index 32b2d562f8..ecb3e1401b 100644
--- a/_non-cosmos/aptos/assetlist.json
+++ b/_non-cosmos/aptos/assetlist.json
@@ -1,5 +1,5 @@
{
- "$schema": "../assetlist.schema.json",
+ "$schema": "../../assetlist.schema.json",
"chain_name": "aptos",
"assets": [
{
diff --git a/_non-cosmos/arbitrum/assetlist.json b/_non-cosmos/arbitrum/assetlist.json
index 7c2ab2d2c6..afbd02fd1e 100644
--- a/_non-cosmos/arbitrum/assetlist.json
+++ b/_non-cosmos/arbitrum/assetlist.json
@@ -73,7 +73,10 @@
"base_denom": "wei"
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.svg",
- "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png"
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png",
+ "theme": {
+ "primary_color_hex": "#303030"
+ }
}
]
},
@@ -119,7 +122,10 @@
"base_denom": "wei"
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.svg",
- "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png"
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png",
+ "theme": {
+ "primary_color_hex": "#303030"
+ }
}
]
},
@@ -177,8 +183,10 @@
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg",
"theme": {
- "circle": true
- }
+ "circle": true,
+ "primary_color_hex": "#2775CA"
+ },
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png"
}
]
},
@@ -222,10 +230,57 @@
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg",
"theme": {
- "circle": true
+ "circle": true,
+ "primary_color_hex": "#2775CA"
+ },
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png"
+ }
+ ]
+ },
+ {
+ "description": "USDT from Ethereum bridged to Arbitrum via Arbitrum Bridge.",
+ "type_asset": "erc20",
+ "address": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
+ "denom_units": [
+ {
+ "denom": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
+ "exponent": 0
+ },
+ {
+ "denom": "usdt",
+ "exponent": 6
+ }
+ ],
+ "base": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
+ "name": "Arbitrum Bridged USDT",
+ "display": "usdt",
+ "symbol": "USDT",
+ "traces": [
+ {
+ "type": "bridge",
+ "counterparty": {
+ "chain_name": "ethereum",
+ "base_denom": "0xdac17f958d2ee523a2206206994597c13d831ec7"
+ },
+ "provider": "Arbitrum Bridge"
+ }
+ ],
+ "coingecko_id": "arbitrum-bridged-usdt-arbitrum",
+ "images": [
+ {
+ "image_sync": {
+ "chain_name": "ethereum",
+ "base_denom": "0xdac17f958d2ee523a2206206994597c13d831ec7"
+ },
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdt.svg",
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdt.png",
+ "theme": {
+ "circle": true,
+ "primary_color_hex": "#009393",
+ "background_color_hex": "#009393"
}
}
]
}
]
-}
+}
\ No newline at end of file
diff --git a/_non-cosmos/avail/assetlist.json b/_non-cosmos/avail/assetlist.json
new file mode 100644
index 0000000000..d25d221617
--- /dev/null
+++ b/_non-cosmos/avail/assetlist.json
@@ -0,0 +1,36 @@
+{
+ "$schema": "../../assetlist.schema.json",
+ "chain_name": "avail",
+ "assets": [
+ {
+ "description": "Avail is a web3 infrastructure layer that allows modular execution layers to scale and interoperate in a trust minimized way.",
+ "extended_description": "Avail is a unification layer for Web3 that decouples the data availability layer, making it easier for developers to focus on execution and settlement. It's built to make applications fast, efficient, and scalable. Avail works with any execution environment designed to scale blockchains. ",
+ "type_asset": "unknown",
+ "denom_units": [
+ {
+ "denom": "avail",
+ "exponent": 0
+ },
+ {
+ "denom": "AVAIL",
+ "exponent": 18
+ }
+ ],
+ "base": "avail",
+ "name": "Avail",
+ "display": "AVAIL",
+ "symbol": "AVAIL",
+ "coingecko_id": "avail",
+ "images": [
+ {
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/avail/images/avail.svg",
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/avail/images/avail.png",
+ "theme": {
+ "circle": false,
+ "primary_color_hex": "#2B80D7"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/_non-cosmos/avail/images/avail.png b/_non-cosmos/avail/images/avail.png
new file mode 100644
index 0000000000..cd1a576ef2
Binary files /dev/null and b/_non-cosmos/avail/images/avail.png differ
diff --git a/_non-cosmos/avail/images/avail.svg b/_non-cosmos/avail/images/avail.svg
new file mode 100644
index 0000000000..badbd21660
--- /dev/null
+++ b/_non-cosmos/avail/images/avail.svg
@@ -0,0 +1,194 @@
+
diff --git a/_non-cosmos/avalanche/assetlist.json b/_non-cosmos/avalanche/assetlist.json
index 5b4eee544c..5bf5db4314 100644
--- a/_non-cosmos/avalanche/assetlist.json
+++ b/_non-cosmos/avalanche/assetlist.json
@@ -1,5 +1,5 @@
{
- "$schema": "../assetlist.schema.json",
+ "$schema": "../../assetlist.schema.json",
"chain_name": "avalanche",
"assets": [
{
@@ -108,6 +108,7 @@
}
],
"logo_URIs": {
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png",
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg"
},
"coingecko_id": "usd-coin",
@@ -119,8 +120,10 @@
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg",
"theme": {
- "circle": true
- }
+ "circle": true,
+ "primary_color_hex": "#2775CA"
+ },
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png"
}
]
},
@@ -164,8 +167,10 @@
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg",
"theme": {
- "circle": true
- }
+ "circle": true,
+ "primary_color_hex": "#2775CA"
+ },
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png"
}
]
},
@@ -332,6 +337,51 @@
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdt.svg"
}
]
+ },
+ {
+ "description": "USDT issued on Avalanche.",
+ "type_asset": "erc20",
+ "address": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7",
+ "denom_units": [
+ {
+ "denom": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7",
+ "exponent": 0
+ },
+ {
+ "denom": "usdt",
+ "exponent": 6
+ }
+ ],
+ "base": "0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7",
+ "name": "Tether USD",
+ "display": "usdt",
+ "symbol": "USDT",
+ "traces": [
+ {
+ "type": "additional-mintage",
+ "counterparty": {
+ "chain_name": "ethereum",
+ "base_denom": "0xdac17f958d2ee523a2206206994597c13d831ec7"
+ },
+ "provider": "Tether"
+ }
+ ],
+ "coingecko_id": "tether",
+ "images": [
+ {
+ "image_sync": {
+ "chain_name": "ethereum",
+ "base_denom": "0xdac17f958d2ee523a2206206994597c13d831ec7"
+ },
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdt.svg",
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdt.png",
+ "theme": {
+ "circle": true,
+ "primary_color_hex": "#009393",
+ "background_color_hex": "#009393"
+ }
+ }
+ ]
}
]
-}
+}
\ No newline at end of file
diff --git a/_non-cosmos/base/assetlist.json b/_non-cosmos/base/assetlist.json
index 66f08d3f3d..8b7742ff24 100644
--- a/_non-cosmos/base/assetlist.json
+++ b/_non-cosmos/base/assetlist.json
@@ -1,5 +1,5 @@
{
- "$schema": "../assetlist.schema.json",
+ "$schema": "../../assetlist.schema.json",
"chain_name": "base",
"assets": [
{
@@ -36,7 +36,10 @@
"base_denom": "wei"
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.svg",
- "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png"
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png",
+ "theme": {
+ "primary_color_hex": "#303030"
+ }
}
]
},
@@ -82,7 +85,10 @@
"base_denom": "wei"
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.svg",
- "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png"
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png",
+ "theme": {
+ "primary_color_hex": "#303030"
+ }
}
]
},
@@ -118,6 +124,7 @@
}
],
"logo_URIs": {
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png",
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg"
},
"coingecko_id": "usd-coin",
@@ -129,8 +136,10 @@
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg",
"theme": {
- "circle": true
- }
+ "circle": true,
+ "primary_color_hex": "#2775CA"
+ },
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png"
}
]
},
@@ -174,7 +183,49 @@
},
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg",
"theme": {
- "circle": true
+ "circle": true,
+ "primary_color_hex": "#2775CA"
+ },
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png"
+ }
+ ]
+ },
+ {
+ "description": "Coinbase Wrapped BTC ('cbBTC') is an ERC20 token that is backed 1:1 by Bitcoin (BTC) held by Coinbase. cbBTC is built to be seamlessly compatible with DeFi applications, giving customers the option to tap into DeFi and unlock financial utility.",
+ "type_asset": "erc20",
+ "address": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
+ "denom_units": [
+ {
+ "denom": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
+ "exponent": 0
+ },
+ {
+ "denom": "cbbtc",
+ "exponent": 8
+ }
+ ],
+ "base": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",
+ "name": "Coinbase Wrapped BTC",
+ "display": "cbbtc",
+ "symbol": "cbBTC",
+ "traces": [
+ {
+ "type": "synthetic",
+ "counterparty": {
+ "chain_name": "bitcoin",
+ "base_denom": "sat"
+ },
+ "provider": "Base Bridge"
+ }
+ ],
+ "coingecko_id": "coinbase-wrapped-btc",
+ "images": [
+ {
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/base/images/cbbtc.svg",
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/base/images/cbbtc.png",
+ "theme": {
+ "circle": true,
+ "primary_color_hex": "#0052FF"
}
}
]
diff --git a/_non-cosmos/base/images/cbbtc.png b/_non-cosmos/base/images/cbbtc.png
new file mode 100644
index 0000000000..07ce743e8c
Binary files /dev/null and b/_non-cosmos/base/images/cbbtc.png differ
diff --git a/_non-cosmos/base/images/cbbtc.svg b/_non-cosmos/base/images/cbbtc.svg
new file mode 100644
index 0000000000..0bba3dea14
--- /dev/null
+++ b/_non-cosmos/base/images/cbbtc.svg
@@ -0,0 +1,5 @@
+
diff --git a/_non-cosmos/base/images/temp.txt b/_non-cosmos/base/images/temp.txt
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/_non-cosmos/base/images/temp.txt
@@ -0,0 +1 @@
+
diff --git a/_non-cosmos/binancesmartchain/assetlist.json b/_non-cosmos/binancesmartchain/assetlist.json
index 6a00cd0e38..54226cc9ab 100644
--- a/_non-cosmos/binancesmartchain/assetlist.json
+++ b/_non-cosmos/binancesmartchain/assetlist.json
@@ -1,5 +1,5 @@
{
- "$schema": "../assetlist.schema.json",
+ "$schema": "../../assetlist.schema.json",
"chain_name": "binancesmartchain",
"assets": [
{
@@ -221,6 +221,51 @@
}
}
]
+ },
+ {
+ "description": "BUSD-T gives you the joint benefits of open blockchain technology and traditional currency by converting your cash into a stable digital currency equivalent.",
+ "type_asset": "erc20",
+ "address": "0x55d398326f99059fF775485246999027B3197955",
+ "denom_units": [
+ {
+ "denom": "0x55d398326f99059fF775485246999027B3197955",
+ "exponent": 0
+ },
+ {
+ "denom": "usdt",
+ "exponent": 6
+ }
+ ],
+ "base": "0x55d398326f99059fF775485246999027B3197955",
+ "name": "Binance Bridged USDT",
+ "display": "usdt",
+ "symbol": "USDT",
+ "traces": [
+ {
+ "type": "bridge",
+ "counterparty": {
+ "chain_name": "ethereum",
+ "base_denom": "0xdac17f958d2ee523a2206206994597c13d831ec7"
+ },
+ "provider": "Binance Bridge"
+ }
+ ],
+ "coingecko_id": "binance-bridged-usdt-bnb-smart-chain",
+ "images": [
+ {
+ "image_sync": {
+ "chain_name": "ethereum",
+ "base_denom": "0xdac17f958d2ee523a2206206994597c13d831ec7"
+ },
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdt.svg",
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdt.png",
+ "theme": {
+ "circle": true,
+ "primary_color_hex": "#009393",
+ "background_color_hex": "#009393"
+ }
+ }
+ ]
}
]
}
\ No newline at end of file
diff --git a/_non-cosmos/bitcoin/assetlist.json b/_non-cosmos/bitcoin/assetlist.json
index 12ae466188..38a4378aa4 100644
--- a/_non-cosmos/bitcoin/assetlist.json
+++ b/_non-cosmos/bitcoin/assetlist.json
@@ -1,5 +1,5 @@
{
- "$schema": "../assetlist.schema.json",
+ "$schema": "../../assetlist.schema.json",
"chain_name": "bitcoin",
"assets": [
{
@@ -21,14 +21,18 @@
"display": "btc",
"symbol": "BTC",
"logo_URIs": {
- "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/bitcoin/images/btc.png"
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/bitcoin/images/btc.png",
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/bitcoin/images/btc.svg"
},
"coingecko_id": "bitcoin",
"images": [
{
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/bitcoin/images/btc.svg",
"png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/bitcoin/images/btc.png",
"theme": {
- "primary_color_hex": "#f4941c"
+ "primary_color_hex": "#f4941c",
+ "background_color_hex": "#f4941c",
+ "circle": true
}
}
]
diff --git a/_non-cosmos/bitcoin/images/btc.svg b/_non-cosmos/bitcoin/images/btc.svg
new file mode 100644
index 0000000000..04079be30b
--- /dev/null
+++ b/_non-cosmos/bitcoin/images/btc.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/_non-cosmos/comex/assetlist.json b/_non-cosmos/comex/assetlist.json
index 2f4b7ac923..069284d7c3 100644
--- a/_non-cosmos/comex/assetlist.json
+++ b/_non-cosmos/comex/assetlist.json
@@ -1,5 +1,5 @@
{
- "$schema": "../assetlist.schema.json",
+ "$schema": "../../assetlist.schema.json",
"chain_name": "comex",
"assets": [
{
diff --git a/_non-cosmos/composablepolkadot/assetlist.json b/_non-cosmos/composablepolkadot/assetlist.json
index 855136a622..3206aeeb10 100644
--- a/_non-cosmos/composablepolkadot/assetlist.json
+++ b/_non-cosmos/composablepolkadot/assetlist.json
@@ -1,5 +1,5 @@
{
- "$schema": "../assetlist.schema.json",
+ "$schema": "../../assetlist.schema.json",
"chain_name": "composablepolkadot",
"assets": [
{
diff --git a/_non-cosmos/ethereum/assetlist.json b/_non-cosmos/ethereum/assetlist.json
index f1eb2a273a..5cf3304c4d 100644
--- a/_non-cosmos/ethereum/assetlist.json
+++ b/_non-cosmos/ethereum/assetlist.json
@@ -399,7 +399,11 @@
"coingecko_id": "shiba-inu",
"images": [
{
- "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/shib.svg"
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/shib.svg",
+ "theme": {
+ "primary_color_hex": "#FFA409",
+ "background_color_hex": "#00000000"
+ }
}
]
},
@@ -724,14 +728,17 @@
}
],
"logo_URIs": {
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png",
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg"
},
"coingecko_id": "usd-coin",
"images": [
{
"svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.svg",
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/usdc.png",
"theme": {
- "circle": true
+ "circle": true,
+ "primary_color_hex": "#2775CA"
}
}
]
@@ -1807,6 +1814,148 @@
"website": "https://cacaoswap.app",
"twitter": "https://x.com/CacaoSwap"
}
+ },
+ {
+ "description": "Avail is a web3 infrastructure layer that allows modular execution layers to scale and interoperate in a trust minimized way.",
+ "type_asset": "erc20",
+ "address": "0xEeB4d8400AEefafC1B2953e0094134A887C76Bd8",
+ "denom_units": [
+ {
+ "denom": "0xEeB4d8400AEefafC1B2953e0094134A887C76Bd8",
+ "exponent": 0,
+ "aliases": [
+ "avail-wei",
+ "avail"
+ ]
+ },
+ {
+ "denom": "AVAIL",
+ "exponent": 18
+ }
+ ],
+ "base": "0xEeB4d8400AEefafC1B2953e0094134A887C76Bd8",
+ "name": "Avail",
+ "display": "AVAIL",
+ "symbol": "AVAIL",
+ "traces": [
+ {
+ "type": "bridge",
+ "counterparty": {
+ "chain_name": "avail",
+ "base_denom": "avail"
+ },
+ "provider": "Avail Bridge"
+ }
+ ],
+ "images": [
+ {
+ "image_sync": {
+ "chain_name": "avail",
+ "base_denom": "avail"
+ },
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/avail/images/avail.svg",
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/avail/images/avail.png",
+ "theme": {
+ "circle": false,
+ "primary_color_hex": "#2B80D7"
+ }
+ }
+ ]
+ },
+ {
+ "description": "EURe is a Euro-backed stablecoin issued by Monerium.",
+ "extended_description": "EURe is the first authorized and regulated stablecoin in Europe. It is collateralized by Euro-denominated deposits held in segregated accounts. EURe is issued by Monerium, the first Electronic Money Institution (EMI) to become compliant under the EU's MiCA regulations.",
+ "type_asset": "erc20",
+ "address": "0x3231Cb76718CDeF2155FC47b5286d82e6eDA273f",
+ "denom_units": [
+ {
+ "denom": "0x3231Cb76718CDeF2155FC47b5286d82e6eDA273f",
+ "exponent": 0,
+ "aliases": [
+ "eure-wei",
+ "ueure"
+ ]
+ },
+ {
+ "denom": "eure",
+ "exponent": 18
+ }
+ ],
+ "base": "0x3231Cb76718CDeF2155FC47b5286d82e6eDA273f",
+ "name": "Monerium EUR emoney",
+ "display": "eure",
+ "symbol": "EURe",
+ "coingecko_id": "monerium-eur-money",
+ "traces": [
+ {
+ "type": "synthetic",
+ "counterparty": {
+ "chain_name": "forex",
+ "base_denom": "EUR"
+ },
+ "provider": "Monerium"
+ }
+ ],
+ "images": [
+ {
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eure.png",
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eure.svg",
+ "theme": {
+ "circle": true,
+ "primary_color_hex": "#0095D7",
+ "background_color_hex": "#FFFFFF"
+ }
+ }
+ ],
+ "socials": {
+ "website": "https://monerium.com/",
+ "twitter": "https://x.com/monerium"
+ }
+ },
+ {
+ "description": "LBTC is liquid, yield-bearing, natively cross-chain, and 1:1 backed by bitcoin.",
+ "extended_description": "Lombard is dedicated to expanding the digital economy by transforming Bitcoinβs utility from a mere store of value into a productive financial tool. While Bitcoin remains the worldβs largest crypto asset, with over $1 trillion worth of Bitcoin often sitting idle, its utility is limited compared to other digital assets. Lombard sees a significant opportunity to change this by connecting Bitcoin to decentralized finance (DeFi).\n\nLombard is driven by the fact that if just 10% of Bitcoin's $1.5 trillion market cap flows into DeFi, the total value locked (TVL) in the ecosystem could more than double, catalyzing unprecedented growth and enabling sustainable market dynamics over time. Lombard believes this potential can be unlocked through a security-first liquid Bitcoin primitiveβLBTC.\n\nOur flagship product, LBTC, is a secure Bitcoin liquid staked token (LST), designed to empower anyoneβfrom individual holders to large institutionsβto amplify the utility of their Bitcoin. It allows users to earn a native yield from providing economic security to networks via Babylon and participate in DeFi, all while maintaining the value of the original asset.\n\nBy building LBTC on top of Babylon, Lombardβs LBTC bridges the gap between Bitcoinβs immense economic value, security capabilities, and the dynamic opportunities within PoS and DeFi ecosystems, marking a transformative phase for Bitcoin in the decentralized economy.",
+ "type_asset": "erc20",
+ "address": "0x8236a87084f8B84306f72007F36F2618A5634494",
+ "denom_units": [
+ {
+ "denom": "0x8236a87084f8B84306f72007F36F2618A5634494",
+ "exponent": 0
+ },
+ {
+ "denom": "lbtc",
+ "exponent": 8
+ }
+ ],
+ "base": "0x8236a87084f8B84306f72007F36F2618A5634494",
+ "name": "Lombard Staked Bitcoin",
+ "display": "lbtc",
+ "symbol": "LBTC",
+ "traces": [
+ {
+ "type": "liquid-stake",
+ "counterparty": {
+ "chain_name": "bitcoin",
+ "base_denom": "sat"
+ },
+ "provider": "Lombard"
+ }
+ ],
+ "coingecko_id": "lombard-staked-btc",
+ "images": [
+ {
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/lbtc.png",
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/lbtc.svg",
+ "theme": {
+ "circle": true,
+ "primary_color_hex": "#162E2F"
+ }
+ }
+ ],
+ "socials": {
+ "website": "https://lombard.finance",
+ "twitter": "https://x.com/Lombard_Finance"
+ }
}
]
}
diff --git a/_non-cosmos/ethereum/chain.json b/_non-cosmos/ethereum/chain.json
new file mode 100644
index 0000000000..87945943ea
--- /dev/null
+++ b/_non-cosmos/ethereum/chain.json
@@ -0,0 +1,46 @@
+{
+ "$schema": "../../chain.schema.json",
+ "chain_name": "ethereum",
+ "status": "live",
+ "website": "https://ethereum.org/",
+ "network_type": "mainnet",
+ "pretty_name": "Ethereum Mainnet",
+ "chain_type": "eip155",
+ "chain_id": "1",
+ "slip44": 60,
+ "fees": {
+ "fee_tokens": [
+ {
+ "denom": "wei",
+ "fixed_min_gas_price": 0
+ }
+ ]
+ },
+ "staking": {
+ "staking_tokens": [
+ {
+ "denom": "wei"
+ }
+ ]
+ },
+ "explorers": [
+ {
+ "kind": "Etherscan",
+ "url": "https://etherscan.io/",
+ "tx_page": "https://etherscan.io/tx/${txHash}"
+ }
+ ],
+ "images": [
+ {
+ "image_sync": {
+ "chain_name": "ethereum",
+ "base_denom": "wei"
+ },
+ "png": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.png",
+ "svg": "https://raw.githubusercontent.com/cosmos/chain-registry/master/_non-cosmos/ethereum/images/eth-white.svg",
+ "theme": {
+ "primary_color_hex": "#303030"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/_non-cosmos/ethereum/images/eure.png b/_non-cosmos/ethereum/images/eure.png
new file mode 100644
index 0000000000..ee480aed2d
Binary files /dev/null and b/_non-cosmos/ethereum/images/eure.png differ
diff --git a/_non-cosmos/ethereum/images/eure.svg b/_non-cosmos/ethereum/images/eure.svg
new file mode 100644
index 0000000000..14f8618f4e
--- /dev/null
+++ b/_non-cosmos/ethereum/images/eure.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/_non-cosmos/ethereum/images/lbtc.png b/_non-cosmos/ethereum/images/lbtc.png
new file mode 100644
index 0000000000..acf74a8e51
Binary files /dev/null and b/_non-cosmos/ethereum/images/lbtc.png differ
diff --git a/_non-cosmos/ethereum/images/lbtc.svg b/_non-cosmos/ethereum/images/lbtc.svg
new file mode 100644
index 0000000000..1fed0b11ac
--- /dev/null
+++ b/_non-cosmos/ethereum/images/lbtc.svg
@@ -0,0 +1,26 @@
+
diff --git a/_non-cosmos/ethereum/images/usdc.png b/_non-cosmos/ethereum/images/usdc.png
new file mode 100644
index 0000000000..8c0ffa7b84
Binary files /dev/null and b/_non-cosmos/ethereum/images/usdc.png differ
diff --git a/_non-cosmos/ethereum/images/usdc.svg b/_non-cosmos/ethereum/images/usdc.svg
index 5dfea926e6..bcec782106 100644
--- a/_non-cosmos/ethereum/images/usdc.svg
+++ b/_non-cosmos/ethereum/images/usdc.svg
@@ -1,5 +1,20 @@
-