Skip to content

Commit 084762f

Browse files
authored
feat: da verification script (#142)
Created verify-da.sh
1 parent 04297e0 commit 084762f

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

scripts/verify-da.sh

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
#!/bin/bash
2+
3+
PROJECT_ROOT=`git rev-parse --show-toplevel`
4+
5+
# Load env variable from .env only if they're not already set
6+
if [ -z "$STARKNET_KEYSTORE" ] || [ -z "$STARKNET_ACCOUNT" ]; then
7+
source $PROJECT_ROOT/.env
8+
fi
9+
10+
# Check if required env variables are set, if not exit
11+
if [ -z "$STARKNET_KEYSTORE" ]; then
12+
echo "Error: STARKNET_KEYSTORE is not set."
13+
exit 1
14+
elif [ -z "$STARKNET_ACCOUNT" ]; then
15+
echo "Error: STARKNET_ACCOUNT is not set."
16+
exit 1
17+
fi
18+
19+
# Constants
20+
BLOBSTREAMX_STARKNET_ADDRESS="0x04179fb9990b3c7e44de802c4e40c8f395862d79a8c5eaa7340d999a5c1f625d"
21+
MAX_FEE="none"
22+
23+
display_help() {
24+
echo "Usage: $0 [option...]"
25+
echo
26+
echo " -n, --proof-nonce U64 Proof nonce"
27+
echo " (required)"
28+
echo " -r, --data-root DATA_ROOT Data root"
29+
echo " (required)"
30+
echo " -p, --proof BINARY_PROOF Binary merkle proof"
31+
echo " (required)"
32+
33+
echo
34+
echo " -B, --blobstreamx-starknet ADDR BlobstreamX contract address on Starknet"
35+
echo " (default: $BLOBSTREAMX_STARKNET_ADDRESS (SEPOLIA))"
36+
echo " -m, --max-fee ETH Max fee"
37+
echo " (default: estimated automatically)"
38+
39+
echo
40+
echo " -h, --help display help"
41+
echo " -v, --verbose verbose output"
42+
echo
43+
echo "Example: $0 --proof-nonce 123 --data-root <root_value> --proof <proof_value>"
44+
}
45+
46+
# Transform long options to short ones
47+
for arg in "$@"; do
48+
shift
49+
case "$arg" in
50+
"--proof-nonce") set -- "$@" "-n" ;;
51+
"--data-root") set -- "$@" "-r" ;;
52+
"--proof") set -- "$@" "-p" ;;
53+
"--blobstreamx-starknet") set -- "$@" "-B" ;;
54+
"--max-fee") set -- "$@" "-m" ;;
55+
"--help") set -- "$@" "-h" ;;
56+
"--verbose") set -- "$@" "-v" ;;
57+
*) set -- "$@" "$arg"
58+
esac
59+
done
60+
61+
# Parse command line arguments
62+
while getopts ":hvn:r:p:B:m:-:" opt; do
63+
case ${opt} in
64+
h )
65+
display_help
66+
exit 0
67+
;;
68+
v )
69+
VERBOSE=true
70+
;;
71+
n )
72+
PROOF_NONCE="$OPTARG"
73+
;;
74+
r )
75+
DATA_ROOT="$OPTARG"
76+
;;
77+
p )
78+
PROOF="$OPTARG"
79+
;;
80+
B )
81+
BLOBSTREAMX_STARKNET_ADDRESS="$OPTARG"
82+
;;
83+
m )
84+
MAX_FEE="$OPTARG"
85+
;;
86+
\? )
87+
echo "Invalid option: $OPTARG" 1>&2
88+
display_help
89+
exit 1
90+
;;
91+
: )
92+
echo "Invalid option: $OPTARG requires an argument" 1>&2
93+
display_help
94+
exit 1
95+
;;
96+
esac
97+
done
98+
99+
# Check if required options are set, if not exit
100+
if [ -z "$PROOF_NONCE" ] || [ -z "$DATA_ROOT" ] || [ -z "$PROOF" ]; then
101+
echo "Error: missing required options"
102+
display_help
103+
exit 1
104+
fi
105+
106+
if [ "$MAX_FEE" = "none" ]; then
107+
COMMAND="starkli invoke --network sepolia --keystore $STARKNET_KEYSTORE --account $STARKNET_ACCOUNT --watch $BLOBSTREAMX_STARKNET_ADDRESS verify_attestation $PROOF_NONCE $DATA_ROOT $PROOF"
108+
else
109+
COMMAND="starkli invoke --network sepolia --keystore $STARKNET_KEYSTORE --account $STARKNET_ACCOUNT --max-fee $MAX_FEE --watch $BLOBSTREAMX_STARKNET_ADDRESS verify_attestation $PROOF_NONCE $DATA_ROOT $PROOF"
110+
fi
111+
112+
if [ "$VERBOSE" = true ]; then
113+
echo "$COMMAND"
114+
fi
115+
116+
output=$($COMMAND 2>&1)
117+
118+
if [[ $output == *"Error"* ]]; then
119+
echo "Error: $output"
120+
exit 1
121+
fi
122+
123+
tx=$(echo "$output" | grep -oP '0x[0-9a-fA-F]+' | tail -n 1)
124+
125+
echo "Submitted transaction for DA verification at: $tx"

0 commit comments

Comments
 (0)