diff --git a/VERSION b/VERSION
index 280a1e3..7ec1d6d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.0.12
+2.1.0
diff --git a/assets/btcb-0/info.json b/assets/btcb-0/info.json
index e2e1eb2..10a03cd 100644
--- a/assets/btcb-0/info.json
+++ b/assets/btcb-0/info.json
@@ -1,5 +1,15 @@
{
"contracts": [
+ {
+ "address": "0x7A6888c85eDBA8E38F6C7E0485212da602761C08",
+ "decimals": 18,
+ "name": "BTCB",
+ "network": "evm-1116",
+ "symbol": "BTCB",
+ "tags": [
+ "mainnet"
+ ]
+ },
{
"address": "0xd267F821F1b8344B5A63626c8c824697194A173E",
"decimals": 18,
diff --git a/assets/btcusd-0/info.json b/assets/btcusd-0/info.json
index b1cc41d..b45a273 100644
--- a/assets/btcusd-0/info.json
+++ b/assets/btcusd-0/info.json
@@ -1,5 +1,15 @@
{
"contracts": [
+ {
+ "address": "0xad0c524Ce19ceA03654Dc377da7Bac52C56eDd10",
+ "decimals": 18,
+ "name": "Bitcoin USD",
+ "network": "evm-1116",
+ "symbol": "BtcUSD",
+ "tags": [
+ "mainnet"
+ ]
+ },
{
"address": "0x6906Ccda405926FC3f04240187dd4fAd5DF6d555",
"decimals": 18,
diff --git a/assets/core-0/image-128.png b/assets/core-0/image-128.png
new file mode 100644
index 0000000..3a25143
Binary files /dev/null and b/assets/core-0/image-128.png differ
diff --git a/assets/core-0/image-256.png b/assets/core-0/image-256.png
new file mode 100644
index 0000000..f73264d
Binary files /dev/null and b/assets/core-0/image-256.png differ
diff --git a/assets/core-0/image-32.png b/assets/core-0/image-32.png
new file mode 100644
index 0000000..02ab739
Binary files /dev/null and b/assets/core-0/image-32.png differ
diff --git a/assets/core-0/image-64.png b/assets/core-0/image-64.png
new file mode 100644
index 0000000..047170c
Binary files /dev/null and b/assets/core-0/image-64.png differ
diff --git a/assets/core-0/image.svg b/assets/core-0/image.svg
new file mode 100644
index 0000000..61788f4
--- /dev/null
+++ b/assets/core-0/image.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/core-0/info.json b/assets/core-0/info.json
new file mode 100644
index 0000000..b6f79e2
--- /dev/null
+++ b/assets/core-0/info.json
@@ -0,0 +1,56 @@
+{
+ "contracts": [
+ {
+ "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
+ "decimals": 18,
+ "name": "Core Blockchain Testnet Native Token",
+ "network": "evm-1115",
+ "symbol": "tCORE",
+ "tags": [
+ "native-coin",
+ "testnet"
+ ]
+ },
+ {
+ "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
+ "decimals": 18,
+ "name": "Core Blockchain Native Token",
+ "network": "evm-1116",
+ "symbol": "CORE",
+ "tags": [
+ "mainnet",
+ "native-coin"
+ ]
+ },
+ {
+ "address": "0xA8079B9F389F0E1e6d2Deb2E434209eC6a52e6c6",
+ "decimals": 18,
+ "name": "Unified CORE",
+ "network": "evm-3068",
+ "symbol": "CORE",
+ "tags": [
+ "mainnet"
+ ]
+ }
+ ],
+ "id": "core-0",
+ "images": {
+ "png128": true,
+ "png256": true,
+ "png32": true,
+ "png64": true,
+ "svg": true
+ },
+ "name": "Core Blockchain Native Token",
+ "references": [
+ {
+ "id": "coingecko",
+ "url": "https://www.coingecko.com/en/coins/core"
+ },
+ {
+ "id": "coinmarketcap",
+ "url": "https://coinmarketcap.com/currencies/core-dao"
+ }
+ ],
+ "tags": []
+}
diff --git a/assets/unknown-core/image-128.png b/assets/unknown-core/image-128.png
new file mode 100644
index 0000000..8e1536a
Binary files /dev/null and b/assets/unknown-core/image-128.png differ
diff --git a/assets/unknown-core/image-256.png b/assets/unknown-core/image-256.png
new file mode 100644
index 0000000..b69cbdf
Binary files /dev/null and b/assets/unknown-core/image-256.png differ
diff --git a/assets/unknown-core/image-32.png b/assets/unknown-core/image-32.png
new file mode 100644
index 0000000..7213f31
Binary files /dev/null and b/assets/unknown-core/image-32.png differ
diff --git a/assets/unknown-core/image-64.png b/assets/unknown-core/image-64.png
new file mode 100644
index 0000000..8a11a58
Binary files /dev/null and b/assets/unknown-core/image-64.png differ
diff --git a/assets/unknown-core/image.svg b/assets/unknown-core/image.svg
new file mode 100644
index 0000000..2ece83d
--- /dev/null
+++ b/assets/unknown-core/image.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/unknown-core/info.json b/assets/unknown-core/info.json
new file mode 100644
index 0000000..8012c14
--- /dev/null
+++ b/assets/unknown-core/info.json
@@ -0,0 +1,37 @@
+{
+ "contracts": [
+ {
+ "address": "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF",
+ "decimals": 0,
+ "name": "Unknown Core Asset",
+ "network": "evm-1115",
+ "symbol": "UNKNOWN",
+ "tags": [
+ "testnet"
+ ]
+ },
+ {
+ "address": "0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF",
+ "decimals": 0,
+ "name": "Unknown Core Asset",
+ "network": "evm-1116",
+ "symbol": "UNKNOWN",
+ "tags": [
+ "mainnet"
+ ]
+ }
+ ],
+ "id": "unknown-core",
+ "images": {
+ "png128": true,
+ "png256": true,
+ "png32": true,
+ "png64": true,
+ "svg": true
+ },
+ "name": "Unknown Core Asset",
+ "references": [],
+ "tags": [
+ "core"
+ ]
+}
diff --git a/assets/wbtc-0/info.json b/assets/wbtc-0/info.json
index 3e29b7a..59b367f 100644
--- a/assets/wbtc-0/info.json
+++ b/assets/wbtc-0/info.json
@@ -30,6 +30,16 @@
"testnet"
]
},
+ {
+ "address": "0x5832f53d147b3d6Cd4578B9CBD62425C7ea9d0Bd",
+ "decimals": 8,
+ "name": "WBTC",
+ "network": "evm-1116",
+ "symbol": "WBTC",
+ "tags": [
+ "mainnet"
+ ]
+ },
{
"address": "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6",
"decimals": 8,
diff --git a/enums/ids/asset.json b/enums/ids/asset.json
index b79f46d..8d6c32c 100644
--- a/enums/ids/asset.json
+++ b/enums/ids/asset.json
@@ -355,6 +355,10 @@
"description": "Compound Coin",
"value": "comp-0"
},
+ {
+ "description": "Core Blockchain Native Token",
+ "value": "core-0"
+ },
{
"description": "CorgiAI",
"value": "corgiai-0"
@@ -1255,6 +1259,10 @@
"description": "Unknown BNB Asset",
"value": "unknown-bnb"
},
+ {
+ "description": "Unknown Core Asset",
+ "value": "unknown-core"
+ },
{
"description": "Unknown Ethereum Asset",
"value": "unknown-ethereum"
diff --git a/enums/ids/network.explorer.json b/enums/ids/network.explorer.json
index f11a68f..961347a 100644
--- a/enums/ids/network.explorer.json
+++ b/enums/ids/network.explorer.json
@@ -3,6 +3,10 @@
"value": "blockscout",
"description": "Explorer powered by Blockscout"
},
+ {
+ "value": "corescan",
+ "description": "Explorer powered by Core"
+ },
{
"value": "dexguru",
"description": "Explorer powered by DexGuru"
diff --git a/enums/ids/network.json b/enums/ids/network.json
index 597cfa1..c1fe23e 100644
--- a/enums/ids/network.json
+++ b/enums/ids/network.json
@@ -19,6 +19,10 @@
"description": "Klaytn Testnet Baobab",
"value": "evm-1001"
},
+ {
+ "description": "Core Blockchain Testnet",
+ "value": "evm-1115"
+ },
{
"description": "Ethereum Testnet Sepolia",
"value": "evm-11155111"
@@ -27,6 +31,10 @@
"description": "OP Sepolia Testnet",
"value": "evm-11155420"
},
+ {
+ "description": "Core Blockchain Mainnet",
+ "value": "evm-1116"
+ },
{
"description": "Polygon Mainnet",
"value": "evm-137"
diff --git a/enums/tags/asset.json b/enums/tags/asset.json
index a8ffc8d..3959130 100644
--- a/enums/tags/asset.json
+++ b/enums/tags/asset.json
@@ -23,6 +23,10 @@
"value": "bnb",
"description": "Main network of asset is BNB chain"
},
+ {
+ "value": "core",
+ "description": "Main network of asset is Core"
+ },
{
"value": "ethereum",
"description": "Main network of asset is Ethereum"
diff --git a/enums/tags/network.json b/enums/tags/network.json
index 334dd2d..046db79 100644
--- a/enums/tags/network.json
+++ b/enums/tags/network.json
@@ -23,6 +23,10 @@
"value": "bnb",
"description": "BNB networks"
},
+ {
+ "value": "core",
+ "description": "Core networks"
+ },
{
"value": "ethereum",
"description": "Ethereum networks"
diff --git a/libraries/constants/rpc.json b/libraries/constants/rpc.json
index 076ed4b..5621892 100644
--- a/libraries/constants/rpc.json
+++ b/libraries/constants/rpc.json
@@ -11,6 +11,10 @@
"id": "evm-1001",
"url": "https://public-rpc.thebifrost.io/test/kaia"
},
+ {
+ "id": "evm-1115",
+ "url": null
+ },
{
"id": "evm-11155111",
"url": "https://public-rpc.thebifrost.io/test/eth"
@@ -19,6 +23,10 @@
"id": "evm-11155420",
"url": "https://public-rpc.thebifrost.io/test/op"
},
+ {
+ "id": "evm-1116",
+ "url": "https://public-rpc.thebifrost.io/main/core"
+ },
{
"id": "evm-137",
"url": "https://public-rpc.thebifrost.io/main/polygon"
diff --git a/networks/evm-1115/image-128.png b/networks/evm-1115/image-128.png
new file mode 100644
index 0000000..1566318
Binary files /dev/null and b/networks/evm-1115/image-128.png differ
diff --git a/networks/evm-1115/image-256.png b/networks/evm-1115/image-256.png
new file mode 100644
index 0000000..2e76e7b
Binary files /dev/null and b/networks/evm-1115/image-256.png differ
diff --git a/networks/evm-1115/image-32.png b/networks/evm-1115/image-32.png
new file mode 100644
index 0000000..2b09bd4
Binary files /dev/null and b/networks/evm-1115/image-32.png differ
diff --git a/networks/evm-1115/image-64.png b/networks/evm-1115/image-64.png
new file mode 100644
index 0000000..0412d5b
Binary files /dev/null and b/networks/evm-1115/image-64.png differ
diff --git a/networks/evm-1115/image.svg b/networks/evm-1115/image.svg
new file mode 100644
index 0000000..f3ce3e4
--- /dev/null
+++ b/networks/evm-1115/image.svg
@@ -0,0 +1,10 @@
+
diff --git a/networks/evm-1115/info.json b/networks/evm-1115/info.json
new file mode 100644
index 0000000..ecfed10
--- /dev/null
+++ b/networks/evm-1115/info.json
@@ -0,0 +1,30 @@
+{
+ "currency": {
+ "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
+ "decimals": 18,
+ "id": "core-0",
+ "name": "Core Blockchain Testnet Native Token",
+ "symbol": "tCORE"
+ },
+ "engine": "evm",
+ "explorers": [
+ {
+ "id": "corescan",
+ "url": "https://scan.test.btcs.network/"
+ }
+ ],
+ "id": "evm-1115",
+ "images": {
+ "png128": true,
+ "png256": true,
+ "png32": true,
+ "png64": true,
+ "svg": true
+ },
+ "name": "Core Blockchain Testnet",
+ "network": "testnet",
+ "tags": [
+ "core"
+ ],
+ "unknownAssetId": "unknown-core"
+}
diff --git a/networks/evm-1116/image-128.png b/networks/evm-1116/image-128.png
new file mode 100644
index 0000000..c5c54f1
Binary files /dev/null and b/networks/evm-1116/image-128.png differ
diff --git a/networks/evm-1116/image-256.png b/networks/evm-1116/image-256.png
new file mode 100644
index 0000000..0ee4131
Binary files /dev/null and b/networks/evm-1116/image-256.png differ
diff --git a/networks/evm-1116/image-32.png b/networks/evm-1116/image-32.png
new file mode 100644
index 0000000..f8569be
Binary files /dev/null and b/networks/evm-1116/image-32.png differ
diff --git a/networks/evm-1116/image-64.png b/networks/evm-1116/image-64.png
new file mode 100644
index 0000000..146d107
Binary files /dev/null and b/networks/evm-1116/image-64.png differ
diff --git a/networks/evm-1116/image.svg b/networks/evm-1116/image.svg
new file mode 100644
index 0000000..82588e1
--- /dev/null
+++ b/networks/evm-1116/image.svg
@@ -0,0 +1,10 @@
+
diff --git a/networks/evm-1116/info.json b/networks/evm-1116/info.json
new file mode 100644
index 0000000..0b78500
--- /dev/null
+++ b/networks/evm-1116/info.json
@@ -0,0 +1,30 @@
+{
+ "currency": {
+ "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
+ "decimals": 18,
+ "id": "core-0",
+ "name": "Core Blockchain Native Token",
+ "symbol": "CORE"
+ },
+ "engine": "evm",
+ "explorers": [
+ {
+ "id": "corescan",
+ "url": "https://scan.coredao.org/"
+ }
+ ],
+ "id": "evm-1116",
+ "images": {
+ "png128": true,
+ "png256": true,
+ "png32": true,
+ "png64": true,
+ "svg": true
+ },
+ "name": "Core Blockchain Mainnet",
+ "network": "mainnet",
+ "tags": [
+ "core"
+ ],
+ "unknownAssetId": "unknown-core"
+}
diff --git a/tests/additional/test_rpc.py b/tests/additional/test_rpc.py
index 97b21ec..c18c7a3 100644
--- a/tests/additional/test_rpc.py
+++ b/tests/additional/test_rpc.py
@@ -1,6 +1,8 @@
from asyncio import gather
from copy import deepcopy
from pathlib import Path
+from re import search
+from subprocess import run, PIPE
import pytest
from pydantic import HttpUrl
@@ -71,7 +73,7 @@ async def __test_rpc_url(self, network: Network):
@pytest.mark.asyncio
async def test_all_contracts_info_valid(self):
"""All contracts in asset information are valid."""
- for asset, _ in self.asset_list:
+ for asset in self.__filter_modified_assets():
await gather(*[self.__test_all_contract_info_valid(asset)])
async def __test_all_contract_info_valid(self, asset: Asset):
@@ -102,3 +104,31 @@ async def __test_all_contract_info_valid(self, asset: Asset):
assert contract == expected
else:
pass
+
+ def __filter_modified_assets(self) -> list[Asset]:
+ """Filter the modified assets."""
+ # Get recent tag
+ recent_tag_result = run(
+ ["git", "describe", "--tags", "--abbrev=0", "HEAD^"],
+ stdout=PIPE,
+ stderr=PIPE,
+ text=True,
+ check=True,
+ )
+ recent_tag = recent_tag_result.stdout.strip()
+ # Get modified files
+ diff_result = run(
+ ["git", "diff", "--name-only", recent_tag],
+ stdout=PIPE,
+ stderr=PIPE,
+ text=True,
+ check=True,
+ )
+ changed_files = [
+ file for file in diff_result.stdout.strip().split("\n") if file
+ ]
+ asset_matches = [
+ search(r"assets/([^/]+)/info.json", file) for file in changed_files
+ ]
+ asset_ids = [match.group(1) for match in asset_matches if match]
+ return [asset for asset, _ in self.asset_list if asset.id in asset_ids]