Skip to content

FraxFinance/frax-oft-upgradeable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Frax Finance <> LayerZero OFTs

This repository contains all of the contracts and deployment code used to manage and operate Frax Protocol's LayerZero OFT network.

Contracts & Addresses

Admin

Proxy (upgradeable) OFTs

  • Chain: Mode, Sei, X-Layer, Ink, Sonic, Arbitrum, Optimism, Polygon, BSC, Avalanche, Polygon zkEvm, Blast, Berachain, Worldchain, Unichain, Plume, Katana, Aurora, Hyperliquid, Stable
    • OFTs
      • frxUSD: 0x80Eede496655FB9047dd39d9f418d5483ED600df
      • sfrxUSD: 0x5Bff88cA1442c2496f7E475E9e7786383Bc070c0
      • frxETH: 0x43eDD7f3831b08FE70B7555ddD373C8bF65a9050
      • sfrxETH: 0x3Ec3849C33291a9eF4c5dB86De593EB4A37fDe45
      • WFRAX: 0x64445f0aecC51E94aD52d8AC56b7190e764E561a
      • FPI : 0x90581eCa9469D8D7F5D3B60f4715027aDFCf7927
  • Chain: Ethereum
    • OFTs
      • WFRAX: 0x04ACaF8D2865c0714F79da09645C13FD2888977f
  • Chain: Base
    • OFTs
      • frxUSD: 0xe5020A6d073a794B6E7f05678707dE47986Fb0b6
      • sfrxUSD: 0x91A3f8a8d7a881fBDfcfEcd7A2Dc92a46DCfa14e
      • frxETH: 0x7eb8d1E4E2D0C8b9bEDA7a97b305cF49F3eeE8dA
      • sfrxETH: 0x192e0C7Cc9B263D93fa6d472De47bBefe1Fb12bA
      • WFRAX: 0x0CEAC003B0d2479BebeC9f4b2EBAd0a803759bbf
      • FPI : 0xEEdd3A0DDDF977462A97C1F0eBb89C3fbe8D084B
  • Chain: Linea
    • OFTs:
      • frxUSD: 0xC7346783f5e645aa998B106Ef9E7f499528673D8
      • sfrxUSD: 0x592a48c0FB9c7f8BF1701cB0136b90DEa2A5B7B6
      • frxETH: 0xB1aFD04774c02AE84692619448B08BA79F19b1ff
      • sfrxETH: 0x383Eac7CcaA89684b8277cBabC25BCa8b13B7Aa2
      • WFRAX: 0x5217Ab28ECE654Aab2C68efedb6A22739df6C3D5
      • FPI: 0xDaF72Aa849d3C4FAA8A9c8c99f240Cf33dA02fc4
  • Chain: ZkSync,Abstract
    • OFTs:
      • frxUSD: 0xEa77c590Bb36c43ef7139cE649cFBCFD6163170d
      • sfrxUSD: 0x9F87fbb47C33Cd0614E43500b9511018116F79eE
      • frxETH: 0xc7Ab797019156b543B7a3fBF5A99ECDab9eb4440
      • sfrxETH: 0xFD78FD3667DeF2F1097Ed221ec503AE477155394
      • WFRAX: 0xAf01aE13Fb67AD2bb2D76f29A83961069a5F245F
      • FPI: 0x580F2ee1476eDF4B1760bd68f6AaBaD57dec420E
  • Chain: Scroll
    • OFTs:
      • frxUSD: 0x397F939C3b91A74C321ea7129396492bA9Cdce82
      • sfrxUSD: 0xC6B2BE25d65760B826D0C852FD35F364250619c2
      • frxETH: 0x0097Cf8Ee15800d4f80da8A6cE4dF360D9449Ed5
      • sfrxETH: 0x73382eb28F35d80Df8C3fe04A3EED71b1aFce5dE
      • WFRAX: 0x879ba0efe1ab0119fefa745a21585fa205b07907
      • FPI: 0x93cDc5d29293Cb6983f059Fec6e4FFEb656b6a62
  • Chain: Monad
    • OFTs:
      • frxUSD: 0x58e3ee6accd124642ddb5d3f91928816be8d8ed3
      • sfrxUSD: 0x137643f7b2c189173867b3391f6629cab46f0f1a
      • frxETH: 0x288f9d76019469bfeb56bb77d86afa2bf563b75b
      • sfrxETH: 0x3b4cf37a3335f21c945a40088404c715525fcb29
      • WFRAX: 0x29acc7c504665a5ea95344796f784095f0cfcc58
      • FPI: 0xba554f7a47f0792b9fa41a1256d4cf628bb1d028

Contract design

Overall, there are three types of LayerZero contracts that provide liquidity for users upon bridging:

  1. OFT
  • Operates as an ERC20
  • When tokens are sent to the chain, the OFT is minted
  • When tokens are sent from the chain, the OFT is burned
  1. Adapter (aka lockbox)
  • Holds a running balance of a Frax-protocol token
  • When tokens are sent to the chain, the Adapter sends the Frax token from its' balance to the recipient
  • When tokens are sent from the chain, the sender sends the Frax token to the Adapter
  1. Mintable Adapter (aka mint/burn lockbox)
  • Holds no balance of Frax-protocol token
  • When tokens are sent to the chain, the Mintable Adapter mints the Frax token to the recipient
  • When tokens are sent from the chain, the Mintable Adapter burns the Frax token

With the exception of Ethereum and Fraxtal, Frax tokens are represented as an OFT. For Ethereum and Fraxtal, Frax tokens are utilized in the following:

frxUSD

  • Fraxtal (Mintable Adapter): 0x96A394058E2b84A89bac9667B19661Ed003cF5D4
  • Ethereum (Mintable Adapter): 0x566a6442A5A6e9895B9dCA97cC7879D632c6e4B0

sfrxUSD

  • Fraxtal (Mintable Adapter): 0x88Aa7854D3b2dAA5e37E7Ce73A1F39669623a361
  • Ethereum (Mintable Adapter): 0x7311CEA93ccf5f4F7b789eE31eBA5D9B9290E126

frxETH

  • Fraxtal (Mintable Adapter): 0x9aBFE1F8a999B0011ecD6116649AEe8D575F5604
  • Ethereum (Adapter): 0x1c1649A38f4A3c5A0c4a24070f688C525AB7D6E6

sfrxETH

  • Fraxtal (Mintable Adapter): 0x999dfAbe3b1cc2EF66eB032Eea42FeA329bBa168
  • Ethereum (Adapter): 0xbBc424e58ED38dd911309611ae2d7A23014Bd960

WFRAX

  • Fraxtal (Adapter): 0xd86fBBd0c8715d2C1f40e451e5C3514e65E7576A
  • Ethereum (OFT): 0x04ACaF8D2865c0714F79da09645C13FD2888977f

FPI

  • Fraxtal (Mintable Adapter): 0x75c38D46001b0F8108c4136216bd2694982C20FC
  • Ethereum (Mintable Adapter): 0x9033BAD7aA130a2466060A2dA71fAe2219781B4b

Legacy lockboxes

Prior to Upgradeable lockboxes, Frax operated immutable lockboxes on Ethereum. Liquidity can be unlocked via the Stargate UI:

  • LFRAX: 0x909DBdE1eBE906Af95660033e478D59EFe831fED
  • sFRAX: 0xe4796cCB6bB5DE2290C417Ac337F2b66CA2E770E
  • frxETH : 0xF010a7c8877043681D59AD125EbF575633505942
  • sfrxETH: 0x1f55a02A049033E3419a8E2975cF3F572F4e6E9A
  • FRAX: 0x23432452B720C80553458496D4D9d7C5003280d0
  • FPI: 0x6Eca253b102D41B6B69AC815B9CC6bD47eF1979d

Solana

  • Admin: Chain-respective msig
  • frxUSD
    • SPL Token: GzX1ireZDU865FiMaKrdVB1H6AE8LAqWYCg6chrMrfBw
      • As bytes32: 0x5e208a73d5bb1c78e9dbf53badd7299afd6bee9acacdcd4fd668833e53c538ad
  • sfrxUSD
    • SPL Token: DUvWQMyASSkLNJFwsMDA4kwxEvmfaqpPGrvUVKtitX45
      • As bytes32: 0x8602f005ca65b6da46a3c6ce66ecd1d15be911ca650d5f418d369df184b584cf
  • frxETH
    • SPL Token: 5sDrwVNiHMM2jC78hRBH1CtysDQYiNKihubgW2zNu8tf
      • As bytes32: 0x38dd9e11bbf63835dc61d3cbf259f4221f5987ac92982c96609b99634662dfb3
  • sfrxETH
    • SPL Token: 58zpC9acE6F4FBtd88L64NoWHJcmzLsQSy5bjz35Ydgv
      • As bytes32: 0xbf2f1fc27286a43f25b05bd843a74a5478c4246343fa90c1fcb641a1caf46c61
  • WFRAX
    • SPL Token: zZbQjiRg8uSxZaPu996XuviuZeSY6nsaMuutKZQBJga
      • As bytes32: 0x4939035f8dd13d15a9386e28b6705519aa6f488791323466a3c0116a201e51aa
  • FPI
    • SPL Token: 8xKX8CRH9LxriRUNCPittu1jiovyQQr4EonWQjHZjWyH
      • As bytes32: 0xd3cee058686107cc51844f331ee213a33142ab299b5ce473c1cf3a8ddaa721a0

Movement, Aptos

  • Admin: Chain-respective msig
  • frxUSD
    • OFT Package: 0xe067037681385b86d8344e6b7746023604c6ac90ddc997ba3c58396c258ad17b
      • OFT FA: 0xe4354602aa4311f36240dd57f3f3435ffccdbd0cd2963f1a69da39a2dbcd59b5
  • sfrxUSD
    • OFT Package: 0xc9bdfdc965bb7fcdcfa6b45870eab33bfaf8f4e8e3f6b89d3e0203aba634a1c9
      • OFT FA: 0xbf2efbffbbd7083aaf006379d96b866b73bb4eb9684a7504c62feafe670962c2
  • frxETH
    • OFT Package: 0xecb3a766f12981919158fc8ec3b98dd3f8b39a59280e62e80c600cea1b2c0f9c
      • OFT FA: 0x8645126a60d36e138d435a28875a2aeef253bf80aae22bebcd411ad4251f1585
  • sfrxETH
    • OFT Package: 0x28b7264258592031a024ed8e1632090648ec53797c269ac91aa0c9ed94268356
      • OFT FA: 0x80d729c4632bcc6279b7bed2542e01e2cebd34ca9f3f15963c29d1621efc221a
  • FXS (depreacted)
    • OFT Package: 0x687dd7e354df73a46a98cc81cfbf51d46e540560b840591eca9ee054f9a2e34c
      • OFT FA: 0xb5660995134dc2cb90d615928c37b2a67c3e006c88d222b23a455cffb14202b9
  • WFRAX
    • OFT Package: 0x267749b1a80d9d582019e6b0572c1dbc98648e24101b0861395cdbed095ceff2
      • OFT FA: 0x4e4cce8f877d7ad45c896c1823017fe07874f3d8db6e15960eda26e211151300
  • FPI
    • OFT Package: 0xadf0ffffa5ee44a94f0c65be05e701951e65e276419f7460286a139d9403e864
      • OFT FA: 0x15607151cc023512886f5af24d4f77e6e7a5d6fb8a482dfb56b9c4f5c1fca0b2

Testnet

Frax operates a lightweight LZ stack on testnets, replicating the dual-lockbox approach. Below are the following addresses:

Ethereum Sepolia

Fraxtal Testnet

Arbitrum Sepolia

Legacy (non-upgradeable) OFTs

  • Chain: Ethereum, Metis, Blast, Base
  • Chain to convert from native token into OFT: Ethereum
  • Admin: Chain-respective msig
  • OFTs
    • LFRAX: 0x909DBdE1eBE906Af95660033e478D59EFe831fED
    • sFRAX: 0xe4796cCB6bB5DE2290C417Ac337F2b66CA2E770E
    • frxETH : 0xF010a7c8877043681D59AD125EbF575633505942
    • sfrxETH: 0x1f55a02A049033E3419a8E2975cF3F572F4e6E9A
    • FRAX: 0x23432452B720C80553458496D4D9d7C5003280d0
    • FPI: 0x6Eca253b102D41B6B69AC815B9CC6bD47eF1979d

New Chain Deployment

  • Ensure PK_OFT_DEPLOYER and PK_CONFIG_DEPLOYER are the private keys for 0x9C9dD956b413cdBD81690c9394a6B4D22afe6745 and 0x0990be6dB8c785FBbF9deD8bAEc612A10CaE814b, respectively.
  • Modify .env RPC_URL to the new chain RPC
  • Add an item to scripts/L0Config.json:Proxy with the new chain details (incorrect data will cause the script to fail).
  • source .env && forge script scripts/DeployFraxOFTProtocol.s.sol --rpc-url $RPC_URL
  • Verify files created within scripts/txs/{SOURCE_CHAIN_ID}-{DESTINATION_CHAIN_ID}.json are correct peers, config
  • source .env && forge script scripts/DeployFraxOFTProtocol.s.sol --rpc-url $RPC_URL --broadcast
  • Manually verify each contract on the deployed chain (do not need to verify ImplementationMock)
    • Use contracts/flat, Solidity version 0.8.22, Shanghai compiler, 200 optimizer runs
  • Submit each newly crafted json to the respective DESTINATION_CHAIN_ID msig.

Packages

No packages published

Contributors 3

  •  
  •  
  •