diff --git a/README.md b/README.md index 837757170..8e85b92f2 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,8 @@ We currently accept tokens on the following chains: - `lisk` - `lisk-sepolia` - `redstone` +- `metall2` +- `metall2-sepolia` #### Non-bridgable tokens diff --git a/data/ASI/data.json b/data/ASI/data.json new file mode 100644 index 000000000..16474f03e --- /dev/null +++ b/data/ASI/data.json @@ -0,0 +1,24 @@ +{ + "name": "ASI Alliance", + "decimals": 18, + "symbol": "ASI", + "description": "The ASI Alliance represents a significant shift toward a decentralized AI ecosystem, offering an alternative to AI development dominated by big tech. By pooling their resources and expertise, Fetch.ai, SingularityNET, and Ocean Protocol aim to foster innovation, transparency, and inclusivity in the development of advanced AI technologies.", + "website": "https://www.superintelligence.io/", + "twitter": "https://x.com/ASI_Alliance", + "tokens": { + "ethereum": { + "address": "0xaea46A60368A7bD060eec7DF8CBa43b7EF41Ad85", + "overrides": { + "name": "Fetch", + "symbol": "FET" + } + }, + "base": { + "address": "0x74F804B4140ee70830B3Eef4e690325841575F89", + "overrides": { + "name": "Fetch", + "symbol": "FET" + } + } + } +} \ No newline at end of file diff --git a/data/ASI/logo.svg b/data/ASI/logo.svg new file mode 100644 index 000000000..aa2070fd7 --- /dev/null +++ b/data/ASI/logo.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/data/TRB/data.json b/data/TRB/data.json index fb7c0969f..4f6d03e02 100644 --- a/data/TRB/data.json +++ b/data/TRB/data.json @@ -8,6 +8,9 @@ }, "optimism": { "address": "0xaf8ca653fa2772d58f4368b0a71980e9e3ceb888" + }, + "base": { + "address": "0xF8e9E61FFB2b491f7DF29823a76009743671CD96" } } - } \ No newline at end of file + } diff --git a/data/TRUE/data.json b/data/TRUE/data.json new file mode 100644 index 000000000..2eeb48976 --- /dev/null +++ b/data/TRUE/data.json @@ -0,0 +1,15 @@ +{ + "name": "True", + "symbol": "TRUE", + "decimals": 18, + "website": "https://truemarkets.org", + "twitter": "@TrueMarketsOrg", + "tokens": { + "sepolia": { + "address": "0x90C9155EC3c2C4aD624Db896864fC62eb3D62626" + }, + "base-sepolia": { + "address": "0xFe8b6A4586A67160D27962dC153Bf0E7e76fBf68" + } + } +} diff --git a/data/TRUE/logo.svg b/data/TRUE/logo.svg new file mode 100644 index 000000000..9e24925c9 --- /dev/null +++ b/data/TRUE/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/data/UP/data.json b/data/UP/data.json new file mode 100644 index 000000000..e66bd5ca8 --- /dev/null +++ b/data/UP/data.json @@ -0,0 +1,14 @@ +{ + "name": "UnlockProtocolToken", + "symbol": "UP", + "decimals": 18, + "description": "The Unlock Protocol UP token (UP) is the governance token of the Unlock Protocol, used for rewarding developers and creators, as well as for participating in governance through voting on proposals. It can be acquired by swapping UDT, purchasing it on decentralized exchanges, or earning it via protocol rewards and grants.", + "website": "https://unlock-protocol.com", + "twitter": "@unlockprotocol", + "nobridge": true, + "tokens": { + "base": { + "address": "0xac27fa800955849d6d17cc8952ba9dd6eaa66187" + } + } +} diff --git a/data/UP/logo.svg b/data/UP/logo.svg new file mode 100644 index 000000000..eb7651530 --- /dev/null +++ b/data/UP/logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/optimism.tokenlist.json b/optimism.tokenlist.json index fb8a55fd2..6c91d2dd6 100644 --- a/optimism.tokenlist.json +++ b/optimism.tokenlist.json @@ -6,7 +6,7 @@ "layer2", "infrastructure" ], - "timestamp": "2024-09-18T02:40:07.859Z", + "timestamp": "2024-09-21T01:50:17.258Z", "tokens": [ { "chainId": 1, @@ -410,6 +410,32 @@ "opTokenId": "ARPA" } }, + { + "chainId": 1, + "address": "0xaea46A60368A7bD060eec7DF8CBa43b7EF41Ad85", + "name": "Fetch", + "symbol": "FET", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ASI/logo.svg", + "extensions": { + "baseBridgeAddress": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", + "opListId": "extended", + "opTokenId": "ASI" + } + }, + { + "chainId": 8453, + "address": "0x74F804B4140ee70830B3Eef4e690325841575F89", + "name": "Fetch", + "symbol": "FET", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/ASI/logo.svg", + "extensions": { + "baseBridgeAddress": "0x4200000000000000000000000000000000000010", + "opListId": "extended", + "opTokenId": "ASI" + } + }, { "chainId": 1, "address": "0xA4fFdf3208F46898CE063e25c1C43056FA754739", @@ -7626,6 +7652,7 @@ "logoURI": "https://ethereum-optimism.github.io/data/TRB/logo.png", "extensions": { "optimismBridgeAddress": "0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1", + "baseBridgeAddress": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35", "opListId": "extended", "opTokenId": "TRB" } @@ -7643,6 +7670,45 @@ "opTokenId": "TRB" } }, + { + "chainId": 8453, + "address": "0xF8e9E61FFB2b491f7DF29823a76009743671CD96", + "name": "Tellor", + "symbol": "TRB", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TRB/logo.png", + "extensions": { + "baseBridgeAddress": "0x4200000000000000000000000000000000000010", + "opListId": "extended", + "opTokenId": "TRB" + } + }, + { + "chainId": 11155111, + "address": "0x90C9155EC3c2C4aD624Db896864fC62eb3D62626", + "name": "True", + "symbol": "TRUE", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TRUE/logo.svg", + "extensions": { + "baseBridgeAddress": "0xfd0Bf71F60660E2f608ed56e1659C450eB113120", + "opListId": "extended", + "opTokenId": "TRUE" + } + }, + { + "chainId": 84532, + "address": "0xFe8b6A4586A67160D27962dC153Bf0E7e76fBf68", + "name": "True", + "symbol": "TRUE", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/TRUE/logo.svg", + "extensions": { + "baseBridgeAddress": "0x4200000000000000000000000000000000000010", + "opListId": "extended", + "opTokenId": "TRUE" + } + }, { "chainId": 1, "address": "0x50327c6c5a14DCaDE707ABad2E27eB517df87AB5", @@ -7997,6 +8063,18 @@ "opTokenId": "UNI" } }, + { + "chainId": 8453, + "address": "0xac27fa800955849d6d17cc8952ba9dd6eaa66187", + "name": "UnlockProtocolToken", + "symbol": "UP", + "decimals": 18, + "logoURI": "https://ethereum-optimism.github.io/data/UP/logo.svg", + "extensions": { + "opListId": "extended", + "opTokenId": "UP" + } + }, { "chainId": 1, "address": "0x38547D918b9645F2D94336B6b61AEB08053E142c", @@ -9401,6 +9479,6 @@ "version": { "major": 10, "minor": 0, - "patch": 126 + "patch": 131 } } \ No newline at end of file diff --git a/package.json b/package.json index c781f4639..3855215b8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@eth-optimism/tokenlist", "description": "[Optimism] token list", - "version": "10.0.126", + "version": "10.0.131", "main": "dist/index.js", "module": "dist/index.mjs", "exports": { diff --git a/src/chains.ts b/src/chains.ts index 8e857a394..7e40ee67b 100644 --- a/src/chains.ts +++ b/src/chains.ts @@ -59,6 +59,14 @@ export const NETWORK_DATA: Record = { ), layer: 2 }, + 'metall2': { + id: 1750, + name: 'Metal L2', + provider: new ethers.providers.StaticJsonRpcProvider( + 'https://rpc.metall2.com' + ), + layer: 2 + }, sepolia: { id: 11155111, name: 'Sepolia', @@ -101,6 +109,14 @@ export const NETWORK_DATA: Record = { ), layer: 2, }, + 'metall2-sepolia': { + id: 1740, + name: 'Metal L2 Sepolia', + provider: new ethers.providers.StaticJsonRpcProvider( + 'https://testnet.rpc.metall2.com' + ), + layer: 2, + }, } interface L2BridgeInformation { @@ -134,6 +150,9 @@ export const L2_STANDARD_BRIDGE_INFORMATION: Record< 'redstone': { l2StandardBridgeAddress: '0x4200000000000000000000000000000000000010' }, + 'metall2': { + l2StandardBridgeAddress: '0x4200000000000000000000000000000000000010', + }, 'optimism-sepolia': { l2StandardBridgeAddress: '0x4200000000000000000000000000000000000010', }, @@ -146,6 +165,9 @@ export const L2_STANDARD_BRIDGE_INFORMATION: Record< 'lisk-sepolia': { l2StandardBridgeAddress: '0x4200000000000000000000000000000000000010', }, + 'metall2-sepolia': { + l2StandardBridgeAddress: '0x4200000000000000000000000000000000000010', + }, } export const L2_TO_L1_PAIR: Partial> = { @@ -155,10 +177,12 @@ export const L2_TO_L1_PAIR: Partial> = { mode: 'ethereum', lisk: 'ethereum', redstone: 'ethereum', + metall2: 'ethereum', 'optimism-sepolia': 'sepolia', 'base-sepolia': 'sepolia', 'pgn-sepolia': 'sepolia', 'lisk-sepolia': 'sepolia', + 'metall2-sepolia': 'sepolia', } export const L1_STANDARD_BRIDGE_INFORMATION: Record< @@ -190,6 +214,10 @@ export const L1_STANDARD_BRIDGE_INFORMATION: Record< l2Chain: 'redstone', l1StandardBridgeAddress: '0xc473ca7E02af24c129c2eEf51F2aDf0411c1Df69', }, + { + l2Chain: 'metall2', + l1StandardBridgeAddress: '0x6d0f65D59b55B0FEC5d2d15365154DcADC140BF3', + }, ], sepolia: [ { @@ -208,5 +236,9 @@ export const L1_STANDARD_BRIDGE_INFORMATION: Record< l2Chain: 'lisk-sepolia', l1StandardBridgeAddress: '0x1Fb30e446eA791cd1f011675E5F3f5311b70faF5', }, + { + l2Chain: 'metall2-sepolia', + l1StandardBridgeAddress: '0x21530aAdF4DCFb9c477171400E40d4ef615868BE', + }, ], } diff --git a/src/schemas.ts b/src/schemas.ts index 885f043cc..1d6c8fe69 100644 --- a/src/schemas.ts +++ b/src/schemas.ts @@ -66,10 +66,12 @@ export const TOKEN_DATA_SCHEMA = { mode: TOKEN_SCHEMA, pgn: TOKEN_SCHEMA, redstone: TOKEN_SCHEMA, + metall2: TOKEN_SCHEMA, sepolia: TOKEN_SCHEMA, 'base-sepolia': TOKEN_SCHEMA, 'optimism-sepolia': TOKEN_SCHEMA, 'lisk-sepolia': TOKEN_SCHEMA, + 'metall2-sepolia': TOKEN_SCHEMA, }, additionalProperties: false, anyOf: [ @@ -80,10 +82,12 @@ export const TOKEN_DATA_SCHEMA = { { required: ['pgn'] }, { required: ['lisk'] }, { required: ['redstone'] }, + { required: ['metall2'] }, { required: ['sepolia'] }, { required: ['base-sepolia'] }, { required: ['optimism-sepolia'] }, { required: ['lisk-sepolia'] }, + { required: ['metall2-sepolia'] }, ], }, }, diff --git a/src/types.ts b/src/types.ts index 38b61d127..dd00f8fbb 100644 --- a/src/types.ts +++ b/src/types.ts @@ -32,6 +32,8 @@ export type Chain = | 'lisk' | 'lisk-sepolia' | 'redstone' + | 'metall2' + | 'metall2-sepolia' const l2Chains = [ 'optimism', @@ -43,7 +45,9 @@ const l2Chains = [ 'mode', 'lisk', 'lisk-sepolia', - 'redstone' + 'redstone', + 'metall2', + 'metall2-sepolia' ] as const export type L2Chain = typeof l2Chains[number]