The root Makefile includes the files in this directory. Keep routine operator
commands here instead of growing a single large Makefile.
make check
make lint
make test
make build
make test-one PACKAGE=deposit-handlermake deploy-all NETWORK=testnet SOURCE=alice
make deploy-contract CONTRACT=reader NETWORK=testnet SOURCE=alice
make deploy-mainnet SOURCE=deployer
make addresses NETWORK=testnetFull deployments write addresses to .deployed/<network>.env.
If that file already exists, make deploy-all stops and prints upgrade commands so
you do not accidentally create a second protocol deployment. To intentionally
redeploy everything, use:
make deploy-force NETWORK=testnet SOURCE=alicedeploy-contract is for standalone debugging. It deploys one Wasm and prints the
new address, but it does not update .deployed/<network>.env or wire the
contract into the protocol graph.
Upgrades are a two-step Soroban flow:
- Upload the new Wasm and get a
BytesN<32>Wasm hash. - Invoke
upgrade --new_wasm_hash <hash>on the existing contract address.
The contract address stays the same. The deployed contract must already expose an
admin-gated upgrade(env, new_wasm_hash) function that calls
env.deployer().update_current_contract_wasm(new_wasm_hash).
make upgrade-contract CONTRACT=deposit_handler NETWORK=testnet SOURCE=alice
make upgrade-all NETWORK=testnet SOURCE=alice
make upload CONTRACT=deposit_handler NETWORK=testnet SOURCE=alice
make upgrade-with-hash CONTRACT_ID=C... WASM_HASH=... NETWORK=testnet SOURCE=aliceupgrade-all upgrades every deployed contract listed in UPGRADE_CONTRACTS.
Every listed contract must already expose the admin-gated upgrade entrypoint.
Use Stellar Asset Contracts for test assets such as test WBTC. A Stellar asset is
identified by CODE:ISSUER, and its SAC gives your contracts a normal SEP-41
token address.
make token-bootstrap CODE=TWBTC TO=alice NETWORK=testnet SOURCE=alice
make token-bootstrap CODE=TUSDC TO=alice NETWORK=testnet SOURCE=alice
make tokens NETWORK=testnetAmounts are raw 7-decimal units for this protocol. For example:
make token-mint CODE=TWBTC TO=alice AMOUNT=100000000 NETWORK=testnet SOURCE=aliceThat mints 10.0000000 TWBTC.
For mainnet, do not use token-bootstrap for real assets. Deploy or look up the
existing SAC for the real Stellar asset and configure markets with that address.
The keeper calls set_prices_simple on the oracle contract before each execution.
All four env vars below are required — the script exits non-zero immediately if
any are unset. There is no placeholder fallback.
export ORACLE=C... # deployed oracle contract address
export TOKEN=C... # token contract address to price
export MIN_PRICE=500000000000000000000000000000000 # FLOAT_PRECISION (10^30) scaled
export MAX_PRICE=500500000000000000000000000000000
make submit-prices NETWORK=testnet SOURCE=aliceSOURCE must be a key that holds the ORDER_KEEPER role in role_store.
Grant the role with:
make grant-keeper KEEPER=alice NETWORK=testnet SOURCE=adminWhere SOURCE (admin) holds the ROLE_ADMIN role and KEEPER is the key being
promoted. Both default to alice so a single-operator testnet setup works
without extra flags.
You can also call the script directly:
ORACLE=C... TOKEN=C... MIN_PRICE=... MAX_PRICE=... \
bash scripts/submit_prices.sh testnet alice