Skip to content

Commit 7edeac2

Browse files
authored
feat: implement monad (#11241)
1 parent 4619aa7 commit 7edeac2

File tree

48 files changed

+881
-191
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+881
-191
lines changed

.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,3 +227,4 @@ VITE_USER_SERVER_URL=https://shapeshiftuser-service-production.up.railway.app
227227
VITE_NOTIFICATIONS_SERVER_URL=https://shapeshiftnotifications-service-production.up.railway.app
228228

229229
VITE_FEATURE_TRON=false
230+
VITE_FEATURE_MONAD=false

.env.development

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL=https://dev-api.arbitrum-nova.shapeshift.c
3131
VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL=wss://dev-api.arbitrum-nova.shapeshift.com
3232
VITE_UNCHAINED_BASE_HTTP_URL=https://dev-api.base.shapeshift.com
3333
VITE_UNCHAINED_BASE_WS_URL=wss://dev-api.base.shapeshift.com
34+
VITE_UNCHAINED_MONAD_HTTP_URL=https://rpc.monad.xyz
35+
VITE_UNCHAINED_MONAD_WS_URL=wss://rpc3.monad.xyz
3436
VITE_UNCHAINED_BITCOIN_HTTP_URL=https://dev-api.bitcoin.shapeshift.com
3537
VITE_UNCHAINED_BITCOIN_WS_URL=wss://dev-api.bitcoin.shapeshift.com
3638
VITE_UNCHAINED_DOGECOIN_WS_URL=wss://dev-api.dogecoin.shapeshift.com
@@ -59,6 +61,7 @@ VITE_GNOSIS_NODE_URL=https://dev-api.gnosis.shapeshift.com/api/v1/jsonrpc
5961
VITE_ARBITRUM_NODE_URL=https://dev-api.arbitrum.shapeshift.com/api/v1/jsonrpc
6062
VITE_ARBITRUM_NOVA_NODE_URL=https://dev-api.arbitrum-nova.shapeshift.com/api/v1/jsonrpc
6163
VITE_BASE_NODE_URL=https://dev-api.base.shapeshift.com/api/v1/jsonrpc
64+
VITE_MONAD_NODE_URL=https://rpc.monad.xyz
6265
# Swap me back to 9R as-needed
6366
# VITE_THORCHAIN_NODE_URL=https://thornode.ninerealms.com
6467
VITE_THORCHAIN_NODE_URL=https://dev-api.thorchain.shapeshift.com/lcd
@@ -86,3 +89,4 @@ VITE_FEATURE_NOTIFICATIONS_WEBSERVICES=true
8689

8790
VITE_FEATURE_WC_DIRECT_CONNECTION=true
8891
VITE_FEATURE_TRON=true
92+
VITE_FEATURE_MONAD=true

.env.production

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL=https://api.arbitrum-nova.shapeshift.com
2727
VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL=wss://api.arbitrum-nova.shapeshift.com
2828
VITE_UNCHAINED_BASE_HTTP_URL=https://api.base.shapeshift.com
2929
VITE_UNCHAINED_BASE_WS_URL=wss://api.base.shapeshift.com
30+
VITE_UNCHAINED_MONAD_HTTP_URL=https://rpc.monad.xyz
31+
VITE_UNCHAINED_MONAD_WS_URL=wss://rpc3.monad.xyz
3032
VITE_UNCHAINED_BITCOIN_HTTP_URL=https://api.bitcoin.shapeshift.com
3133
VITE_UNCHAINED_BITCOIN_WS_URL=wss://api.bitcoin.shapeshift.com
3234
VITE_UNCHAINED_DOGECOIN_WS_URL=wss://api.dogecoin.shapeshift.com
@@ -55,6 +57,7 @@ VITE_GNOSIS_NODE_URL=https://api.gnosis.shapeshift.com/api/v1/jsonrpc
5557
VITE_ARBITRUM_NODE_URL=https://api.arbitrum.shapeshift.com/api/v1/jsonrpc
5658
VITE_ARBITRUM_NOVA_NODE_URL=https://api.arbitrum-nova.shapeshift.com/api/v1/jsonrpc
5759
VITE_BASE_NODE_URL=https://api.base.shapeshift.com/api/v1/jsonrpc
60+
VITE_MONAD_NODE_URL=https://rpc.monad.xyz
5861
VITE_THORCHAIN_NODE_URL=https://api.thorchain.shapeshift.com/lcd
5962
VITE_MAYACHAIN_NODE_URL=https://api.mayachain.shapeshift.com/lcd
6063
VITE_SOLANA_NODE_URL=https://api.solana.shapeshift.com/api/v1/jsonrpc

headers/csps/chains/monad.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { loadEnv } from 'vite'
2+
3+
import type { Csp } from '../../types'
4+
5+
const mode = process.env.MODE ?? process.env.NODE_ENV ?? 'development'
6+
const env = loadEnv(mode, process.cwd(), '')
7+
8+
export const csp: Csp = {
9+
'connect-src': [env.VITE_MONAD_NODE_URL],
10+
}

headers/csps/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { csp as ethereum } from './chains/ethereum'
1616
import { csp as gnosis } from './chains/gnosis'
1717
import { csp as litecoin } from './chains/litecoin'
1818
import { csp as mayachain } from './chains/mayachain'
19+
import { csp as monad } from './chains/monad'
1920
import { csp as optimism } from './chains/optimism'
2021
import { csp as polygon } from './chains/polygon'
2122
import { csp as solana } from './chains/solana'
@@ -102,6 +103,7 @@ export const csps = [
102103
thorchain,
103104
tron,
104105
mayachain,
106+
monad,
105107
trustwallet,
106108
coincap,
107109
exchangeRates,

package.json

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -100,24 +100,24 @@
100100
"@shapeshiftoss/chain-adapters": "workspace:^",
101101
"@shapeshiftoss/contracts": "workspace:^",
102102
"@shapeshiftoss/errors": "workspace:^",
103-
"@shapeshiftoss/hdwallet-coinbase": "1.62.16",
104-
"@shapeshiftoss/hdwallet-core": "1.62.16",
105-
"@shapeshiftoss/hdwallet-gridplus": "1.62.16",
106-
"@shapeshiftoss/hdwallet-keepkey": "1.62.16",
107-
"@shapeshiftoss/hdwallet-keepkey-webusb": "1.62.16",
108-
"@shapeshiftoss/hdwallet-keplr": "1.62.16",
109-
"@shapeshiftoss/hdwallet-ledger": "1.62.16",
110-
"@shapeshiftoss/hdwallet-ledger-webhid": "1.62.16",
111-
"@shapeshiftoss/hdwallet-ledger-webusb": "1.62.16",
112-
"@shapeshiftoss/hdwallet-metamask-multichain": "1.62.16",
113-
"@shapeshiftoss/hdwallet-native": "1.62.16",
114-
"@shapeshiftoss/hdwallet-native-vault": "1.62.16",
115-
"@shapeshiftoss/hdwallet-phantom": "1.62.16",
116-
"@shapeshiftoss/hdwallet-trezor": "1.62.16",
117-
"@shapeshiftoss/hdwallet-trezor-connect": "1.62.16",
118-
"@shapeshiftoss/hdwallet-vultisig": "1.62.16",
119-
"@shapeshiftoss/hdwallet-walletconnect": "1.62.16",
120-
"@shapeshiftoss/hdwallet-walletconnectv2": "1.62.16",
103+
"@shapeshiftoss/hdwallet-coinbase": "1.62.17",
104+
"@shapeshiftoss/hdwallet-core": "1.62.17",
105+
"@shapeshiftoss/hdwallet-gridplus": "1.62.17",
106+
"@shapeshiftoss/hdwallet-keepkey": "1.62.17",
107+
"@shapeshiftoss/hdwallet-keepkey-webusb": "1.62.17",
108+
"@shapeshiftoss/hdwallet-keplr": "1.62.17",
109+
"@shapeshiftoss/hdwallet-ledger": "1.62.17",
110+
"@shapeshiftoss/hdwallet-ledger-webhid": "1.62.17",
111+
"@shapeshiftoss/hdwallet-ledger-webusb": "1.62.17",
112+
"@shapeshiftoss/hdwallet-metamask-multichain": "1.62.17",
113+
"@shapeshiftoss/hdwallet-native": "1.62.17",
114+
"@shapeshiftoss/hdwallet-native-vault": "1.62.17",
115+
"@shapeshiftoss/hdwallet-phantom": "1.62.17",
116+
"@shapeshiftoss/hdwallet-trezor": "1.62.17",
117+
"@shapeshiftoss/hdwallet-trezor-connect": "1.62.17",
118+
"@shapeshiftoss/hdwallet-vultisig": "1.62.17",
119+
"@shapeshiftoss/hdwallet-walletconnect": "1.62.17",
120+
"@shapeshiftoss/hdwallet-walletconnectv2": "1.62.17",
121121
"@shapeshiftoss/swapper": "workspace:^",
122122
"@shapeshiftoss/types": "workspace:^",
123123
"@shapeshiftoss/unchained-client": "workspace:^",
@@ -217,7 +217,7 @@
217217
"use-long-press": "^3.3.0",
218218
"uuid": "^9.0.0",
219219
"vaul": "^1.1.2",
220-
"viem": "^2.10.9",
220+
"viem": "2.40.3",
221221
"wagmi": "^2.9.2",
222222
"web-vitals": "^2.1.4",
223223
"wouter": "^3.6.0"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"eip155:143/slip44:60": "monad"
3+
}

packages/caip/src/adapters/coingecko/generated/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import gnosis from './eip155_100/adapter.json'
1111
import arbitrum from './eip155_42161/adapter.json'
1212
import arbitrumNova from './eip155_42170/adapter.json'
1313
import base from './eip155_8453/adapter.json'
14+
import monad from './eip155_143/adapter.json'
1415
import cosmos from './cosmos_cosmoshub-4/adapter.json'
1516
import thorchain from './cosmos_thorchain-1/adapter.json'
1617
import mayachain from './cosmos_mayachain-mainnet-v1/adapter.json'
@@ -31,6 +32,7 @@ export {
3132
arbitrum,
3233
arbitrumNova,
3334
base,
35+
monad,
3436
cosmos,
3537
thorchain,
3638
mayachain,

packages/caip/src/adapters/coingecko/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
ethChainId,
1717
gnosisChainId,
1818
mayachainChainId,
19+
monadChainId,
1920
optimismChainId,
2021
polygonChainId,
2122
solanaChainId,
@@ -40,6 +41,7 @@ export enum CoingeckoAssetPlatform {
4041
Arbitrum = 'arbitrum-one',
4142
ArbitrumNova = 'arbitrum-nova',
4243
Base = 'base',
44+
Monad = 'monad',
4345
Solana = 'solana',
4446
Tron = 'tron',
4547
}
@@ -90,6 +92,8 @@ export const chainIdToCoingeckoAssetPlatform = (chainId: ChainId): string => {
9092
return CoingeckoAssetPlatform.ArbitrumNova
9193
case CHAIN_REFERENCE.BaseMainnet:
9294
return CoingeckoAssetPlatform.Base
95+
case CHAIN_REFERENCE.MonadMainnet:
96+
return CoingeckoAssetPlatform.Monad
9397
default:
9498
throw new Error(
9599
`chainNamespace ${chainNamespace}, chainReference ${chainReference} not supported.`,
@@ -155,6 +159,8 @@ export const coingeckoAssetPlatformToChainId = (
155159
return arbitrumNovaChainId
156160
case CoingeckoAssetPlatform.Base:
157161
return baseChainId
162+
case CoingeckoAssetPlatform.Monad:
163+
return monadChainId
158164
case CoingeckoAssetPlatform.Cosmos:
159165
return cosmosChainId
160166
case CoingeckoAssetPlatform.Thorchain:

packages/caip/src/constants.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const gnosisAssetId: AssetId = 'eip155:100/slip44:60'
1515
export const arbitrumAssetId: AssetId = 'eip155:42161/slip44:60'
1616
export const arbitrumNovaAssetId: AssetId = 'eip155:42170/slip44:60'
1717
export const baseAssetId: AssetId = 'eip155:8453/slip44:60'
18+
export const monadAssetId: AssetId = 'eip155:143/slip44:60'
1819
export const solAssetId: AssetId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501'
1920
export const wrappedSolAssetId: AssetId =
2021
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:So11111111111111111111111111111111111111112'
@@ -67,6 +68,7 @@ export const gnosisChainId: ChainId = 'eip155:100'
6768
export const arbitrumChainId: ChainId = 'eip155:42161'
6869
export const arbitrumNovaChainId: ChainId = 'eip155:42170'
6970
export const baseChainId: ChainId = 'eip155:8453'
71+
export const monadChainId: ChainId = 'eip155:143'
7072

7173
export const cosmosChainId: ChainId = 'cosmos:cosmoshub-4'
7274
export const thorchainChainId: ChainId = 'cosmos:thorchain-1'
@@ -106,6 +108,7 @@ export const CHAIN_REFERENCE = {
106108
ArbitrumMainnet: '42161', // https://chainlist.org/chain/42161
107109
ArbitrumNovaMainnet: '42170', // https://chainlist.org/chain/42170
108110
BaseMainnet: '8453', // https://chainlist.org/chain/8453
111+
MonadMainnet: '143', // https://docs.monad.xyz/developer-essentials/network-information
109112
SolanaMainnet: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', // https://namespaces.chainagnostic.org/solana/caip2
110113
TronMainnet: '0x2b6653dc', // https://developers.tron.network/docs/networks
111114
} as const
@@ -137,6 +140,7 @@ export const ASSET_REFERENCE = {
137140
Arbitrum: '60', // evm chain which uses ethereum derivation path as common practice
138141
ArbitrumNova: '60', // evm chain which uses ethereum derivation path as common practice
139142
Base: '60', // evm chain which uses ethereum derivation path as common practice
143+
Monad: '60', // evm chain which uses ethereum derivation path as common practice
140144
Solana: '501',
141145
Tron: '195',
142146
} as const
@@ -158,6 +162,7 @@ export const VALID_CHAIN_IDS: ValidChainMap = Object.freeze({
158162
CHAIN_REFERENCE.ArbitrumMainnet,
159163
CHAIN_REFERENCE.ArbitrumNovaMainnet,
160164
CHAIN_REFERENCE.BaseMainnet,
165+
CHAIN_REFERENCE.MonadMainnet,
161166
],
162167
[CHAIN_NAMESPACE.CosmosSdk]: [
163168
CHAIN_REFERENCE.CosmosHubMainnet,
@@ -204,6 +209,7 @@ export const FEE_ASSET_IDS = [
204209
arbitrumAssetId,
205210
arbitrumNovaAssetId,
206211
baseAssetId,
212+
monadAssetId,
207213
solAssetId,
208214
tronAssetId,
209215
]

0 commit comments

Comments
 (0)