diff --git a/pages/frxusd/stake-and-unstake-supported-networks.mdx b/pages/frxusd/stake-and-unstake-supported-networks.mdx index 16d3578..2dea03e 100644 --- a/pages/frxusd/stake-and-unstake-supported-networks.mdx +++ b/pages/frxusd/stake-and-unstake-supported-networks.mdx @@ -30,8 +30,9 @@ The table below provides a comprehensive list of all blockchain networks sfrxUSD | **Polygon zkEVM** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://zkevm.polygonscan.com/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) | | **Sei** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://seitrace.com/token/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) | | **Solana** | [{DUvWQMyASSkLNJFwsMDA4kwxEvmfaqpPGrvUVKtitX45}](https://solscan.io/account/DUvWQMyASSkLNJFwsMDA4kwxEvmfaqpPGrvUVKtitX45) | +| **Somnia** | [{0x00000000fD8C4B8A413A06821456801295921a71}](https://explorer.somnia.network/address/0x00000000fD8C4B8A413A06821456801295921a71) | | **Sonic** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://sonicscan.org/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) | -| **Stable** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://stablescan.xyz/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) | +| **Stable** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://stablescan.xyz/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) | | **Unichain** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://unichain.blockscout.com/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) | | **XLayer** | [{0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0}](https://www.oklink.com/x-layer/address/0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0) | | **zkSync** | [{0x9F87fbb47C33Cd0614E43500b9511018116F79eE}](https://explorer.zksync.io/address/0x9F87fbb47C33Cd0614E43500b9511018116F79eE) | diff --git a/pages/protocol/crosschain/_meta.json b/pages/protocol/crosschain/_meta.json index 2ba1dac..a23ae7c 100644 --- a/pages/protocol/crosschain/_meta.json +++ b/pages/protocol/crosschain/_meta.json @@ -1,5 +1,6 @@ { "overview": "Overview", + "somnia": "Somnia", "tempo": "Tempo (TIP-20)", "addresses": "Addresses", "code": "Code" diff --git a/pages/protocol/crosschain/addresses.mdx b/pages/protocol/crosschain/addresses.mdx index 040b93c..c6ce1ef 100644 --- a/pages/protocol/crosschain/addresses.mdx +++ b/pages/protocol/crosschain/addresses.mdx @@ -47,6 +47,20 @@ Each address of these OFTs is unique: - zkSync Era, Abstract maintain the same addresses across all 6 OFTs. This is due to the ZK compiler. +#### Deterministic Addresses (Somnia and Tempo) + +Somnia and Tempo share the same set of `0x000000...` OFT addresses deployed via deterministic deployment. + +| | Address | Somnia | +| :---------------- | :------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | +| ProxyAdmin | `0x000000dbfaA1Fb91ca46867cE6D41aB6da4f7428` | [`link`](https://explorer.somnia.network/address/0x000000dbfaA1Fb91ca46867cE6D41aB6da4f7428) | +| frxUSD | `0x00000000D61733e7A393A10A5B48c311AbE8f1E5` | [`link`](https://explorer.somnia.network/address/0x00000000D61733e7A393A10A5B48c311AbE8f1E5) | +| sfrxUSD | `0x00000000fD8C4B8A413A06821456801295921a71` | [`link`](https://explorer.somnia.network/address/0x00000000fD8C4B8A413A06821456801295921a71) | +| frxETH | `0x000000008c3930dCA540bB9B3A5D0ee78FcA9A4c` | [`link`](https://explorer.somnia.network/address/0x000000008c3930dCA540bB9B3A5D0ee78FcA9A4c) | +| sfrxETH | `0x00000000883279097A49dB1f2af954EAd0C77E3c` | [`link`](https://explorer.somnia.network/address/0x00000000883279097A49dB1f2af954EAd0C77E3c) | +| WFRAX (prev. FXS) | `0x00000000E9CE0f293D1Ce552768b187eBA8a56D4` | [`link`](https://explorer.somnia.network/address/0x00000000E9CE0f293D1Ce552768b187eBA8a56D4) | +| FPI | `0x00000000bC4aEF4bA6363a437455Cb1af19e2aEb` | [`link`](https://explorer.somnia.network/address/0x00000000bC4aEF4bA6363a437455Cb1af19e2aEb) | + | | Semi-Deterministic | Linea | Scroll | Monad | Base | zkSync | | :---------------- | :------------------------------------------- | :----------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- | :------------------------------------------- | | ProxyAdmin | `0x223a681fc5c5522c85C96157c0efA18cd6c5405c` | [`link`](https://lineascan.build/address/0x3cf371c128b092b085B7732069cEAF3Fd863F270) | [`link`](https://scrollscan.com/address/0x8f1b9c1fd67136d525e14d96efb3887a33f16250) | [`link`](https://monadscan.com/address/0xc2871eae630640ce1a16b39a17c498f22d76c21a) | [`link`](https://basescan.org/address/0xe5020A6d073a794B6E7f05678707dE47986Fb0b6) | `0xe59dcae52a4ffa39be99588486c84bc2dc1ba52f` | @@ -60,6 +74,13 @@ Each address of these OFTs is unique: - Ethereum WFRAX - `0x04ACaF8D2865c0714F79da09645C13FD2888977f` +#### Ethereum Admin + +| Contract | Address | +| :-------------- | :------------------------------------------------------------------------------------------------------------------------ | +| ProxyAdmin | [`0x223a681fc5c5522c85C96157c0efA18cd6c5405c`](https://etherscan.io/address/0x223a681fc5c5522c85C96157c0efA18cd6c5405c) | +| ProxyAdmin owner (Timelock) | [`0xb898Ad2976b4d8f2E21521C9db16b7497825E503`](https://etherscan.io/address/0xb898Ad2976b4d8f2E21521C9db16b7497825E503) | + ### Non-EVM | | Solana | Movement/Aptos | @@ -113,7 +134,39 @@ Each address of these OFTs is unique: | Scroll | [`link`](https://app.safe.global/home?safe=scr:0x73F365d34b81E731825a094c2E722A08574335cd) | | Sei | [`link`](https://sei-safe.protofire.io/home?safe=sei:0x0357D02fc95320b990322d3ff69204c3D251171b) | | Solana | [`link`](https://app.squads.so/squads/FSRTW4KPGifKL8yKcZ8mfoR9mKtAjwZiTHbHwgix8AQo/home) | +| Somnia | [`link`](https://safe.somnia.network/home?safe=somnia:0x9527e19F55d1afCE9F1e9Edcea79552bF41983F9) | | Sonic | [`link`](https://app.safe.global/home?safe=sonic:0x457aEa9180b60a7076a9cf4E2485F266c9E47657) | | Stable | [`link`](https://app.safe.global/home?safe=stable:0x0C46f54BF9EF8fd58e2D294b8cEA488204EcB3D8) | X-Layer | [`link`](https://app.safe.global/home?safe=xlayer:0xe7Cc52f0C86f4FAB6630f1E26167B487fbF66a61) | | zkSync | [`link`](https://app.safe.global/home?safe=zksync:0xd492dF0ce7905D7d91aE48F5e893AcAa38221486) | + +## HopV2 Contracts + +All cross-chain routes relay through the Fraxtal hub. Each remote chain deploys a `RemoteHopV2` contract and a `RemoteAdmin` contract (for Fraxtal-initiated admin operations). + +| Chain | `Hop` | `RemoteAdmin` | +| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------ | +| Fraxtal | [`0x00000000e18aFc20Afe54d4B2C8688bB60c06B36`](https://fraxscan.com/address/0x00000000e18aFc20Afe54d4B2C8688bB60c06B36) | [`0x34029e02821178B4387e12644896994f910D6E73`](https://fraxscan.com/address/0x34029e02821178B4387e12644896994f910D6E73) | +| Abstract | [`0x0000006D38568b00B457580b734e0076C62de659`](https://abscan.org/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x000000000E0E120FCAc7b4d98e9E35E1DE6fdadb`](https://abscan.org/address/0x000000000E0E120FCAc7b4d98e9E35E1DE6fdadb) | +| Arbitrum | [`0x0000006D38568b00B457580b734e0076C62de659`](https://arbiscan.io/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://arbiscan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Aurora | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.aurora.dev/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://explorer.aurora.dev/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Avalanche | [`0x0000006D38568b00B457580b734e0076C62de659`](https://routescan.io/address/0x0000006D38568b00B457580b734e0076C62de659/contract/43114/code) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://routescan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9/contract/43114/code) | +| Base | [`0x0000006D38568b00B457580b734e0076C62de659`](https://basescan.org/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x07dB789aD17573e5169eDEfe14df91CC305715AA`](https://basescan.org/address/0x07dB789aD17573e5169eDEfe14df91CC305715AA) | +| Berachain | [`0x0000006D38568b00B457580b734e0076C62de659`](https://berascan.com/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://berascan.com/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| BSC | [`0x0000006D38568b00B457580b734e0076C62de659`](https://bscscan.com/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://bscscan.com/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Ethereum | [`0x0000006D38568b00B457580b734e0076C62de659`](https://etherscan.io/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x181EBC9deA868ED8e5EeeAef7f767D43BF390dFa`](https://etherscan.io/address/0x181EBC9deA868ED8e5EeeAef7f767D43BF390dFa) | +| Hyperliquid | [`0x0000006D38568b00B457580b734e0076C62de659`](https://hyperevmscan.io/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://hyperevmscan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Ink | [`0x0000006D38568b00B457580b734e0076C62de659`](https://routescan.io/address/0x0000006D38568b00B457580b734e0076C62de659/contract/57073/code) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://routescan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9/contract/57073/code) | +| Katana | [`0x0000006D38568b00B457580b734e0076C62de659`](https://katanascan.com/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://katanascan.com/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Linea | [`0x0000006D38568b00B457580b734e0076C62de659`](https://lineascan.build/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0xfa803b63DaACCa6CD953061BDBa4E3da6b177447`](https://lineascan.build/address/0xfa803b63DaACCa6CD953061BDBa4E3da6b177447) | +| Mode | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.mode.network/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://explorer.mode.network/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Optimism | [`0x0000006D38568b00B457580b734e0076C62de659`](https://optimistic.etherscan.io/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://optimistic.etherscan.io/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Scroll | [`0x0000006D38568b00B457580b734e0076C62de659`](https://scrollscan.com/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x1dE5910A2b0f860A226a8a43148aeA91afbE3d01`](https://scrollscan.com/address/0x1dE5910A2b0f860A226a8a43148aeA91afbE3d01) | +| Sei | [`0x0000006D38568b00B457580b734e0076C62de659`](https://seitrace.com/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://seitrace.com/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Somnia | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.somnia.network/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0xbfCb6F2f811a0DA4D54386458bF888B769EbFc5F`](https://explorer.somnia.network/address/0xbfCb6F2f811a0DA4D54386458bF888B769EbFc5F) | +| Sonic | [`0x0000006D38568b00B457580b734e0076C62de659`](https://sonicscan.org/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://sonicscan.org/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Tempo | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.tempo.xyz/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x05b4a311Aac6658C0FA1e0247Be898aae8a8581f`](https://explorer.tempo.xyz/address/0x05b4a311Aac6658C0FA1e0247Be898aae8a8581f) | +| Unichain | [`0x0000006D38568b00B457580b734e0076C62de659`](https://uniscan.xyz/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://uniscan.xyz/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| Worldchain | [`0x0000006D38568b00B457580b734e0076C62de659`](https://worldscan.org/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://worldscan.org/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| X-Layer | [`0x0000006D38568b00B457580b734e0076C62de659`](https://oklink.com/x-layer/address/0x0000006d38568b00b457580b734e0076c62de659) | [`0x954286118E93df807aB6f99aE0454f8710f0a8B9`](https://oklink.com/x-layer/address/0x954286118E93df807aB6f99aE0454f8710f0a8B9) | +| zkSync | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.zksync.io/address/0x0000006D38568b00B457580b734e0076C62de659) | [`0x000000000E0E120FCAc7b4d98e9E35E1DE6fdadb`](https://explorer.zksync.io/address/0x000000000E0E120FCAc7b4d98e9E35E1DE6fdadb) | diff --git a/pages/protocol/crosschain/overview.mdx b/pages/protocol/crosschain/overview.mdx index baa4515..471748c 100644 --- a/pages/protocol/crosschain/overview.mdx +++ b/pages/protocol/crosschain/overview.mdx @@ -131,6 +131,7 @@ Ethereum WFRAX OFT is also connected via the hub model. This means that bridging - Polygon zkEVM - Scroll - Sei +- Somnia - Sonic - Stable - Unichain @@ -138,6 +139,11 @@ Ethereum WFRAX OFT is also connected via the hub model. This means that bridging - X-Layer - zkSync +Chain-specific integration notes: + +- [Somnia](./somnia) for the deterministic OFT and HopV2 deployment on chain ID `5031` / LayerZero EID `30380` +- [Tempo](./tempo) for TIP-20-specific behavior and stablecoin-denominated gas + ### Process - Bridge through the FUI ([link](https://www.frax.com)) diff --git a/pages/protocol/crosschain/somnia.mdx b/pages/protocol/crosschain/somnia.mdx new file mode 100644 index 0000000..d60eaa8 --- /dev/null +++ b/pages/protocol/crosschain/somnia.mdx @@ -0,0 +1,81 @@ +--- +title: Somnia +lang: en-US +--- + +# Somnia + +Somnia is supported in Frax Mesh as a standard EVM deployment in the Fraxtal hub model. It uses the same deterministic `0x000000...` OFT address set as Tempo, but it does not use Tempo's TIP-20 extensions or stablecoin-denominated gas flow. On Somnia, bridge fees are paid in native gas and routing uses the standard OFT and HopV2 contracts. + +## Network Constants + +| Item | Value | +| :--- | :---- | +| Chain ID | `5031` | +| LayerZero EID | `30380` | +| RPC | `https://api.infra.mainnet.somnia.network` | +| Explorer | [explorer.somnia.network](https://explorer.somnia.network) | +| Admin Safe | [`0x9527e19F55d1afCE9F1e9Edcea79552bF41983F9`](https://safe.somnia.network/home?safe=somnia:0x9527e19F55d1afCE9F1e9Edcea79552bF41983F9) | +| ProxyAdmin | [`0x000000dbfaA1Fb91ca46867cE6D41aB6da4f7428`](https://explorer.somnia.network/address/0x000000dbfaA1Fb91ca46867cE6D41aB6da4f7428) | +| LayerZero Endpoint | [`0x6F475642a6e85809B1c36Fa62763669b1b48DD5B`](https://explorer.somnia.network/address/0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) | + +## Required Contracts + +Somnia is fully wired into the Fraxtal hub with the complete Frax OFT set plus the HopV2 relay contracts. + +| Contract | Address | +| :------- | :------ | +| frxUSD OFT | [`0x00000000D61733e7A393A10A5B48c311AbE8f1E5`](https://explorer.somnia.network/address/0x00000000D61733e7A393A10A5B48c311AbE8f1E5) | +| sfrxUSD OFT | [`0x00000000fD8C4B8A413A06821456801295921a71`](https://explorer.somnia.network/address/0x00000000fD8C4B8A413A06821456801295921a71) | +| frxETH OFT | [`0x000000008c3930dCA540bB9B3A5D0ee78FcA9A4c`](https://explorer.somnia.network/address/0x000000008c3930dCA540bB9B3A5D0ee78FcA9A4c) | +| sfrxETH OFT | [`0x00000000883279097A49dB1f2af954EAd0C77E3c`](https://explorer.somnia.network/address/0x00000000883279097A49dB1f2af954EAd0C77E3c) | +| WFRAX OFT | [`0x00000000E9CE0f293D1Ce552768b187eBA8a56D4`](https://explorer.somnia.network/address/0x00000000E9CE0f293D1Ce552768b187eBA8a56D4) | +| FPI OFT | [`0x00000000bC4aEF4bA6363a437455Cb1af19e2aEb`](https://explorer.somnia.network/address/0x00000000bC4aEF4bA6363a437455Cb1af19e2aEb) | +| RemoteHopV2 | [`0x0000006D38568b00B457580b734e0076C62de659`](https://explorer.somnia.network/address/0x0000006D38568b00B457580b734e0076C62de659) | +| RemoteAdmin | [`0xbfCb6F2f811a0DA4D54386458bF888B769EbFc5F`](https://explorer.somnia.network/address/0xbfCb6F2f811a0DA4D54386458bF888B769EbFc5F) | + +For the complete crosschain address matrix, including Fraxtal lockboxes and all remote Hop contracts, see [Addresses](./addresses). + +## Routing Model + +- Fraxtal is the hub chain for Somnia. +- `Somnia -> Fraxtal` and `Fraxtal -> Somnia` are the direct routes. +- `Somnia -> other EVM chains` relays through Fraxtal with HopV2. +- Somnia uses standard OFT fee quoting and native gas. There is no Somnia-specific TIP-20 fee token path. + +## HopV2 Admin Configuration + +The Somnia deployment in [hop-v2](https://github.com/FraxFinance/hop-v2) includes a dedicated `DeployRemoteHopV2Somnia` script and a Fraxtal-side `SetSomniaExecutorOptions` admin script. + +| Item | Value | +| :--- | :---- | +| Executor | [`0x4208D6E27538189bB48E603D6123A94b8Abe0A0b`](https://explorer.somnia.network/address/0x4208D6E27538189bB48E603D6123A94b8Abe0A0b) | +| DVN | [`0x282b3386571f7f794450d5789911a9804FA346b4`](https://explorer.somnia.network/address/0x282b3386571f7f794450d5789911a9804FA346b4) | +| Send library | [`0xC39161c743D0307EB9BCc9FEF03eeb9Dc4802de7`](https://explorer.somnia.network/address/0xC39161c743D0307EB9BCc9FEF03eeb9Dc4802de7) | +| Required receive gas | `1,000,000` | + +The required Fraxtal-side executor option is `setExecutorOptions(30380, options)` with a `1_000_000` receive gas budget. That is the deployed configuration used for composed Fraxtal to Somnia deliveries. + +## Deployment Coverage + +The canonical Somnia implementation lives in these scripts: + +- [DeployRemoteHopV2Somnia.s.sol](https://github.com/FraxFinance/hop-v2/blob/master/src/script/hop/DeployRemoteHopV2Somnia.s.sol) +- [SetSomniaExecutorOptions.s.sol](https://github.com/FraxFinance/hop-v2/blob/master/src/script/hop/RemoteAdmin/SetSomniaExecutorOptions.s.sol) +- [SetupSourceFraxOFTFraxtalHubSomnia.s.sol](https://github.com/FraxFinance/frax-oft-upgradeable/blob/master/scripts/FraxtalHub/2_SetupSourceFraxOFTFraxtalHub/SetupSourceFraxOFTFraxtalHubSomnia.s.sol) +- [SetupDestinationFraxOFTFraxtalHubSomnia.s.sol](https://github.com/FraxFinance/frax-oft-upgradeable/blob/master/scripts/FraxtalHub/3_SetupDestinationFraxOFTFraxtalHub/SetupDestinationFraxOFTFraxtalHubSomnia.s.sol) +- [SendFraxOFTFraxtalToSomnia.s.sol](https://github.com/FraxFinance/frax-oft-upgradeable/blob/master/scripts/FraxtalHub/4_SendFraxOFTFraxtalHub/SendFraxOFTFraxtalToSomnia.s.sol) +- [SendFraxOFTSomniaToFraxtal.s.sol](https://github.com/FraxFinance/frax-oft-upgradeable/blob/master/scripts/FraxtalHub/4_SendFraxOFTFraxtalHub/SendFraxOFTSomniaToFraxtal.s.sol) + +The OFT setup scripts cover all six deterministic OFTs on Somnia, and the destination setup script narrows the pairing to the required Fraxtal and Somnia configs for hub routing. + +## Verified Routes + +The Frax team has already recorded successful send transactions in both directions: + +| Direction | LayerZeroScan | +| :-------- | :------------ | +| Fraxtal -> Somnia | [tx](https://layerzeroscan.com/tx/0xbaf9be736674326a02b06aff62da434f54551eb62d54fb417140d344a04d0b66) | +| Somnia -> Fraxtal | [tx](https://layerzeroscan.com/tx/0x00f61cabc31c9a35fd2e75e8149ace9dec856091216e8622057ec3f0e8a1441a) | + +That means the required Somnia surface area is in place: deterministic OFTs, HopV2 relay, RemoteAdmin, executor options, and tested Fraxtal hub routes. \ No newline at end of file