diff --git a/backend/api/rest/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json b/backend/api/rest/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json index 4eaf821..8678db0 100644 --- a/backend/api/rest/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json +++ b/backend/api/rest/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json @@ -96,6 +96,15 @@ "compliant" ] }, +{"chainId":138,"address":"0xdf4b71c61E5912712C1Bdd451416B9aC26949d72","name":"Tether EUR (Compliant)","symbol":"cEURT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]}, +{"chainId":138,"address":"0x003960f16D9d34F2e98d62723B6721Fb92074aD2","name":"Pound Sterling (Compliant)","symbol":"cGBPC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]}, +{"chainId":138,"address":"0x350f54e4D23795f86A9c03988c7135357CCaD97c","name":"Tether GBP (Compliant)","symbol":"cGBPT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]}, +{"chainId":138,"address":"0xD51482e567c03899eecE3CAe8a058161FD56069D","name":"Australian Dollar (Compliant)","symbol":"cAUDC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]}, +{"chainId":138,"address":"0xEe269e1226a334182aace90056EE4ee5Cc8A6770","name":"Japanese Yen (Compliant)","symbol":"cJPYC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]}, +{"chainId":138,"address":"0x873990849DDa5117d7C644f0aF24370797C03885","name":"Swiss Franc (Compliant)","symbol":"cCHFC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]}, +{"chainId":138,"address":"0x54dBd40cF05e15906A2C21f600937e96787f5679","name":"Canadian Dollar (Compliant)","symbol":"cCADC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]}, +{"chainId":138,"address":"0x290E52a8819A4fbD0714E517225429aA2B70EC6b","name":"Gold (Compliant)","symbol":"cXAUC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","compliant"]}, +{"chainId":138,"address":"0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E","name":"Tether XAU (Compliant)","symbol":"cXAUT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","compliant"]}, { "chainId": 1, "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", diff --git a/backend/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json b/backend/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json index da411bc..70a8210 100644 --- a/backend/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json +++ b/backend/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json @@ -1 +1 @@ -{"name":"Multi-Chain Token List (Chain 138 + Ethereum + ALL Mainnet + Cronos)","version":{"major":1,"minor":1,"patch":0},"timestamp":"2026-02-28T00:00:00.000Z","logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tokens":[{"chainId":138,"address":"0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6","name":"ETH/USD Price Feed","symbol":"ETH-USD","decimals":8,"logoURI":"https://ipfs.io/ipfs/QmPZuycjyJEe2otREuQ5HirvPJ8X6Yc6MBtwz1VhdD79pY","tags":["oracle","price-feed"]},{"chainId":138,"address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","name":"Wrapped Ether","symbol":"WETH","decimals":18,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","wrapped"]},{"chainId":138,"address":"0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9F","name":"Wrapped Ether v10","symbol":"WETH10","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmanDFPHxnbKd6SSNzzXHf9GbpL9dLXSphxDZSPPYE6ds4","tags":["defi","wrapped"]},{"chainId":138,"address":"0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03","name":"Chainlink Token","symbol":"LINK","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmenWcmfNGfssz4HXvrRV912eZDiKqLTt6z2brRYuTGz9A","tags":["defi","oracle","ccip"]},{"chainId":138,"address":"0x93E66202A11B1772E55407B32B44e5Cd8eda7f22","name":"Compliant Tether USD","symbol":"cUSDT","decimals":6,"logoURI":"https://ipfs.io/ipfs/QmRfhPs9DcyFPpGjKwF6CCoVDWUHSxkQR34n9NK7JSbPCP","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xf22258f57794CC8E06237084b353Ab30fFfa640b","name":"Compliant USD Coin","symbol":"cUSDC","decimals":6,"logoURI":"https://ipfs.io/ipfs/QmNPq4D5JXzurmi9jAhogVMzhAQRk1PZ1r9H3qQUV9gjDm","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x8085961F9cF02b4d800A3c6d386D31da4B34266a","name":"Euro Coin (Compliant)","symbol":"cEURC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":1,"address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","name":"Wrapped Ether","symbol":"WETH","decimals":18,"logoURI":"https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png","tags":["defi","wrapped"]},{"chainId":1,"address":"0xdAC17F958D2ee523a2206206994597C13D831ec7","name":"Tether USD","symbol":"USDT","decimals":6,"logoURI":"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png","tags":["stablecoin","defi"]},{"chainId":1,"address":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","name":"USD Coin","symbol":"USDC","decimals":6,"logoURI":"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png","tags":["stablecoin","defi"]},{"chainId":1,"address":"0x6B175474E89094C44Da98b954EedeAC495271d0F","name":"Dai Stablecoin","symbol":"DAI","decimals":18,"logoURI":"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6B175474E89094C44Da98b954EedeAC495271d0F/logo.png","tags":["stablecoin","defi"]},{"chainId":1,"address":"0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419","name":"ETH/USD Price Feed","symbol":"ETH-USD","decimals":8,"logoURI":"https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png","tags":["oracle","price-feed"]},{"chainId":651940,"address":"0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881","name":"USD Coin","symbol":"USDC","decimals":6,"logoURI":"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png","tags":["stablecoin","defi"]},{"chainId":25,"address":"0x99B3511A2d315A497C8112C1fdd8D508d4B1E506","name":"Wrapped Ether (WETH9)","symbol":"WETH9","decimals":18,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","wrapped"]},{"chainId":25,"address":"0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6","name":"Wrapped Ether v10","symbol":"WETH10","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmanDFPHxnbKd6SSNzzXHf9GbpL9dLXSphxDZSPPYE6ds4","tags":["defi","wrapped"]},{"chainId":25,"address":"0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85","name":"Chainlink Token","symbol":"LINK","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmenWcmfNGfssz4HXvrRV912eZDiKqLTt6z2brRYuTGz9A","tags":["defi","oracle","ccip"]},{"chainId":25,"address":"0x948690147D2e50ffe50C5d38C14125aD6a9FA036","name":"USD W Token","symbol":"USDW","decimals":2,"logoURI":"https://ipfs.io/ipfs/QmNPq4D5JXzurmi9jAhogVMzhAQRk1PZ1r9H3qQUV9gjDm","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd","name":"EUR W Token","symbol":"EURW","decimals":2,"logoURI":"https://ipfs.io/ipfs/QmPh16PY241zNtePyeK7ep1uf1RcARV2ynGAuRU8U7sSqS","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0xFb4B6Cc81211F7d886950158294A44C312abCA29","name":"GBP W Token","symbol":"GBPW","decimals":2,"logoURI":"https://ipfs.io/ipfs/QmT2nJ6WyhYBCsYJ6NfS1BPAqiGKkCEuMxiC8ye93Co1hF","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68","name":"AUD W Token","symbol":"AUDW","decimals":2,"logoURI":"https://ipfs.io/ipfs/Qmb9JmuD9ehaQtTLBBZmAoiAbvE53e3FMjkEty8rvbPf9K","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B","name":"JPY W Token","symbol":"JPYW","decimals":2,"logoURI":"https://ipfs.io/ipfs/Qmb9JmuD9ehaQtTLBBZmAoiAbvE53e3FMjkEty8rvbPf9K","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0xc9750828124D4c10e7a6f4B655cA8487bD3842EB","name":"CHF W Token","symbol":"CHFW","decimals":2,"logoURI":"https://ipfs.io/ipfs/Qmb9JmuD9ehaQtTLBBZmAoiAbvE53e3FMjkEty8rvbPf9K","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0x328Cd365Bb35524297E68ED28c6fF2C9557d1363","name":"CAD W Token","symbol":"CADW","decimals":2,"logoURI":"https://ipfs.io/ipfs/Qmb9JmuD9ehaQtTLBBZmAoiAbvE53e3FMjkEty8rvbPf9K","tags":["stablecoin","iso4217w"]}],"tags":{"defi":{"name":"DeFi","description":"Decentralized Finance tokens"},"wrapped":{"name":"Wrapped","description":"Wrapped tokens representing native assets"},"oracle":{"name":"Oracle","description":"Oracle price feed contracts"},"price-feed":{"name":"Price Feed","description":"Price feed oracle contracts"},"stablecoin":{"name":"Stablecoin","description":"Stable value tokens pegged to fiat"},"compliant":{"name":"Compliant","description":"Regulatory compliant tokens"},"iso4217w":{"name":"ISO4217W","description":"ISO 4217 compliant wrapped fiat tokens"}}} \ No newline at end of file +{"name":"Multi-Chain Token List (Chain 138 + Ethereum + ALL Mainnet + Cronos)","version":{"major":1,"minor":2,"patch":0},"timestamp":"2026-02-28T00:00:00.000Z","logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tokens":[{"chainId":138,"address":"0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6","name":"ETH/USD Price Feed","symbol":"ETH-USD","decimals":8,"logoURI":"https://ipfs.io/ipfs/QmPZuycjyJEe2otREuQ5HirvPJ8X6Yc6MBtwz1VhdD79pY","tags":["oracle","price-feed"]},{"chainId":138,"address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","name":"Wrapped Ether","symbol":"WETH","decimals":18,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","wrapped"]},{"chainId":138,"address":"0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9F","name":"Wrapped Ether v10","symbol":"WETH10","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmanDFPHxnbKd6SSNzzXHf9GbpL9dLXSphxDZSPPYE6ds4","tags":["defi","wrapped"]},{"chainId":138,"address":"0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03","name":"Chainlink Token","symbol":"LINK","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmenWcmfNGfssz4HXvrRV912eZDiKqLTt6z2brRYuTGz9A","tags":["defi","oracle","ccip"]},{"chainId":138,"address":"0x93E66202A11B1772E55407B32B44e5Cd8eda7f22","name":"Compliant Tether USD","symbol":"cUSDT","decimals":6,"logoURI":"https://ipfs.io/ipfs/QmRfhPs9DcyFPpGjKwF6CCoVDWUHSxkQR34n9NK7JSbPCP","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xf22258f57794CC8E06237084b353Ab30fFfa640b","name":"Compliant USD Coin","symbol":"cUSDC","decimals":6,"logoURI":"https://ipfs.io/ipfs/QmNPq4D5JXzurmi9jAhogVMzhAQRk1PZ1r9H3qQUV9gjDm","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x8085961F9cF02b4d800A3c6d386D31da4B34266a","name":"Euro Coin (Compliant)","symbol":"cEURC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xdf4b71c61E5912712C1Bdd451416B9aC26949d72","name":"Tether EUR (Compliant)","symbol":"cEURT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x003960f16D9d34F2e98d62723B6721Fb92074aD2","name":"Pound Sterling (Compliant)","symbol":"cGBPC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x350f54e4D23795f86A9c03988c7135357CCaD97c","name":"Tether GBP (Compliant)","symbol":"cGBPT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xD51482e567c03899eecE3CAe8a058161FD56069D","name":"Australian Dollar (Compliant)","symbol":"cAUDC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0xEe269e1226a334182aace90056EE4ee5Cc8A6770","name":"Japanese Yen (Compliant)","symbol":"cJPYC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x873990849DDa5117d7C644f0aF24370797C03885","name":"Swiss Franc (Compliant)","symbol":"cCHFC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x54dBd40cF05e15906A2C21f600937e96787f5679","name":"Canadian Dollar (Compliant)","symbol":"cCADC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["stablecoin","defi","compliant"]},{"chainId":138,"address":"0x290E52a8819A4fbD0714E517225429aA2B70EC6b","name":"Gold (Compliant)","symbol":"cXAUC","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","compliant"]},{"chainId":138,"address":"0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E","name":"Tether XAU (Compliant)","symbol":"cXAUT","decimals":6,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","compliant"]},{"chainId":1,"address":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","name":"Wrapped Ether","symbol":"WETH","decimals":18,"logoURI":"https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png","tags":["defi","wrapped"]},{"chainId":1,"address":"0xdAC17F958D2ee523a2206206994597C13D831ec7","name":"Tether USD","symbol":"USDT","decimals":6,"logoURI":"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png","tags":["stablecoin","defi"]},{"chainId":1,"address":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","name":"USD Coin","symbol":"USDC","decimals":6,"logoURI":"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png","tags":["stablecoin","defi"]},{"chainId":1,"address":"0x6B175474E89094C44Da98b954EedeAC495271d0F","name":"Dai Stablecoin","symbol":"DAI","decimals":18,"logoURI":"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6B175474E89094C44Da98b954EedeAC495271d0F/logo.png","tags":["stablecoin","defi"]},{"chainId":1,"address":"0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419","name":"ETH/USD Price Feed","symbol":"ETH-USD","decimals":8,"logoURI":"https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png","tags":["oracle","price-feed"]},{"chainId":651940,"address":"0xa95EeD79f84E6A0151eaEb9d441F9Ffd50e8e881","name":"USD Coin","symbol":"USDC","decimals":6,"logoURI":"https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png","tags":["stablecoin","defi"]},{"chainId":25,"address":"0x99B3511A2d315A497C8112C1fdd8D508d4B1E506","name":"Wrapped Ether (WETH9)","symbol":"WETH9","decimals":18,"logoURI":"https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong","tags":["defi","wrapped"]},{"chainId":25,"address":"0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6","name":"Wrapped Ether v10","symbol":"WETH10","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmanDFPHxnbKd6SSNzzXHf9GbpL9dLXSphxDZSPPYE6ds4","tags":["defi","wrapped"]},{"chainId":25,"address":"0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85","name":"Chainlink Token","symbol":"LINK","decimals":18,"logoURI":"https://ipfs.io/ipfs/QmenWcmfNGfssz4HXvrRV912eZDiKqLTt6z2brRYuTGz9A","tags":["defi","oracle","ccip"]},{"chainId":25,"address":"0x948690147D2e50ffe50C5d38C14125aD6a9FA036","name":"USD W Token","symbol":"USDW","decimals":2,"logoURI":"https://ipfs.io/ipfs/QmNPq4D5JXzurmi9jAhogVMzhAQRk1PZ1r9H3qQUV9gjDm","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd","name":"EUR W Token","symbol":"EURW","decimals":2,"logoURI":"https://ipfs.io/ipfs/QmPh16PY241zNtePyeK7ep1uf1RcARV2ynGAuRU8U7sSqS","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0xFb4B6Cc81211F7d886950158294A44C312abCA29","name":"GBP W Token","symbol":"GBPW","decimals":2,"logoURI":"https://ipfs.io/ipfs/QmT2nJ6WyhYBCsYJ6NfS1BPAqiGKkCEuMxiC8ye93Co1hF","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68","name":"AUD W Token","symbol":"AUDW","decimals":2,"logoURI":"https://ipfs.io/ipfs/Qmb9JmuD9ehaQtTLBBZmAoiAbvE53e3FMjkEty8rvbPf9K","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B","name":"JPY W Token","symbol":"JPYW","decimals":2,"logoURI":"https://ipfs.io/ipfs/Qmb9JmuD9ehaQtTLBBZmAoiAbvE53e3FMjkEty8rvbPf9K","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0xc9750828124D4c10e7a6f4B655cA8487bD3842EB","name":"CHF W Token","symbol":"CHFW","decimals":2,"logoURI":"https://ipfs.io/ipfs/Qmb9JmuD9ehaQtTLBBZmAoiAbvE53e3FMjkEty8rvbPf9K","tags":["stablecoin","iso4217w"]},{"chainId":25,"address":"0x328Cd365Bb35524297E68ED28c6fF2C9557d1363","name":"CAD W Token","symbol":"CADW","decimals":2,"logoURI":"https://ipfs.io/ipfs/Qmb9JmuD9ehaQtTLBBZmAoiAbvE53e3FMjkEty8rvbPf9K","tags":["stablecoin","iso4217w"]}],"tags":{"defi":{"name":"DeFi","description":"Decentralized Finance tokens"},"wrapped":{"name":"Wrapped","description":"Wrapped tokens representing native assets"},"oracle":{"name":"Oracle","description":"Oracle price feed contracts"},"price-feed":{"name":"Price Feed","description":"Price feed oracle contracts"},"stablecoin":{"name":"Stablecoin","description":"Stable value tokens pegged to fiat"},"compliant":{"name":"Compliant","description":"Regulatory compliant tokens"},"iso4217w":{"name":"ISO4217W","description":"ISO 4217 compliant wrapped fiat tokens"}}} \ No newline at end of file diff --git a/backend/database/migrations/0014_activity_events.down.sql b/backend/database/migrations/0014_activity_events.down.sql new file mode 100644 index 0000000..fd9ccd1 --- /dev/null +++ b/backend/database/migrations/0014_activity_events.down.sql @@ -0,0 +1,2 @@ +-- Rollback activity_events table +DROP TABLE IF EXISTS activity_events; diff --git a/backend/database/migrations/0014_activity_events.up.sql b/backend/database/migrations/0014_activity_events.up.sql new file mode 100644 index 0000000..d3e8ba5 --- /dev/null +++ b/backend/database/migrations/0014_activity_events.up.sql @@ -0,0 +1,35 @@ +-- Migration: Activity events feed (normalized stream for transfers + app events + bridge stitching) +-- Description: Single table for activity feed; event_type in (TRANSFER, APP_ACTION, CLAIM, BRIDGE_OUT, BRIDGE_IN); +-- routing.path = ALT | CCIP for bridge-aware stitching. See docs/04-configuration/ACTIVITY_FEED_SPEC.md +-- Requires PostgreSQL 13+ (gen_random_uuid() is built-in). + +CREATE TABLE IF NOT EXISTS activity_events ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + chain_id INTEGER NOT NULL, + transaction_hash VARCHAR(66) NOT NULL, + log_index INTEGER NOT NULL DEFAULT 0, + block_number BIGINT NOT NULL, + block_timestamp TIMESTAMP WITH TIME ZONE NOT NULL, + actor VARCHAR(42) NOT NULL, + subject VARCHAR(42), + event_type VARCHAR(32) NOT NULL, + contract_address VARCHAR(42), + data JSONB, + routing JSONB, + created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), + UNIQUE(chain_id, transaction_hash, log_index) +); + +CREATE INDEX idx_activity_events_chain_id ON activity_events(chain_id); +CREATE INDEX idx_activity_events_actor ON activity_events(actor); +CREATE INDEX idx_activity_events_subject ON activity_events(subject); +CREATE INDEX idx_activity_events_event_type ON activity_events(event_type); +CREATE INDEX idx_activity_events_block_timestamp ON activity_events(block_timestamp); +CREATE INDEX idx_activity_events_block_timestamp_id ON activity_events(block_timestamp, id); +CREATE INDEX idx_activity_events_contract ON activity_events(contract_address); +CREATE INDEX idx_activity_events_routing ON activity_events USING GIN (routing); + +COMMENT ON TABLE activity_events IS 'Normalized activity feed: transfers, app events, bridge in/out; routing.path = ALT | CCIP for stitch'; +COMMENT ON COLUMN activity_events.actor IS 'Wallet that initiated the action'; +COMMENT ON COLUMN activity_events.subject IS 'Optional: user/account/tokenId/resource'; +COMMENT ON COLUMN activity_events.routing IS 'Bridge stitching: { path: ALT|CCIP, fromChain, toChain, bridgeTxHash? }'; diff --git a/scripts/fix-nginx-serve-custom-frontend.sh b/scripts/fix-nginx-serve-custom-frontend.sh index d8842a3..39a1976 100755 --- a/scripts/fix-nginx-serve-custom-frontend.sh +++ b/scripts/fix-nginx-serve-custom-frontend.sh @@ -171,7 +171,33 @@ server { add_header Cache-Control "public, immutable"; } - # API endpoint - proxy to Blockscout + # Token-aggregation API at /api/v1/ (Chain 138 Snap: market data, swap quote, bridge). Service runs on port 3001. + location /api/v1/ { + proxy_pass http://127.0.0.1:3001/api/v1/; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 60s; + add_header Access-Control-Allow-Origin *; + } + + # Explorer config API (token list, networks) - serve from /var/www/html/config/ + location = /api/config/token-list { + default_type application/json; + add_header Access-Control-Allow-Origin *; + add_header Cache-Control "public, max-age=3600"; + alias /var/www/html/config/DUAL_CHAIN_TOKEN_LIST.tokenlist.json; + } + location = /api/config/networks { + default_type application/json; + add_header Access-Control-Allow-Origin *; + add_header Cache-Control "public, max-age=3600"; + alias /var/www/html/config/DUAL_CHAIN_NETWORKS.json; + } + + # API endpoint (for Blockscout API) location /api/ { proxy_pass http://127.0.0.1:4000; proxy_http_version 1.1;