-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdeploy.sh
More file actions
139 lines (114 loc) Β· 4.2 KB
/
deploy.sh
File metadata and controls
139 lines (114 loc) Β· 4.2 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
#!/bin/bash
# DEX Deployment and Testing Script
# This script helps deploy and test the multi-pool DEX system
set -e
echo "π DEX Multi-Pool Deployment Script"
echo "==================================="
# Check if required parameters are provided
if [ $# -lt 2 ]; then
echo "Usage: $0 <RPC_URL> <PRIVATE_KEY> [network_name]"
echo "Example: $0 https://rpc.testnet.example.com 0x123... testnet"
exit 1
fi
RPC_URL=$1
PRIVATE_KEY=$2
NETWORK_NAME=${3:-"custom"}
echo "π Configuration:"
echo "RPC URL: $RPC_URL"
echo "Network: $NETWORK_NAME"
echo "Private Key: ${PRIVATE_KEY:0:10}..."
echo ""
# Build contracts
echo "π¨ Building contracts..."
forge build
if [ $? -ne 0 ]; then
echo "β Build failed!"
exit 1
fi
echo "β
Build successful!"
echo ""
# Deploy contracts and add initial liquidity
echo "π Deploying DEX contracts..."
DEPLOY_OUTPUT=$(forge script script/DeployDEX.s.sol --rpc-url "$RPC_URL" --private-key "$PRIVATE_KEY" --broadcast 2>&1)
if [ $? -ne 0 ]; then
echo "β Deployment failed!"
echo "$DEPLOY_OUTPUT"
exit 1
fi
echo "β
Deployment successful!"
echo ""
# Extract contract addresses from output
echo "π Extracting contract addresses..."
USDK_ADDRESS=$(echo "$DEPLOY_OUTPUT" | grep "USDK Token:" | awk '{print $3}')
KANARI_ADDRESS=$(echo "$DEPLOY_OUTPUT" | grep "KANARI Token:" | awk '{print $3}')
KANARI_USDK_POOL=$(echo "$DEPLOY_OUTPUT" | grep "KANARI/USDK Pool:" | awk '{print $3}')
KANARI_NATIVE_POOL=$(echo "$DEPLOY_OUTPUT" | grep "KANARI/Native Pool:" | awk '{print $3}')
USDK_NATIVE_POOL=$(echo "$DEPLOY_OUTPUT" | grep "USDK/Native Pool:" | awk '{print $3}')
echo "π― Deployed Contract Addresses:"
echo "USDK Token: $USDK_ADDRESS"
echo "KANARI Token: $KANARI_ADDRESS"
echo "KANARI/USDK Pool: $KANARI_USDK_POOL"
echo "KANARI/Native Pool: $KANARI_NATIVE_POOL"
echo "USDK/Native Pool: $USDK_NATIVE_POOL"
echo ""
# Save addresses to file
CONFIG_FILE="deployed_addresses_${NETWORK_NAME}.json"
cat > "$CONFIG_FILE" << EOF
{
"network": "$NETWORK_NAME",
"rpc_url": "$RPC_URL",
"deployed_at": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")",
"contracts": {
"USDK": "$USDK_ADDRESS",
"KANARI": "$KANARI_ADDRESS",
"KANARI_USDK_POOL": "$KANARI_USDK_POOL",
"KANARI_NATIVE_POOL": "$KANARI_NATIVE_POOL",
"USDK_NATIVE_POOL": "$USDK_NATIVE_POOL"
}
}
EOF
echo "πΎ Contract addresses saved to: $CONFIG_FILE"
echo ""
# Update frontend configuration
FRONTEND_CONFIG="from-end/src/lib/contracts.ts"
if [ -f "$FRONTEND_CONFIG" ]; then
echo "π Updating frontend configuration..."
# Create backup
cp "$FRONTEND_CONFIG" "${FRONTEND_CONFIG}.backup"
# Update addresses in the frontend config
sed -i.tmp "s|USDK: \".*\"|USDK: \"$USDK_ADDRESS\"|g" "$FRONTEND_CONFIG"
sed -i.tmp "s|KANARI: \".*\"|KANARI: \"$KANARI_ADDRESS\"|g" "$FRONTEND_CONFIG"
sed -i.tmp "s|KANARI_USDK_POOL: \".*\"|KANARI_USDK_POOL: \"$KANARI_USDK_POOL\"|g" "$FRONTEND_CONFIG"
sed -i.tmp "s|KANARI_NATIVE_POOL: \".*\"|KANARI_NATIVE_POOL: \"$KANARI_NATIVE_POOL\"|g" "$FRONTEND_CONFIG"
sed -i.tmp "s|USDK_NATIVE_POOL: \".*\"|USDK_NATIVE_POOL: \"$USDK_NATIVE_POOL\"|g" "$FRONTEND_CONFIG"
# Clean up temp files
rm -f "${FRONTEND_CONFIG}.tmp"
echo "β
Frontend configuration updated!"
else
echo "β οΈ Frontend configuration not found at: $FRONTEND_CONFIG"
fi
echo ""
# Run basic tests
echo "π§ͺ Running basic tests..."
forge test --match-contract "ConstantProductAMM"
if [ $? -eq 0 ]; then
echo "β
Tests passed!"
else
echo "β οΈ Some tests failed, but deployment was successful"
fi
echo ""
echo "π Deployment Complete!"
echo "======================"
echo ""
echo "π Next Steps:"
echo "1. Update your frontend with the new contract addresses"
echo "2. Test the pools on the deployed network"
echo "3. Add additional liquidity if needed"
echo "4. Monitor pool performance and trading activity"
echo ""
echo "π Useful Commands:"
echo "- Check pool reserves: forge script script/AddLiquidityHelper.s.sol:AddLiquidityHelper --sig 'getPoolInfo()' --rpc-url $RPC_URL"
echo "- Add more liquidity: Update AddLiquidityHelper.s.sol addresses and run deployment"
echo ""
echo "π Configuration saved in: $CONFIG_FILE"
echo "π§ Frontend config: $FRONTEND_CONFIG"