mirror of
https://github.com/codex-storage/nim-codex.git
synced 2025-01-10 21:15:59 +00:00
4e8630791a
* Introduces a start method to prover * Moves backend creation into start method * sets up three paths for backend initialization * Extracts backend initialization to backend-factory * Implements loading backend from cli files or previously downloaded local files * Wires up downloading and unzipping * functional implementation * Fixes testprover.nim * Sets up tests for backendfactory * includes libzip-dev * pulls in updated contracts * removes integration cli tests for r1cs, wasm, and zkey file arguments. * Fixes issue where inner-scope values are lost before returning * sets local proof verification for dist-test images * Adds two traces and bumps nim-ethers * Adds separate path for circuit files * Create circuit dir if not exists * fix: make sure requestStorage is mined * fix: correct place to plug confirm * test: fixing contracts tests * Restores gitmodules * restores nim-datastore reference * Sets up downloader exe * sets up tool skeleton * implements getting of circuit hash * Implements downloader tool * sets up test skeleton * Implements test for cirdl * includes testTools in testAll * Cleanup building.md * cleans up previous downloader implementation * cleans up testbackendfactory * moves start of prover into node.nim * Fills in arguments in example command * Initializes backend in prover constructor * Restores tests * Restores tests for cli instructions * Review comments by Dmitriy, part 1 * Quotes path in download instruction. * replaces curl with chronos http session * Moves cirdl build output to 'build' folder. * Fixes chronicles log output * Add cirdl support to the codex Dockerfile Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com> * Add cirdl support to the docker entrypoint Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com> * Add cirdl support to the release workflow Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com> * Disable verify_circuit flag for releases Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com> * Removes backendFactory placeholder type * wip * Replaces zip library with status-im/zippy library (which supports zip and tar) * Updates cirdl to not change circuitdir folder * Switches from zip to tar.gz * Review comments by Dmitriy * updates codex-contracts-eth * Adds testTools to CI * Adds check for access to config.circuitdir * Update fixture circuit zkey * Update matrix to run tools tests on Windows * Adds 'deps' dependency for cirdl * Adjust docker-entrypoint.sh to use CODEX_CIRCUIT_DIR env var * Review comments by Giuliano --------- Signed-off-by: Slava <20563034+veaceslavdoina@users.noreply.github.com> Co-authored-by: Adam Uhlíř <adam@uhlir.dev> Co-authored-by: Veaceslav Doina <20563034+veaceslavdoina@users.noreply.github.com>
71 lines
2.1 KiB
Bash
71 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Environment variables from files
|
|
if [[ -n "${ENV_PATH}" ]]; then
|
|
set -a
|
|
[[ -f "${ENV_PATH}" ]] && source "${ENV_PATH}" || for f in "${ENV_PATH}"/*; do source "$f"; done
|
|
set +a
|
|
fi
|
|
|
|
# Parameters
|
|
if [[ -z "${CODEX_NAT}" ]]; then
|
|
if [[ "${NAT_IP_AUTO}" == "true" && -z "${NAT_PUBLIC_IP_AUTO}" ]]; then
|
|
export CODEX_NAT=$(hostname --ip-address)
|
|
echo "Private: CODEX_NAT=${CODEX_NAT}"
|
|
elif [[ -n "${NAT_PUBLIC_IP_AUTO}" ]]; then
|
|
# Run for 60 seconds if fail
|
|
WAIT=120
|
|
SECONDS=0
|
|
SLEEP=5
|
|
while (( SECONDS < WAIT )); do
|
|
export CODEX_NAT=$(curl -s -f -m 5 "${NAT_PUBLIC_IP_AUTO}")
|
|
# Check if exit code is 0 and returned value is not empty
|
|
if [[ $? -eq 0 && -n "${CODEX_NAT}" ]]; then
|
|
echo "Public: CODEX_NAT=${CODEX_NAT}"
|
|
break
|
|
else
|
|
# Sleep and check again
|
|
echo "Can't get Public IP - Retry in $SLEEP seconds / $((WAIT - SECONDS))"
|
|
sleep $SLEEP
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
|
|
# Stop Codex run if can't get NAT IP when requested
|
|
if [[ "${NAT_IP_AUTO}" == "true" && -z "${CODEX_NAT}" ]]; then
|
|
echo "Can't get Private IP - Stop Codex run"
|
|
exit 1
|
|
elif [[ -n "${NAT_PUBLIC_IP_AUTO}" && -z "${CODEX_NAT}" ]]; then
|
|
echo "Can't get Public IP in $WAIT seconds - Stop Codex run"
|
|
exit 1
|
|
fi
|
|
|
|
# If marketplace is enabled from the testing environment,
|
|
# The file has to be written before Codex starts.
|
|
if [ -n "${PRIV_KEY}" ]; then
|
|
echo ${PRIV_KEY} > "private.key"
|
|
chmod 600 "private.key"
|
|
export CODEX_ETH_PRIVATE_KEY="private.key"
|
|
echo "Private key set"
|
|
fi
|
|
|
|
# Circuit downloader
|
|
# cirdl [circuitPath] [rpcEndpoint] [marketplaceAddress]
|
|
if [[ "$@" == *"prover"* ]]; then
|
|
echo "Run Circuit downloader"
|
|
# Set circuits dir from CODEX_CIRCUIT_DIR variables if set
|
|
if [[ -z "${CODEX_CIRCUIT_DIR}" ]]; then
|
|
export CODEX_CIRCUIT_DIR="${CODEX_DATA_DIR}/circuits"
|
|
fi
|
|
# Download circuits
|
|
mkdir -p "${CODEX_CIRCUIT_DIR}"
|
|
chmod 700 "${CODEX_CIRCUIT_DIR}"
|
|
cirdl "${CODEX_CIRCUIT_DIR}" "${CODEX_ETH_PROVIDER}" "${CODEX_MARKETPLACE_ADDRESS}"
|
|
[[ $? -ne 0 ]] && { echo "Failed to download circuit files"; exit 1; }
|
|
fi
|
|
|
|
# Run
|
|
echo "Run Codex node"
|
|
exec "$@"
|