Where we are, honestly.
Pre-audit · contracts v3.0.0 · Use with amounts you can afford to lose
TrustlessKit — OTCVault, Token Locker, TokenLaunch, Vesting, Bounty Board, Staking and DCA Vault — is live on Arbitrum One, Base, Ethereum and BNB Chain with real funds and has not yet been audited by an external firm. We would rather say that plainly than imply otherwise.

Done
- 455 Foundry tests
Local + Arbitrum fork tests (real USDC blacklister, real Sablier Lockup v4, real Uniswap V3 pools) and invariant suites across every contract in the kit. Core escrow invariant: escrow balance == escrowed deposits + claimable balances + accrued fees; settled deals deliver exactly stable − fee and exactly the asset amount.
- Internal audit remediated (v3)
Pull-based refunds (a blacklisted counterparty can no longer hold your deposit hostage), fees accrue in the escrow instead of being pushed, confirms are binding for 24h and revocable, makers pin the rail and the fee they reviewed, guardian pause blocks only new deals and funding.
- Slither static analysis
0 High. 1 Medium (strict-equality sentinel in the registry) triaged as false positive; 1 Low reentrancy note accepted — state is SETTLED before any external call and confirm is nonReentrant.
- Verified source
Every contract on every chain verified on the block explorer and Sourcify. No proxies.
- Minimal admin surface
Owner can set the fee (≤1%), the rail for future deals, manage whitelist and registry (48h timelock on additions), sweep earned fees. Cannot move escrowed deposits.
- Written listing policy
Whitelisted means: source verified, not fee-on-transfer, no symbol that collides with a registry stable or another listed token, no stable-sounding name unless it is USDC/USDT. Nothing about price, liquidity depth or the team. Tokens are revoked when they stop meeting the policy.
- Deposit measurement
Every deposit is measured balanceAfter − balanceBefore and reverts on shortfall, so fee-on-transfer tokens fail loudly.
Not yet
- External audit
Scheduled before the per-deal cap is lifted. Until then, treat the protocol as beta.
- Multisig + timelock ownership
Owner: deployer EOA (interim) — Safe + 48h timelock migration planned. The v3 deploy scripts already wire a TimelockController; the live owner will be migrated once the Safe is set up.
- Bug bounty
To follow the audit.
Contracts · Arbitrum One · Base · Ethereum · BNB Chain
Contract version 3.0.0 — identical source and bytecode on every chain (Arbitrum One live since 11 Sep 2026; Base, Ethereum and BNB Chain deployed 11 Sep 2026). Owner and guardian on every chain: deployer EOA 0x74a4…7aC2 (interim) — Safe + 48h timelock migration planned. Previous Arbitrum escrow 0xC2ac…Be10 (v2, deals 1–14) stays readable at /deal/v2/<id>. Deal links encode the chain: /deal/<chainId>/<id>.
Arbitrum One · chain id 42161 · stables USDC / USDT · Sablier Lockup v4 rail
- OTCVault escrow (DeOTCEscrow)0x7f271629F70BC2c7ACE8ba20bd49f1Ee3602DbcBTrustlessKit #1. v3.0.0. Deals, fund, confirm (24h TTL, revocable), settle, cancel, pull-based claims, fee accrual, guardian pause. ReentrancyGuard, SafeERC20, Ownable2Step.
- TokenWhitelist0x443CC5b294054D057Fc30cAb45Fcaad0982664daOTCVault allowlist of tradeable non-stable tokens; paid listing requests.
- StableRegistry0x7c1b6dd8B4f31b09A5fbd13694395dE576Ec38B3USDC (6 dec) / USDT (6 dec) registry. 48h timelock on additions; instant removal.
- SablierRail0xF08F48FcBB1A1B2B67a0878949bf05Ada0b715a9v3.0.0. Adapter → Sablier Lockup v4 createWithDurationsLL, cancelable = false; Sablier-parity schedule validation; maxVesting 5y (owner-tunable ≤10y).
- FeeVault0xFF27e5EdD20ef6254D388aA21F66222daE9CFacDHolds protocol + listing fees. Owner sweep only.
- TokenLocker0x653906D173f6Ab96245F2E05a9DF5Fb045367B58TrustlessKit #3. Time-locks; nobody can withdraw before the unlock date. $50 flat fee.
- TokenLaunch (FairLaunch)0x5F8C6ADF5653359Be4C5E2996855A5c4e306A78CTrustlessKit #4. Escrowed sales, pull refunds on failure, 0.75% on finalize.
- TokenLaunch rail (FairLaunchRail)0x52d2Df3958d1fE6e18c63c16BFa48938B63E4eC5SablierRail bound to TokenLaunch for vested delivery.
- TrustlessKitFeeVault0xFcceD6ed0BB0B41D12a73E5e8c57622A5486081BShared fee vault for tools #3/#4/#7/#8/#9. Owner sweep only.
- BountyBoard0x839868193e5aa4C47eeD7960ada90875BDc3D697TrustlessKit #7. Escrowed bounties, exclusive assignment, burn-to-take stake, oracle / M-of-N verifier / resolver verification, 3-day appeal, pull payouts. 1% on approval (cap 3%).
- VerifierRegistry0x9806E47fA65c0EE3a3C5AA8fF67038969e612879Oracle and verifier allowlists with a 500 USDC verifier stake, 14-day unstake delay, slashing on overturned votes.
- BountyRail0x4b239E9699d6A114E6870970A0E9df5Be191CBC6SablierRail bound to BountyBoard for vested bounty payouts.
- StakingFactory0x5d7C9251d95E9b98C9045F90F6C7858075600aA5TrustlessKit #8. Deploys per-project StakingPool contracts (Synthetix math + lock-tier multipliers). Never holds funds. Flat creation fee (cap 1000 USDC).
- DCAVault0x7e355A8B6c934e646d95AdC7eC5A5e3FB41dd914TrustlessKit #9 (v1, legacy — serves its existing plans). Escrowed recurring buys through an allowlisted V3 router with a 30-min TWAP floor; permissionless execute; cancel and refund never pausable. 0.15% per execution (cap 1%).
- DCAVaultV20x340AA3d13dFE3016be7B994B953f6D4a86754373TrustlessKit #9 v2 (legacy — serves its existing plans). Trader model: total amount over a duration, 1-minute to 90-day intervals, per-plan TWAP floor or explicit no-floor. No keeper reward: runs while the TrustlessKit keeper pays gas.
- DCASellVaultV20xAa2CA23709737E71A5e59DbDD9C0a2b6A9d00eF8TrustlessKit #9 sell v2 (legacy). Recurring sells of any token into a registry stable; 0.15% carved from the stable received.
- DCAVaultV210x84E2c9851930B5C3De6c6E5c61B8b4B99eab94dATrustlessKit #9 v2.1 — new buy plans are created here. v2 model + a per-execution keeper reward (≤ 5% of a tranche, fixed at creation) paid from the tranche to whoever calls execute(); Chainlink Automation-compatible (checkUpkeep/performUpkeep, per-plan isolation). Anyone may run the open-source keeper. Cancel and refund never pausable.
- DCASellVaultV210xF48965D1fA21a061C4BC6829Dba5058dFbe594C6TrustlessKit #9 sell v2.1 — new sell plans are created here. Same reward model, paid out of the stable received (bounded at execute: ≤ 5% of the gross stable out).
Base · chain id 8453 · stables USDC / USDT · Sablier Lockup v4 rail
- OTCVault escrow (DeOTCEscrow)0x8c373dcFB227E8C00a30718a7daf0270a960F8b7TrustlessKit #1. v3.0.0. Deals, fund, confirm (24h TTL, revocable), settle, cancel, pull-based claims, fee accrual, guardian pause. ReentrancyGuard, SafeERC20, Ownable2Step.
- TokenWhitelist0x5C6bBFc72F352376339ad8B12805265f3FBaeDd4OTCVault allowlist of tradeable non-stable tokens; paid listing requests.
- StableRegistry0x245c8E201b1e65Eba35F862aeC0Ae5219715A3E9USDC (6 dec) / USDT (6 dec) registry. 48h timelock on additions; instant removal.
- SablierRail0x320911E8Cb49463e32fF123C1113eCa2760265Eev3.0.0. Adapter → Sablier Lockup v4 createWithDurationsLL, cancelable = false; Sablier-parity schedule validation; maxVesting 5y (owner-tunable ≤10y).
- FeeVault0x35CCc0a078Af070c5a4203a1aF43B7A99995D475Holds protocol + listing fees. Owner sweep only.
- TokenLocker0x5631FFE7DDB79455b3669Bc4436bB7AefcFbAD17TrustlessKit #3. Time-locks; nobody can withdraw before the unlock date. $50 flat fee.
- TokenLaunch (FairLaunch)0x4462b48D323A661ae206aeB13DB0D26bc35fA09ATrustlessKit #4. Escrowed sales, pull refunds on failure, 0.75% on finalize.
- TokenLaunch rail (FairLaunchRail)0xE5617c65c60e1a3BEf21559496231aEfe4Ea9B09SablierRail bound to TokenLaunch for vested delivery.
- TrustlessKitFeeVault0x9d911dCa9438F727a5F5Dde0400e08Fc81cB25dAShared fee vault for tools #3/#4/#7/#8/#9. Owner sweep only.
- BountyBoard0x6aC32772DD6d14c77496811A7957ae2C2c3e4f82TrustlessKit #7. Escrowed bounties, exclusive assignment, burn-to-take stake, oracle / M-of-N verifier / resolver verification, 3-day appeal, pull payouts. 1% on approval (cap 3%).
- VerifierRegistry0x481C0F02608e092AB9Ab8CE3B13eCced67750Dd3Oracle and verifier allowlists with a 500 USDC verifier stake, 14-day unstake delay, slashing on overturned votes.
- BountyRail0xCB94736272bb59C11a55aE3234AB427D39325785SablierRail bound to BountyBoard for vested bounty payouts.
- StakingFactory0x82F987d7AdcC8ba7C763A9E18C5f097f311525f2TrustlessKit #8. Deploys per-project StakingPool contracts (Synthetix math + lock-tier multipliers). Never holds funds. Flat creation fee (cap 1000 USDC).
- DCAVault0x6Ea6587e29aA2b99fB01B4a6D23E4223388B990cTrustlessKit #9 (v1, legacy — serves its existing plans). Escrowed recurring buys through an allowlisted V3 router with a 30-min TWAP floor; permissionless execute; cancel and refund never pausable. 0.15% per execution (cap 1%).
- DCAVaultV20xfB0409A924dC67692b8919a6f576ca5FFC6DD604TrustlessKit #9 v2 (legacy — serves its existing plans). Trader model: total amount over a duration, 1-minute to 90-day intervals, per-plan TWAP floor or explicit no-floor. No keeper reward: runs while the TrustlessKit keeper pays gas.
- DCASellVaultV20x5bCb7E4aff46409e85D6524044D2d7de83932763TrustlessKit #9 sell v2 (legacy). Recurring sells of any token into a registry stable; 0.15% carved from the stable received.
- DCAVaultV210x530b0b1409127f24CE8193A550b66E357A25384ETrustlessKit #9 v2.1 — new buy plans are created here. v2 model + a per-execution keeper reward (≤ 5% of a tranche, fixed at creation) paid from the tranche to whoever calls execute(); Chainlink Automation-compatible (checkUpkeep/performUpkeep, per-plan isolation). Anyone may run the open-source keeper. Cancel and refund never pausable.
- DCASellVaultV210x7bF08D3E57B93D4f476692e55740e92CD3317699TrustlessKit #9 sell v2.1 — new sell plans are created here. Same reward model, paid out of the stable received (bounded at execute: ≤ 5% of the gross stable out).
Ethereum · chain id 1 · stables USDC / USDT · Sablier Lockup v4 rail
- OTCVault escrow (DeOTCEscrow)0xF1B4c8A0974C969F2801f52EB0C9d1FDfc2FC4ddTrustlessKit #1. v3.0.0. Deals, fund, confirm (24h TTL, revocable), settle, cancel, pull-based claims, fee accrual, guardian pause. ReentrancyGuard, SafeERC20, Ownable2Step.
- TokenWhitelist0x77926D8BEDa9987cdD3F979BFF0B56Cc9e88419DOTCVault allowlist of tradeable non-stable tokens; paid listing requests.
- StableRegistry0x44436AF008379dce1804a46823A3f051fE54C3C2USDC (6 dec) / USDT (6 dec) registry. 48h timelock on additions; instant removal.
- SablierRail0xc94f770cf88559e18521Abac169E7Ee4aEfCB9eEv3.0.0. Adapter → Sablier Lockup v4 createWithDurationsLL, cancelable = false; Sablier-parity schedule validation; maxVesting 5y (owner-tunable ≤10y).
- FeeVault0x2E239565D8516E8c743F5509186272E838b81d3BHolds protocol + listing fees. Owner sweep only.
- TokenLocker0x0267fc6C1Bacfd40a08344fB82F3baD8DFE785e0TrustlessKit #3. Time-locks; nobody can withdraw before the unlock date. $50 flat fee.
- TokenLaunch (FairLaunch)0xDF7Aa639c893465410fB77F51e85473643280388TrustlessKit #4. Escrowed sales, pull refunds on failure, 0.75% on finalize.
- TokenLaunch rail (FairLaunchRail)0x5B8e7B4A3B9e3CAc3465768FaeF12bBA5b7D3Af6SablierRail bound to TokenLaunch for vested delivery.
- TrustlessKitFeeVault0x4fd901d0f18d738142F86A82AC1895D4B0C6EBa5Shared fee vault for tools #3/#4/#7/#8/#9. Owner sweep only.
- BountyBoard0x5c8da374A41350e33daaa19f28c8Cb18eBD42a30TrustlessKit #7. Escrowed bounties, exclusive assignment, burn-to-take stake, oracle / M-of-N verifier / resolver verification, 3-day appeal, pull payouts. 1% on approval (cap 3%).
- VerifierRegistry0x4F81384c940Ff5F940e2312e93E88100D92052c4Oracle and verifier allowlists with a 500 USDC verifier stake, 14-day unstake delay, slashing on overturned votes.
- BountyRail0xf02DF26A2e7A056b35d956eAF5944a5f7898085dSablierRail bound to BountyBoard for vested bounty payouts.
- StakingFactory0x56Cb13172971335225Cb191E58CBaA82F5856d10TrustlessKit #8. Deploys per-project StakingPool contracts (Synthetix math + lock-tier multipliers). Never holds funds. Flat creation fee (cap 1000 USDC).
- DCAVault0x60527d8CC1dD619d27d890464925bB4c603D9951TrustlessKit #9 (v1, legacy — serves its existing plans). Escrowed recurring buys through an allowlisted V3 router with a 30-min TWAP floor; permissionless execute; cancel and refund never pausable. 0.15% per execution (cap 1%).
- DCAVaultV20xC2acAa61C8813EaF1d3424c4651C7408B632Be10TrustlessKit #9 v2 (legacy — serves its existing plans). Trader model: total amount over a duration, 1-minute to 90-day intervals, per-plan TWAP floor or explicit no-floor. No keeper reward: runs while the TrustlessKit keeper pays gas.
- DCASellVaultV20x6F1a7f05aE2eA8412Fdbc47C8058788e1AB3d686TrustlessKit #9 sell v2 (legacy). Recurring sells of any token into a registry stable; 0.15% carved from the stable received.
- DCAVaultV210xcf27C2B41476b50D2a0AC2997e7FbCbE2919345aTrustlessKit #9 v2.1 — new buy plans are created here. v2 model + a per-execution keeper reward (≤ 5% of a tranche, fixed at creation) paid from the tranche to whoever calls execute(); Chainlink Automation-compatible (checkUpkeep/performUpkeep, per-plan isolation). Anyone may run the open-source keeper. Cancel and refund never pausable.
- DCASellVaultV210xBC8F2E99b6Ca817F9E33f806E8e08399b6E7Bad1TrustlessKit #9 sell v2.1 — new sell plans are created here. Same reward model, paid out of the stable received (bounded at execute: ≤ 5% of the gross stable out).
BNB Chain · chain id 56 · stables USDT / USDC · Sablier Lockup v4 rail
- OTCVault escrow (DeOTCEscrow)0x320911E8Cb49463e32fF123C1113eCa2760265EeTrustlessKit #1. v3.0.0. Deals, fund, confirm (24h TTL, revocable), settle, cancel, pull-based claims, fee accrual, guardian pause. ReentrancyGuard, SafeERC20, Ownable2Step.
- TokenWhitelist0x35CCc0a078Af070c5a4203a1aF43B7A99995D475OTCVault allowlist of tradeable non-stable tokens; paid listing requests.
- StableRegistry0xAe93040Cb272d9C7Aa6778297B1C05694C4D2D8fUSDT (18 dec) / USDC (18 dec) registry. 48h timelock on additions; instant removal.
- SablierRail0x5C6bBFc72F352376339ad8B12805265f3FBaeDd4v3.0.0. Adapter → Sablier Lockup v4 createWithDurationsLL, cancelable = false; Sablier-parity schedule validation; maxVesting 5y (owner-tunable ≤10y).
- FeeVault0x245c8E201b1e65Eba35F862aeC0Ae5219715A3E9Holds protocol + listing fees. Owner sweep only.
- TokenLocker0x5631FFE7DDB79455b3669Bc4436bB7AefcFbAD17TrustlessKit #3. Time-locks; nobody can withdraw before the unlock date. $50 flat fee.
- TokenLaunch (FairLaunch)0x4462b48D323A661ae206aeB13DB0D26bc35fA09ATrustlessKit #4. Escrowed sales, pull refunds on failure, 0.75% on finalize.
- TokenLaunch rail (FairLaunchRail)0xE5617c65c60e1a3BEf21559496231aEfe4Ea9B09SablierRail bound to TokenLaunch for vested delivery.
- TrustlessKitFeeVault0x9d911dCa9438F727a5F5Dde0400e08Fc81cB25dAShared fee vault for tools #3/#4/#7/#8/#9. Owner sweep only.
- BountyBoard0x6aC32772DD6d14c77496811A7957ae2C2c3e4f82TrustlessKit #7. Escrowed bounties, exclusive assignment, burn-to-take stake, oracle / M-of-N verifier / resolver verification, 3-day appeal, pull payouts. 1% on approval (cap 3%).
- VerifierRegistry0x481C0F02608e092AB9Ab8CE3B13eCced67750Dd3Oracle and verifier allowlists with a 500 USDC verifier stake, 14-day unstake delay, slashing on overturned votes.
- BountyRail0xCB94736272bb59C11a55aE3234AB427D39325785SablierRail bound to BountyBoard for vested bounty payouts.
- StakingFactory0x82F987d7AdcC8ba7C763A9E18C5f097f311525f2TrustlessKit #8. Deploys per-project StakingPool contracts (Synthetix math + lock-tier multipliers). Never holds funds. Flat creation fee (cap 1000 USDC).
- DCAVault0x6Ea6587e29aA2b99fB01B4a6D23E4223388B990cTrustlessKit #9 (v1, legacy — serves its existing plans). Escrowed recurring buys through an allowlisted V3 router with a 30-min TWAP floor; permissionless execute; cancel and refund never pausable. 0.15% per execution (cap 1%).
- DCAVaultV20x66982660aBc7352A0AeC409BD6139467634d5767TrustlessKit #9 v2 (legacy — serves its existing plans). Trader model: total amount over a duration, 1-minute to 90-day intervals, per-plan TWAP floor or explicit no-floor. No keeper reward: runs while the TrustlessKit keeper pays gas.
- DCASellVaultV20xd3A4445Bb0CBD9B2115e63ce7C4d8BB5d6079b3eTrustlessKit #9 sell v2 (legacy). Recurring sells of any token into a registry stable; 0.15% carved from the stable received.
- DCAVaultV210x59d26275b14B6e3011cE7f916168694dC4E1f3b3TrustlessKit #9 v2.1 — new buy plans are created here. v2 model + a per-execution keeper reward (≤ 5% of a tranche, fixed at creation) paid from the tranche to whoever calls execute(); Chainlink Automation-compatible (checkUpkeep/performUpkeep, per-plan isolation). Anyone may run the open-source keeper. Cancel and refund never pausable.
- DCASellVaultV210xfB0409A924dC67692b8919a6f576ca5FFC6DD604TrustlessKit #9 sell v2.1 — new sell plans are created here. Same reward model, paid out of the stable received (bounded at execute: ≤ 5% of the gross stable out).
What the owner can and cannot do
Can
- Set the fee for future deals — never above 1.00%, and never above the cap the maker pinned at creation.
- Set the vesting rail for future deals (existing deals keep theirs; makers pin the rail they reviewed).
- Pause / unpause creating and funding new deals (guardian); block a token for new deals.
- Approve / revoke whitelisted tokens.
- Propose (48h) / execute / remove registry stablecoins.
- Sweep earned fees from the FeeVault (fees reach it via permissionless pushFees).
Cannot
- Move or freeze any escrowed deposit — confirm, cancel, refund and claim are never pausable.
- Change the terms, fee, rail or schedule of an existing deal.
- Upgrade any contract — there are no proxies.
- Cancel or redirect a Sablier stream once created.
- Recover tokens sent directly to the escrow (by design).
Dependencies
OpenZeppelin Contracts 5 (Ownable2Step, ReentrancyGuard, SafeERC20) · Sablier Lockup v4 (non-upgradeable, audited by multiple firms since 2019). Sablier Lockup v4: Arbitrum 0xD103…9C33 · Base 0xc19a…7C0A · Ethereum 0x93b3…BDCB · BNB Chain 0x6cd0…eD22.
Found something? Email security@trustlesskit.xyz. A formal bug bounty follows the audit.