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.
1
Deploy IntentRegistry
No constructor arguments. Deployed as a standalone contract.
2
Deploy PodiumOriginSettler
Constructor:
PodiumOriginSettler(address registry)3
Deploy PodiumDestinationSettler
Constructor:
PodiumDestinationSettler(address originSettler, address registry)4
Wire references
5
Deploy MockUSDC (testnet only)
On non-mainnet chains (
chainId != 8453), deploys a MockUSDC for testing.V2: Task Pool System (script/DeployV2.s.sol)
Deploys the full multi-tenant system with proxy patterns.
1
USDC
Testnet: deploys MockUSDC. Mainnet: uses canonical address
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.2
SolverRegistry
Deploy implementation + ERC1967Proxy.
3
VerificationEngine
Deploy implementation + ERC1967Proxy.
oracleAddress defaults to deployer if AI_ORACLE_ADDRESS is not set.4
IntentRegistryV2
Deploy implementation + ERC1967Proxy.
5
Pool Implementations
Deploy bare implementations (no proxy — these are used as Beacon targets):
6
TaskPoolFactory
Deploy factory, which internally creates UpgradeableBeacons for both pool types:
7
Authorize factory
8
Transfer ownership (optional)
If
SAFE_MULTISIG_ADDRESS is 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
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
1
Audit
Ensure all contracts have been audited. Review any changes since the last audit.
2
Test on Sepolia
Deploy to Base Sepolia first. Run the full test suite against the testnet deployment.
3
Prepare multisig
Set up a Gnosis Safe multisig on Base Mainnet for ownership. At least 3 signers with 2/3 threshold recommended.
4
Deploy
5
Verify on Basescan
Verify all deployed contracts on Basescan for transparency.
6
Configure Podium API
Update the Podium API server environment with the new contract addresses.
7
Test tenant pool creation
Create a test tenant pool via the API to verify the full flow works end-to-end.
8
Transfer ownership
If not done during deployment, transfer ownership of all V2 contracts to the multisig:
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
Arc Testnet Notes
- Arc Testnet uses USDC as the native gas token
- USDC address on Arc:
0x3600000000000000000000000000000000000000 - Circle SDK targets
ARC-TESTNETblockchain identifier

