forked from yieldprotocol/vault-v2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy-celo.sh
More file actions
executable file
·143 lines (127 loc) · 4.52 KB
/
deploy-celo.sh
File metadata and controls
executable file
·143 lines (127 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/bin/bash
# Deployment script for Yield Protocol V2 on Celo
# Configuration:
# - Base (borrow/lend): KESm
# - Collateral: USDT
# - Oracle: Mento (returns KESm per USDT)
# Run this after setting up your .env file
set -e # Exit on error
echo "========================================"
echo "Yield Protocol V2 - Celo Deployment"
echo "Base Asset: KESm (borrow/lend)"
echo "Collateral: USDT"
echo "========================================"
echo ""
# Load environment variables
if [ ! -f .env ]; then
echo "Error: .env file not found!"
echo "Please create .env from .env.example and configure it."
exit 1
fi
source .env
if [ -z "$PRIVATE_KEY" ]; then
echo "Error: PRIVATE_KEY not set in .env"
exit 1
fi
if [ -z "$CELO_RPC" ]; then
echo "Error: CELO_RPC not set in .env"
exit 1
fi
echo "Using RPC: $CELO_RPC"
echo ""
# Addresses
WCELO="0x471EcE3750Da237f93B8E339c536989b8978a438"
KESM="0x456a3D042C0DbD3db53D5489e98dFb038553B0d0"
USDT="0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e"
MENTO_SORTED_ORACLES="0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33"
USDT_USD_FEED="0x5e37AF40A7A344ec9b03CCD34a250F3dA9a20B02"
echo "Step 1: Deploying Cauldron..."
CAULDRON_ADDRESS=$(forge create src/Cauldron.sol:Cauldron \
--rpc-url $CELO_RPC \
--private-key $PRIVATE_KEY \
--json | jq -r '.deployedTo')
echo "Cauldron deployed at: $CAULDRON_ADDRESS"
echo ""
echo "Step 2: Deploying Ladle..."
LADLE_ADDRESS=$(forge create src/Ladle.sol:Ladle \
--rpc-url $CELO_RPC \
--private-key $PRIVATE_KEY \
--constructor-args $CAULDRON_ADDRESS $WCELO \
--json | jq -r '.deployedTo')
echo "Ladle deployed at: $LADLE_ADDRESS"
echo ""
echo "Step 3: Deploying Witch..."
WITCH_ADDRESS=$(forge create src/Witch.sol:Witch \
--rpc-url $CELO_RPC \
--private-key $PRIVATE_KEY \
--constructor-args $CAULDRON_ADDRESS $LADLE_ADDRESS \
--json | jq -r '.deployedTo')
echo "Witch deployed at: $WITCH_ADDRESS"
echo ""
echo "Step 4: Deploying MentoSpotOracle..."
MENTO_ORACLE_ADDRESS=$(forge create src/oracles/mento/MentoSpotOracle.sol:MentoSpotOracle \
--rpc-url $CELO_RPC \
--private-key $PRIVATE_KEY \
--constructor-args $MENTO_SORTED_ORACLES $USDT_USD_FEED \
--json | jq -r '.deployedTo')
echo "MentoSpotOracle deployed at: $MENTO_ORACLE_ADDRESS"
echo ""
echo "Step 5: Deploying ChainlinkMultiOracle..."
CHAINLINK_ORACLE_ADDRESS=$(forge create src/oracles/chainlink/ChainlinkMultiOracle.sol:ChainlinkMultiOracle \
--rpc-url $CELO_RPC \
--private-key $PRIVATE_KEY \
--json | jq -r '.deployedTo')
echo "ChainlinkMultiOracle deployed at: $CHAINLINK_ORACLE_ADDRESS"
echo ""
echo "Step 6: Deploying Join contracts..."
echo " 6a. Deploying KESm Join (base asset)..."
KESM_JOIN_ADDRESS=$(forge create src/Join.sol:Join \
--rpc-url $CELO_RPC \
--private-key $PRIVATE_KEY \
--constructor-args $KESM \
--json | jq -r '.deployedTo')
echo " KESm Join (BASE) deployed at: $KESM_JOIN_ADDRESS"
echo " 6b. Deploying USDT Join (collateral)..."
USDT_JOIN_ADDRESS=$(forge create src/Join.sol:Join \
--rpc-url $CELO_RPC \
--private-key $PRIVATE_KEY \
--constructor-args $USDT \
--json | jq -r '.deployedTo')
echo " USDT Join (COLLATERAL) deployed at: $USDT_JOIN_ADDRESS"
echo ""
echo "========================================"
echo "DEPLOYMENT COMPLETE!"
echo "========================================"
echo ""
echo "Deployed Addresses:"
echo "Core Contracts:"
echo " Cauldron: $CAULDRON_ADDRESS"
echo " Ladle: $LADLE_ADDRESS"
echo " Witch: $WITCH_ADDRESS"
echo ""
echo "Oracles:"
echo " MentoSpotOracle (KESm/USDT): $MENTO_ORACLE_ADDRESS"
echo ""
echo "Join Contracts:"
echo " KESm Join (BASE): $KESM_JOIN_ADDRESS"
echo " USDT Join (COLLATERAL): $USDT_JOIN_ADDRESS"
echo ""
echo "Configuration:"
echo " Base Asset: KESm (what you borrow/lend)"
echo " Collateral: USDT (what backs your borrows)"
echo " Oracle Direction: KESm per USDT (1e18)"
echo ""
echo "Add these to your .env file:"
echo "CAULDRON_ADDRESS=$CAULDRON_ADDRESS"
echo "LADLE_ADDRESS=$LADLE_ADDRESS"
echo "WITCH_ADDRESS=$WITCH_ADDRESS"
echo "MENTO_ORACLE_ADDRESS=$MENTO_ORACLE_ADDRESS"
echo "CHAINLINK_ORACLE_ADDRESS=$CHAINLINK_ORACLE_ADDRESS"
echo "KESM_JOIN_ADDRESS=$KESM_JOIN_ADDRESS"
echo "USDT_JOIN_ADDRESS=$USDT_JOIN_ADDRESS"
echo ""
echo "Next Steps:"
echo "1. Verify oracle is working: cast call $MENTO_ORACLE_ADDRESS 'peek(bytes32,bytes32,uint256)' ..."
echo "2. Deploy fyToken series (fyKESm) with maturity dates"
echo "3. Add series to Cauldron and enable USDT as approved collateral (ilk)"
echo "4. Test vault creation and borrowing on testnet first!"