Quickstart
Clone, build and test the contracts, then read the live Base Sepolia deployment with cast.
You need Foundry (forge and cast) and network access to a Base Sepolia RPC. The public https://sepolia.base.org works.
1. Clone and build
git clone https://github.com/vorq-ai/vorq-evm-contracts.git
cd vorq-evm-contracts
forge buildDependencies are vendored in lib/; there is no submodule step.
2. Run the tests
The suites run on a fork of Base Sepolia at a pinned block, against the real USDC, so they need an RPC URL. After the first run Foundry serves the fork from its cache.
export BASE_SEPOLIA_RPC_URL=https://sepolia.base.org
forge test --no-match-test test_TheContainerLinkIsCurrenttest_TheContainerLinkIsCurrent reads a vector file from a sibling checkout of vorq-coordinator-node and fails when this repository is cloned alone; every other test is self-contained.
3. Read the live deployment
Set the Base Sepolia addresses from Deployments:
export RPC=https://sepolia.base.org
export JOBS=0x87019B9305D80EBfDC87E2DD80C80F624E05e77d
export PROVIDERS=0xE09698C32e73F86D8227cDB3588fc219d8ce0471
export ASKS=0xBA8eC092e701E4F60536d19443F12E441403743DConfirm you are talking to the right contract. The EIP-712 domain should read VORQ Jobs, version 2, chain id 84532, and the JobRegistry address:
cast call $JOBS "eip712Domain()(bytes1,string,string,uint256,address,bytes32,uint256[])" --rpc-url $RPCRead the current fees and whether the one-hour SLA is allowed:
cast call $JOBS "feeBps()(uint16)" --rpc-url $RPC
cast call $JOBS "gasFee()(uint128)" --rpc-url $RPC
cast call $JOBS "allowedSla(uint32)(bool)" 3600 --rpc-url $RPCRead provider 1 and the size of the model catalog:
cast call $PROVIDERS "isListed(uint32)(bool)" 1 --rpc-url $RPC
cast call $PROVIDERS "reputationOf(uint32)(uint16)" 1 --rpc-url $RPC
cast call $PROVIDERS "effectiveCap(uint32)(uint32)" 1 --rpc-url $RPC
cast call $PROVIDERS "nextModelId()(uint32)" --rpc-url $RPCRead provider 1's quote for model 2 at the 24-hour SLA. 0 0 means no quote is published:
cast call $ASKS "getQuote(uint32,uint32,uint32)(uint128,uint128)" 1 2 86400 --rpc-url $RPCThe same reads, formatted, are available as make targets:
make read-config RPC=$RPC
make read-provider ID=1 RPC=$RPCNext
- Read contract state with cast: jobs, logs and revert reasons.
- Run the local fork to post, claim and settle a job end to end.
- Job lifecycle for what the values you just read mean.