All checks were successful
Deploy to Phoenix / validate (push) Successful in 1m11s
Deploy to Phoenix / deploy (push) Successful in 43s
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Successful in 1m32s
phoenix-deploy Deployed to cloudflare-sync
Deploy to Phoenix / cloudflare (push) Successful in 38s
100 lines
3.6 KiB
Bash
Executable File
100 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
|
|
|
# shellcheck source=/home/intlc/projects/proxmox/scripts/lib/load-project-env.sh
|
|
source "${PROJECT_ROOT}/scripts/lib/load-project-env.sh"
|
|
|
|
: "${ETHEREUM_MAINNET_RPC:?ETHEREUM_MAINNET_RPC is required}"
|
|
|
|
XAUT="${XAUT_MAINNET:-0x68749665FF8D2d112Fa859AA293F07A622782F38}"
|
|
USDC="${USDC_MAINNET:-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48}"
|
|
CWUSDC="${CWUSDC_MAINNET:-0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a}"
|
|
XAUT_USD_PRICE6="${ENGINE_X_XAUT_USD_PRICE6:-3226640000}"
|
|
LTV_BPS="${ENGINE_X_BORROW_LTV_BPS:-7500}"
|
|
LIQUIDATION_THRESHOLD_BPS="${ENGINE_X_BORROW_LIQUIDATION_THRESHOLD_BPS:-8000}"
|
|
MIN_HEALTH_FACTOR_BPS="${ENGINE_X_BORROW_MIN_HEALTH_FACTOR_BPS:-11000}"
|
|
LIQUIDATION_BONUS_BPS="${ENGINE_X_BORROW_LIQUIDATION_BONUS_BPS:-500}"
|
|
MAX_BORROW_USDC_RAW="${ENGINE_X_BORROW_MAX_USDC_RAW:-0}"
|
|
PRICE_SOURCE_HASH="${ENGINE_X_XAUT_PRICE_SOURCE_HASH:-$(cast keccak "dbis-engine-x:xaut-usd-price6:${XAUT_USD_PRICE6}")}"
|
|
VERIFY="${VERIFY:-1}"
|
|
EXECUTE="${EXECUTE:-0}"
|
|
|
|
OWNER="${ENGINE_X_BORROW_OWNER:-${DEPLOYER_ADDRESS:-}}"
|
|
if [[ -n "${PRIVATE_KEY:-}" ]]; then
|
|
OWNER="$(cast wallet address --private-key "${PRIVATE_KEY}")"
|
|
fi
|
|
|
|
if [[ -z "${OWNER}" ]]; then
|
|
echo "Set PRIVATE_KEY, DEPLOYER_ADDRESS, or ENGINE_X_BORROW_OWNER" >&2
|
|
exit 1
|
|
fi
|
|
if [[ "${EXECUTE}" == "1" && -z "${PRIVATE_KEY:-}" ]]; then
|
|
echo "PRIVATE_KEY is required when EXECUTE=1" >&2
|
|
exit 1
|
|
fi
|
|
|
|
VERIFY_ARGS=()
|
|
if [[ "${VERIFY}" == "1" ]]; then
|
|
VERIFY_ARGS+=(--verify)
|
|
fi
|
|
|
|
CREATE_CMD_EXEC=(
|
|
forge create
|
|
--broadcast
|
|
--rpc-url "${ETHEREUM_MAINNET_RPC}"
|
|
--private-key "${PRIVATE_KEY:-}"
|
|
"${VERIFY_ARGS[@]}"
|
|
contracts/flash/DBISEngineXXautUsdcBorrowVault.sol:DBISEngineXXautUsdcBorrowVault
|
|
--constructor-args
|
|
"${XAUT}" "${USDC}" "${CWUSDC}" "${OWNER}"
|
|
"${XAUT_USD_PRICE6}" "${LTV_BPS}" "${LIQUIDATION_THRESHOLD_BPS}" "${MIN_HEALTH_FACTOR_BPS}"
|
|
"${LIQUIDATION_BONUS_BPS}" "${MAX_BORROW_USDC_RAW}" "${PRICE_SOURCE_HASH}"
|
|
)
|
|
|
|
cat <<EOF
|
|
Engine X XAUt/USDC borrow vault deployment plan
|
|
mode: ${EXECUTE}
|
|
owner: ${OWNER}
|
|
XAUt: ${XAUT}
|
|
USDC: ${USDC}
|
|
cWUSDC proof token: ${CWUSDC}
|
|
XAUt price6: ${XAUT_USD_PRICE6}
|
|
price source hash: ${PRICE_SOURCE_HASH}
|
|
LTV bps: ${LTV_BPS}
|
|
liquidation threshold bps: ${LIQUIDATION_THRESHOLD_BPS}
|
|
min health factor bps: ${MIN_HEALTH_FACTOR_BPS}
|
|
liquidation bonus bps: ${LIQUIDATION_BONUS_BPS}
|
|
max borrow USDC raw: ${MAX_BORROW_USDC_RAW}
|
|
|
|
Boundary:
|
|
The vault lends only pre-funded official USDC. It does not create USDC and it
|
|
does not accept cWUSDC as debt repayment. cWUSDC-sourced repayment proofs still
|
|
settle with actual USDC and only attach public swap/audit/peg hashes.
|
|
EOF
|
|
|
|
if [[ "${EXECUTE}" != "1" ]]; then
|
|
cat <<EOF
|
|
|
|
Dry-run only. Review command:
|
|
cd smom-dbis-138
|
|
forge create --broadcast --rpc-url "\$ETHEREUM_MAINNET_RPC" --private-key "\$PRIVATE_KEY" ${VERIFY_ARGS[*]} contracts/flash/DBISEngineXXautUsdcBorrowVault.sol:DBISEngineXXautUsdcBorrowVault --constructor-args "${XAUT}" "${USDC}" "${CWUSDC}" "${OWNER}" "${XAUT_USD_PRICE6}" "${LTV_BPS}" "${LIQUIDATION_THRESHOLD_BPS}" "${MIN_HEALTH_FACTOR_BPS}" "${LIQUIDATION_BONUS_BPS}" "${MAX_BORROW_USDC_RAW}" "${PRICE_SOURCE_HASH}"
|
|
EOF
|
|
exit 0
|
|
fi
|
|
|
|
pushd "${PROJECT_ROOT}/smom-dbis-138" >/dev/null
|
|
DEPLOY_OUT="$("${CREATE_CMD_EXEC[@]}")"
|
|
popd >/dev/null
|
|
printf '%s\n' "${DEPLOY_OUT}"
|
|
|
|
VAULT="$(printf '%s\n' "${DEPLOY_OUT}" | grep -oE 'Deployed to: 0x[a-fA-F0-9]{40}' | awk '{print $3}' | tail -1)"
|
|
if [[ -z "${VAULT}" ]]; then
|
|
echo "Could not parse deployed borrow vault address" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "DBIS_ENGINE_X_XAUT_USDC_BORROW_VAULT=${VAULT}"
|