Foundry Configuration
The project uses Foundry with:- Solidity: 0.8.24
- EVM target: Cancun
- Optimizer: 200 runs
- Dependencies: OpenZeppelin v5.5.0 (contracts + upgradeable)
Etherscan Verification
Deployment Scripts
V1: Intent Settlers (script/Deploy.s.sol)
Deploys the original intent settlement suite.
Deploy PodiumDestinationSettler
Constructor:
PodiumDestinationSettler(address originSettler, address registry)V2: Task Pool System (script/DeployV2.s.sol)
Deploys the full multi-tenant system with proxy patterns.
USDC
Testnet: deploys MockUSDC. Mainnet: uses canonical address
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.VerificationEngine
Deploy implementation + ERC1967Proxy.
oracleAddress defaults to deployer if AI_ORACLE_ADDRESS is not set.Output
The deploy script logs all addresses:.env for the Podium API server.
Upgrade: Beacon Implementations (script/Upgrade.s.sol)
Upgrades TaskPool and/or RewardPool beacon implementations. All existing tenant pools are upgraded atomically via the beacon pattern.
- Deploys new implementation contract(s)
- Calls
factory.upgradeTaskPool(newImpl)and/orfactory.upgradeRewardPool(newImpl) - All beacon proxies immediately point to the new implementation
Supported Networks
| Network | Chain ID | USDC Address | Purpose |
|---|---|---|---|
| Base Mainnet | 8453 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | Production |
| Base Sepolia | 84532 | MockUSDC (deployed per environment) | Testnet |
| Arc Testnet | 1637450 | 0x3600000000000000000000000000000000000000 | Development |
Base Mainnet (Production)
- Chain ID:
8453 - RPC: Set via
BASE_MAINNET_RPC_URL - Block explorer: basescan.org
- USDC: Circle’s canonical deployment
- Gas token: ETH
Base Sepolia (Testnet)
- Chain ID:
84532 - RPC: Set via
BASE_SEPOLIA_RPC_URL - Block explorer: sepolia.basescan.org
- USDC: MockUSDC deployed by the deploy script
- Gas token: Sepolia ETH (free from faucets)
Arc Testnet (Development)
- USDC is the native gas token (no separate ERC-20)
- USDC address:
0x3600000000000000000000000000000000000000 - Circle SDK targets
ARC-TESTNETblockchain identifier
Environment Variables
Contract Verification
After deployment, verify contracts on Basescan:Mainnet Deployment Checklist
Test on Sepolia
Deploy to Base Sepolia first. Run the full test suite against the testnet deployment.
Prepare multisig
Set up a Gnosis Safe multisig on Base Mainnet for ownership. At least 3 signers with 2/3 threshold recommended.
Test tenant pool creation
Create a test tenant pool via the API to verify the full flow works end-to-end.
Circle SDK Integration
Thecircle-sdk/ directory provides a Node.js/TypeScript integration layer using Circle’s Dev-Controlled Wallets and Smart Contract Platform SDKs, targeting Arc Testnet.
Available Scripts
| Script | Purpose |
|---|---|
generate-entity-secret.ts | Generate Circle entity secret |
register-entity-secret.ts | Register with Circle |
create-wallet.ts | Create dev-controlled wallet |
wallet-balance.ts | Check wallet balance |
deploy-erc20.ts | Deploy ERC-20 template on Arc |
deploy-erc721.ts | Deploy ERC-721 template |
deploy-erc1155.ts | Deploy ERC-1155 template |
deploy-airdrop.ts | Deploy airdrop template |
transfer-usdc.ts | Transfer USDC between wallets |
Arc Testnet Notes
- Arc Testnet uses USDC as the native gas token
- USDC address on Arc:
0x3600000000000000000000000000000000000000 - Circle SDK targets
ARC-TESTNETblockchain identifier
Shell Utility Scripts
| Script | Purpose |
|---|---|
deploy-hello-arc.sh | Deploy HelloArchitect contract to Arc Testnet |
call-greeting.sh | Read greeting via cast call |
verify-deploy.sh | Verify deployment matches expected state |
print-env-checklist.sh | Check required env vars |
funding-check.sh | Check native balance |

