On-chain contracts
Sentico matches orders off-chain and uses contracts on Arbitrum One (chain ID 42161) for collateral custody and state commitments.
These contracts are live on a public chain, but the venue remains a capped, whitelisted private beta. The contracts and the complete system have not yet completed the external audit required for a public launch.
Current deployment
| Contract | Network | Address | Current role |
|---|---|---|---|
| MultiCollateralVault | Arbitrum One | 0xd1f0fffb736d75fd402121eb14bdc46bfe80ca02 | Holds supported collateral and executes the withdrawal/emergency paths |
| StateCommitment | Arbitrum One | 0xf88424085805b55ac6ad584aa9bb8e1f8eb6cf89 | Stores publisher-quorum state checkpoints; owner() is the TimelockController below |
| TimelockController | Arbitrum One | 0x4e2b7ac35b42dac4266ff375799db7409ae19162 | 48-hour governance timelock; owner of StateCommitment, admin and governor of the vault |
Never obtain an address from a direct message or search result. Compare it with this page and verify the bytecode and current roles on Arbiscan.
What is live
- Checkpoints require a 7-of-10 publisher quorum.
- The production scheduler targets one checkpoint per hour.
- At the 2026-09-04 review
latestCheckpointId()returned 1005,requireExitRoot()wastrue, and the contract was unpaused. - Registered collateral (checked in
GET /api/v1/public/assetson 2026-09-14): USDC, USDT, WETH (listed asETHin the asset registry), WBTC, ARB, CKT, TCO, and FYT — all with deposits, withdrawals, and trading enabled. TCO and FYT are Launchpad assets flaggedunaudited: true. - USDC is native Arbitrum USDC
0xaf88d065e77c8cC2239327C5EDb3A432268e5831, not bridged USDC.e. Each asset'sassetIdiskeccak256(abi.encode(token, decimals, chainId)); the assets route publishes the current ids. deposit(assetId, amount)anddepositWithPermitcreditmsg.senderonly; there is no deposit-for-another-account. A deposit sent from a custodian or exchange address credits that address, not yours.- Engine credit arrives about 15–20 minutes after the on-chain deposit, once
the vault listener has seen the required confirmations. The engine credits an
asset only when its vault listener is configured for it; confirm a credit in
GET /api/v1/accounts/{account}/bootstrap(engine truth). The lighterGET /api/v1/accounts/{account}read can omit recently added assets.
The dynamic protocol endpoints under /api/v1/protocol/* and the chain itself
override copied checkpoint numbers or status values on this page.
Current authority model
Verified on-chain on 2026-09-04 with read-only eth_calls:
| Power | Holder today |
|---|---|
StateCommitment.owner() | TimelockController 0x4e2b…9162 (48-hour delay). It is a contract, so renounceOwnership and EOA transfers are blocked by the contract rules. |
Vault DEFAULT_ADMIN_ROLE | TimelockController and the pre-timelock governor EOA 0x3352…9491 |
Vault GOVERNOR_ROLE | TimelockController and the same EOA |
Vault GUARDIAN_ROLE | The same EOA (emergency pause) |
Vault WITHDRAW_EXECUTOR_ROLE | Operational executor signer |
| Checkpoint publishers | Fixed 10-slot set, 7 signatures required |
The Timelock is driven by a 3-of-4 governance Safe whose signers include two
cloud-HSM keys; the Safe holds no direct vault role, so every parameter change
passes the 48-hour delay. The residual EOA roles are the open item. As long
as 0x3352…9491 still holds DEFAULT_ADMIN_ROLE, a compromise of that key
bypasses the timelock. Revoking it is itself a timelocked governance action and
must be proven on-chain before public launch. Read the current state as
"timelock governance live, legacy admin not yet revoked", not as the finished
target model.
Custody flow
See MultiCollateralVault, StateCommitment, and the Trust Model for mechanics and limitations.