Skip to content
Open
Binary file not shown.
54 changes: 54 additions & 0 deletions packages/contracts-bedrock/deployments/deployments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Ozean Smart Contract Deployments

## Layer One

### Mainnet

TBD

### Sepolia

#### Contracts:

| **Contract** | **Address** |
|:---:|:---:|
| **USDX** | [0x43bd82D1e29a1bEC03AfD11D5a3252779b8c760c](https://sepolia.etherscan.io/token/0x43bd82d1e29a1bec03afd11d5a3252779b8c760c#code)|
| **USDX Bridge** | [0x084C27a0bE5dF26ed47F00678027A6E76B14a0B4](https://sepolia.etherscan.io/address/0x084c27a0be5df26ed47f00678027a6e76b14a0b4#code)|
| **LGE Staking** | [0xc7c0f3b165dec204f6784c9f8b2b148d694d7a32](https://sepolia.etherscan.io/address/0xc7c0f3b165dec204f6784c9f8b2b148d694d7a32#code)|

#### USDX Bridge Assets/Cap:
| **Asset** | **Address** |**Deposit Cap** |
|:---:|:---:|:---:|
| **USDT** | [0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0](https://sepolia.etherscan.io/address/0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0)| 1_000_000_000_000 |
| **DAI** | [0xFF34B3d4Aee8ddCd6F9AFFFB6Fe49bD371b8a357](https://sepolia.etherscan.io/address/0xFF34B3d4Aee8ddCd6F9AFFFB6Fe49bD371b8a357)| 1_000_000_000_000 |
| **USDC** | [0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8](https://sepolia.etherscan.io/address/0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8)| 1_000_000_000_000 |
| **USDC** | [0x15795aadca3759d7b356DecE036c285b1FBb32aa](https://sepolia.etherscan.io/address/0x15795aadca3759d7b356DecE036c285b1FBb32aa)| 1_000_000_000_000 |

#### LGE Staking Assets/Cap:

| **Asset** | **Address** |**Deposit Cap** |
|:---:|:---:|:---:|
| **wstETH** | [0xB82381A3fBD3FaFA77B3a7bE693342618240067b](https://sepolia.etherscan.io/address/0xB82381A3fBD3FaFA77B3a7bE693342618240067b)| 1_000_000 |
| **WBTC** | [0x29f2D40B0605204364af54EC677bD022dA425d03](https://sepolia.etherscan.io/address/0x29f2D40B0605204364af54EC677bD022dA425d03)| 1_000_000 |
| **USDT** | [0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0](https://sepolia.etherscan.io/address/0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0)| 1_000_000 |
| **DAI** | [0xFF34B3d4Aee8ddCd6F9AFFFB6Fe49bD371b8a357](https://sepolia.etherscan.io/address/0xFF34B3d4Aee8ddCd6F9AFFFB6Fe49bD371b8a357)| 1_000_000 |
| **USDC** | [0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8](https://sepolia.etherscan.io/address/0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8)| 1_000_000 |
| **AAVE** | [0x88541670E55cC00bEEFD87eB59EDd1b7C511AC9a](https://sepolia.etherscan.io/address/0x88541670E55cC00bEEFD87eB59EDd1b7C511AC9a)| 1_000_000 |

[**Aave Faucet**](https://app.aave.com/faucet/)

## Layer Two

### Ozean Mainnet

TBD

### Ozean Poseidon

#### Contracts:

| **Contract** | **Address** |
|:---:|:---:|
| **ozUSD Impl (DEPRECATED)** | [0x9e76FE3E3859A4BF1C30d2DAD7b3C35d8654Eb50](https://ozean-testnet.explorer.caldera.xyz/address/0x9e76FE3E3859A4BF1C30d2DAD7b3C35d8654Eb50)|
| **ozUSD Proxy (DEPRECATED)** | [0x1Ce4888a6dED8d6aE5F5D9ca1CABc758c680950b](https://ozean-testnet.explorer.caldera.xyz/address/0x1Ce4888a6dED8d6aE5F5D9ca1CABc758c680950b)|
| **wozUSD** | [0x2f6807b76c426527C3a5C442E8697f12C554195b](https://ozean-testnet.explorer.caldera.xyz/address/0x2f6807b76c426527C3a5C442E8697f12C554195b)|
94 changes: 94 additions & 0 deletions packages/contracts-bedrock/scripts/ozean/LGEMigrationDeploy.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

import { Script } from "forge-std/Script.sol";
import { LGEMigrationV1 } from "src/L1/LGEMigrationV1.sol";
import "forge-std/console.sol";

contract LGEMigrationDeploy is Script {
LGEMigrationV1 public lgeMigration;
address public hexTrust;
address public l1StandardBridge;
address public l1LidoTokensBridge;
address public usdxBridge;
address public lgeStaking;
address public usdc;
address public wstETH;
address[] public l1Addresses;
address[] public l2Addresses;
address[] public restrictedL2Addresses;

/// @dev Used in testing environment, unnecessary for mainnet deployment
function setUp(
address _hexTrust,
address _l1StandardBridge,
address _l1LidoTokensBridge,
address _usdxBridge,
address _lgeStaking,
address _usdc,
address _wstETH,
address[] memory _l1Addresses,
address[] memory _l2Addresses,
address[] memory _restrictedL2Addresses
) external {
hexTrust = _hexTrust;
l1StandardBridge = _l1StandardBridge;
l1LidoTokensBridge = _l1LidoTokensBridge;
usdxBridge = _usdxBridge;
lgeStaking = _lgeStaking;
usdc = _usdc;
wstETH = _wstETH;
l1Addresses = _l1Addresses;
l2Addresses = _l2Addresses;
restrictedL2Addresses = _restrictedL2Addresses;
}

function run() external broadcast {
require(hexTrust != address(0), "Script: Zero address.");
require(l1StandardBridge != address(0), "Script: Zero address.");
require(l1LidoTokensBridge != address(0), "Script: Zero address.");
require(usdxBridge != address(0), "Script: Zero address.");
require(lgeStaking != address(0), "Script: Zero address.");
require(usdc != address(0), "Script: Zero address.");
require(wstETH != address(0), "Script: Zero address.");

uint256 length = l1Addresses.length;
require(length == l2Addresses.length, "Script: Unequal length.");
for (uint256 i; i < length; i++) {
require(l1Addresses[i] != address(0), "Script: Zero address.");
require(l2Addresses[i] != address(0), "Script: Zero address.");
}

bytes memory deployData = abi.encode(hexTrust,
l1StandardBridge,
l1LidoTokensBridge,
usdxBridge,
lgeStaking,
usdc,
wstETH,
l1Addresses,
l2Addresses,
restrictedL2Addresses
);
console.logBytes(deployData);

lgeMigration = new LGEMigrationV1(
hexTrust,
l1StandardBridge,
l1LidoTokensBridge,
usdxBridge,
lgeStaking,
usdc,
wstETH,
l1Addresses,
l2Addresses,
restrictedL2Addresses
);
}

modifier broadcast() {
vm.startBroadcast(msg.sender);
_;
vm.stopBroadcast();
}
}
54 changes: 54 additions & 0 deletions packages/contracts-bedrock/scripts/ozean/LGEStakingDeploy.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

import { Script } from "forge-std/Script.sol";
import { LGEStaking } from "src/L1/LGEStaking.sol";
import "forge-std/console.sol";

contract LGEStakingDeploy is Script {
LGEStaking public lgeStaking;
address public stETH;
address public wstETH;
address public hexTrust;
address[] public tokens;
uint256[] public depositCaps;

/// @dev Used in testing environment, unnecessary for mainnet deployment
function setUp(
address _hexTrust,
address _stETH,
address _wstETH,
address[] memory _tokens,
uint256[] memory _depositCaps
) external {
hexTrust = _hexTrust;
stETH = _stETH;
wstETH = _wstETH;
tokens = _tokens;
depositCaps = _depositCaps;
}

function run() external broadcast {
require(hexTrust != address(0), "Script: Zero address.");
require(stETH != address(0), "Script: Zero address.");
require(wstETH != address(0), "Script: Zero address.");

uint256 length = tokens.length;
require(length == depositCaps.length, "Script: Unequal length.");
for (uint256 i; i < length; i++) {
require(tokens[i] != address(0), "Script: Zero address.");
require(depositCaps[i] != 0, "Script: Zero address.");
}

bytes memory deployData = abi.encode(hexTrust, stETH, wstETH, tokens, depositCaps);
console.logBytes(deployData);

lgeStaking = new LGEStaking(hexTrust, stETH, wstETH, tokens, depositCaps);
}

modifier broadcast() {
vm.startBroadcast(msg.sender);
_;
vm.stopBroadcast();
}
}
24 changes: 13 additions & 11 deletions packages/contracts-bedrock/scripts/ozean/OzUSDDeploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,25 @@
pragma solidity 0.8.15;

import { Script } from "forge-std/Script.sol";
import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
import { OzUSD } from "src/L2/OzUSD.sol";

contract OzUSDDeploy is Script {
OzUSD public implementation;
TransparentUpgradeableProxy public proxy;
address public admin = makeAddr("admin");
OzUSD public ozUSD;
address public hexTrust;
uint256 public initialSharesAmount = 1e18;

function run() external broadcast {
/// Deploy implementation
implementation = new OzUSD();
function setUp(address _hexTrust) external {
hexTrust = _hexTrust;
}

function run() external payable broadcast {
require(hexTrust != address(0), "Script: Zero address.");
require(initialSharesAmount == 1e18, "Script: Zero amount.");

ozUSD = new OzUSD{value: initialSharesAmount}(hexTrust, initialSharesAmount);

/// Deploy Proxy
proxy = new TransparentUpgradeableProxy{ value: initialSharesAmount }(
address(implementation), admin, abi.encodeWithSignature("initialize(uint256)", initialSharesAmount)
);
require(address(ozUSD).balance == 1e18, "Script: Initial supply.");
require(ozUSD.balanceOf(address(0xdead)) == 1e18, "Script: Initial supply.");
}

modifier broadcast() {
Expand Down
31 changes: 0 additions & 31 deletions packages/contracts-bedrock/scripts/ozean/OzUSDPackage.s.sol

This file was deleted.

20 changes: 16 additions & 4 deletions packages/contracts-bedrock/scripts/ozean/USDXBridgeDeploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import { Script } from "forge-std/Script.sol";
import { OptimismPortal } from "src/L1/OptimismPortal.sol";
import { SystemConfig } from "src/L1/SystemConfig.sol";
import { USDXBridge } from "src/L1/USDXBridge.sol";
import "forge-std/console.sol";

contract USDXBridgeDeploy is Script {
USDXBridge public usdxBridge;

address public hexTrust;
address public usdc;
address public usdt;
Expand All @@ -24,9 +24,7 @@ contract USDXBridgeDeploy is Script {
address _dai,
OptimismPortal _optimismPortal,
SystemConfig _systemConfig
)
external
{
) external {
hexTrust = _hexTrust;
usdc = _usdc;
usdt = _usdt;
Expand All @@ -44,6 +42,20 @@ contract USDXBridgeDeploy is Script {
depositCaps[0] = 1e30;
depositCaps[1] = 1e30;
depositCaps[2] = 1e30;

require(hexTrust != address(0), "Script: Zero address.");
require(address(optimismPortal) != address(0), "Script: Zero address.");
require(address(systemConfig) != address(0), "Script: Zero address.");

uint256 length = stablecoins.length;
require(length == depositCaps.length, "Script: Unequal length.");
for (uint256 i; i < length; i++) {
require(stablecoins[i] != address(0), "Script: Zero address.");
}

bytes memory deployData = abi.encode(hexTrust, optimismPortal, systemConfig, stablecoins, depositCaps);
console.logBytes(deployData);

usdxBridge = new USDXBridge(hexTrust, optimismPortal, systemConfig, stablecoins, depositCaps);
}

Expand Down
Loading