96 lines
2.7 KiB
Bash
96 lines
2.7 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Color definitions
|
||
|
RED='\033[0;31m'
|
||
|
GREEN='\033[0;32m'
|
||
|
YELLOW='\033[1;33m'
|
||
|
BLUE='\033[0;34m'
|
||
|
MAGENTA='\033[0;35m'
|
||
|
CYAN='\033[0;36m'
|
||
|
BOLD='\033[1m'
|
||
|
NC='\033[0m' # No Color
|
||
|
|
||
|
# Function to print colored and formatted messages
|
||
|
print_message() {
|
||
|
local color=$1
|
||
|
local message=$2
|
||
|
echo -e "${color}${BOLD}${message}${NC}"
|
||
|
}
|
||
|
|
||
|
# Function to print section headers
|
||
|
print_header() {
|
||
|
local message=$1
|
||
|
echo -e "\n${MAGENTA}${BOLD}======== $message ========${NC}\n"
|
||
|
}
|
||
|
|
||
|
# Function to print success messages
|
||
|
print_success() {
|
||
|
local message=$1
|
||
|
echo -e "${GREEN}${BOLD}✅ $message${NC}"
|
||
|
}
|
||
|
|
||
|
# Function to print error messages
|
||
|
print_error() {
|
||
|
local message=$1
|
||
|
echo -e "${RED}${BOLD}❌ Error: $message${NC}" >&2
|
||
|
}
|
||
|
|
||
|
# Set up variables
|
||
|
ROOT=${ROOT:-$(git rev-parse --show-toplevel)}
|
||
|
DIR_QUARTZ_APP="$ROOT/apps/transfers"
|
||
|
DIR_QUARTZ_ENCLAVE="$DIR_QUARTZ_APP/enclave"
|
||
|
DIR_QUARTZ_TM_PROVER="$ROOT/utils/tm-prover"
|
||
|
|
||
|
NODE_URL=${NODE_URL:-127.0.0.1:26657}
|
||
|
CMD="neutrond --node http://$NODE_URL"
|
||
|
QUARTZ_PORT="${QUARTZ_PORT:-11090}"
|
||
|
|
||
|
print_header "Quartz Setup and Launch"
|
||
|
print_message $CYAN "QUARTZ_PORT is set to: $QUARTZ_PORT"
|
||
|
|
||
|
print_message $BLUE "Setting trusted hash and height"
|
||
|
CHAIN_STATUS=$($CMD status)
|
||
|
TRUSTED_HASH=$(echo "$CHAIN_STATUS" | jq -r .sync_info.latest_block_hash)
|
||
|
TRUSTED_HEIGHT=$(echo "$CHAIN_STATUS" | jq -r .sync_info.latest_block_height)
|
||
|
print_message $YELLOW "Trusted Hash: $TRUSTED_HASH"
|
||
|
print_message $YELLOW "Trusted Height: $TRUSTED_HEIGHT"
|
||
|
|
||
|
cd "$DIR_QUARTZ_APP"
|
||
|
echo "$TRUSTED_HASH" > trusted.hash
|
||
|
echo "$TRUSTED_HEIGHT" > trusted.height
|
||
|
print_success "Trusted hash and height saved"
|
||
|
|
||
|
if [ -n "$MOCK_SGX" ]; then
|
||
|
print_header "Running in MOCK_SGX mode"
|
||
|
cd $DIR_QUARTZ_ENCLAVE
|
||
|
print_message $BLUE "Running enclave without Gramine..."
|
||
|
./target/release/quartz-app-transfers-enclave --chain-id "test-1" --trusted-height "$TRUSTED_HEIGHT" --trusted-hash "$TRUSTED_HASH"
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
print_header "Configuring Gramine"
|
||
|
cd "$DIR_QUARTZ_ENCLAVE"
|
||
|
|
||
|
print_message $BLUE "Generating private key (if it doesn't exist)"
|
||
|
gramine-sgx-gen-private-key > /dev/null 2>&1 || :
|
||
|
|
||
|
print_message $BLUE "Creating manifest"
|
||
|
gramine-manifest \
|
||
|
-Dlog_level="error" \
|
||
|
-Dhome="$HOME" \
|
||
|
-Darch_libdir="/lib/$(gcc -dumpmachine)" \
|
||
|
-Dra_type="epid" \
|
||
|
-Dra_client_spid="51CAF5A48B450D624AEFE3286D314894" \
|
||
|
-Dra_client_linkable=1 \
|
||
|
-Dquartz_dir="$(pwd)" \
|
||
|
-Dtrusted_height="$TRUSTED_HEIGHT" \
|
||
|
-Dtrusted_hash="$TRUSTED_HASH" \
|
||
|
-Dgramine_port="$QUARTZ_PORT" \
|
||
|
quartz.manifest.template quartz.manifest
|
||
|
|
||
|
print_message $BLUE "Signing manifest"
|
||
|
gramine-sgx-sign --manifest quartz.manifest --output quartz.manifest.sgx
|
||
|
|
||
|
print_header "Starting Gramine"
|
||
|
print_message $GREEN "Running Quartz with Gramine-SGX..."
|
||
|
gramine-sgx ./quartz
|