-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·83 lines (65 loc) · 3.32 KB
/
deploy.sh
File metadata and controls
executable file
·83 lines (65 loc) · 3.32 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
#!/bin/bash
set -e
RPC_URL="${RPC_URL:-http://localhost:8547}"
PRIVATE_KEY="${PRIVATE_KEY:-0xb6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659}"
PROJECT_DIR="/Users/mami/Documents/walnut/stylus-examples/stylus-deep-logic"
echo "=== DEPLOYING DEEP CALCULATOR SYSTEM ==="
# 1. Compile Solidity with Full Debug
mkdir -p contracts/out
solc --via-ir --debug-info ethdebug --ethdebug --ethdebug-runtime --bin --abi --overwrite -o contracts/out contracts/FinalVerifier.sol
# 2. Deploy FinalVerifier
BIN_SOL=$(cat contracts/out/FinalVerifier.bin)
out_sol=$(cast send --rpc-url="$RPC_URL" --private-key="$PRIVATE_KEY" --create "0x${BIN_SOL#0x}" 2>&1)
addr_sol=$(echo "$out_sol" | grep "contractAddress" | awk '{print $2}')
[ -z "$addr_sol" ] && addr_sol=$(echo "$out_sol" | grep "deployedTo" | awk '{print $2}')
echo "FinalVerifier Address: $addr_sol"
# 3. Deploy DeepCalculator
cd "$PROJECT_DIR"
out_c=$(cargo stylus deploy --private-key="${PRIVATE_KEY}" --endpoint="${RPC_URL}" --no-verify 2>&1)
addr_c=$(echo "$out_c" | grep "deployed code at address:" | sed 's/.*deployed code at address: //' | sed 's/\x1b\[[0-9;]*m//g' | tr -d '[:space:]')
echo "DeepCalculator Address: $addr_c"
# 4. Build Debug Dylib (Mac)
cargo build --lib --target aarch64-apple-darwin --features debug
# 5. Set Verifier Address
cast send --rpc-url="$RPC_URL" --private-key="$PRIVATE_KEY" "$addr_c" "setVerifierAddress(address)" "$addr_sol"
# 6. TRIGGER: Internal-only computation (no cross-contract calls)
echo "Triggering internal computation..."
TX_OUTPUT_INTERNAL=$(cast send --rpc-url="$RPC_URL" --private-key="$PRIVATE_KEY" "$addr_c" "compute(uint256)" 42 --gas-limit 8000000 2>&1)
TX_HASH_INTERNAL=$(echo "${TX_OUTPUT_INTERNAL}" | grep "transactionHash" | awk '{print $2}')
[ -z "$TX_HASH_INTERNAL" ] && TX_HASH_INTERNAL=$(echo "${TX_OUTPUT_INTERNAL}" | grep -oE '0x[0-9a-fA-F]{64}' | head -1)
echo "Internal TX Hash: $TX_HASH_INTERNAL"
# 6.1. TRIGGER: Hybrid computation (Stylus + Solidity)
echo "Triggering hybrid computation..."
TX_OUTPUT_HYBRID=$(cast send --rpc-url="$RPC_URL" --private-key="$PRIVATE_KEY" "$addr_c" "computeHybrid(uint256)" 42 --gas-limit 8000000 2>&1)
TX_HASH_HYBRID=$(echo "${TX_OUTPUT_HYBRID}" | grep "transactionHash" | awk '{print $2}')
[ -z "$TX_HASH_HYBRID" ] && TX_HASH_HYBRID=$(echo "${TX_OUTPUT_HYBRID}" | grep -oE '0x[0-9a-fA-F]{64}' | head -1)
echo "Hybrid TX Hash: $TX_HASH_HYBRID"
# 7. Generate Solidity contract mapping
cat > solidity-contracts.json << EOF
{
"contracts": [
{
"address": "$addr_sol",
"environment": "evm",
"name": "FinalVerifier",
"project_path": "$PROJECT_DIR/contracts",
"debug_dir": "out"
}
]
}
EOF
# 8. Generate deployment.env
echo "DEEP_CALCULATOR_ADDR=$addr_c" > deployment.env
echo "FINAL_VERIFIER_ADDR=$addr_sol" >> deployment.env
echo "TX_HASH_INTERNAL=$TX_HASH_INTERNAL" >> deployment.env
echo "TX_HASH_HYBRID=$TX_HASH_HYBRID" >> deployment.env
echo ""
echo "=== READY FOR USERTRACE ==="
echo ""
echo "1) Internal-only trace (no cross-contract):"
echo "cargo stylus usertrace --tx $TX_HASH_INTERNAL --endpoint $RPC_URL --features debug"
echo ""
echo "2) Hybrid trace (Stylus + Solidity):"
echo "cargo stylus usertrace --tx $TX_HASH_HYBRID --endpoint $RPC_URL --features debug \\"
echo " --solidity-contracts ./solidity-contracts.json \\"
echo " --cross-env-bridge http://127.0.0.1:8765"