Zero admin keys
No owner, admin role, pause switch or proxy. Once deployed, the rules can't change, for anyone.
function withdrawLock(uint256 id) external
require(msg.sender == lock.owner) && block.timestamp >= unlockTime
Lock LP tokens and vest team tokens in a contract nobody controls. No owner, no admin keys, no upgrades. Time is the only admin.
No owner, pause or proxy.
Free during launch. Gas only.
Including adversarial token cases.
Same verified source everywhere.
Every step is a plain contract call you can verify on the explorer.
Your wallet approves the locker to move a set amount of your ERC-20 or LP token. Nothing moves yet.
lockToken(token, amount, unlockTime) transfers the tokens into the contract. The unlock date can be extended, never shortened.
Each lock gets a public certificate and a read-only JSON endpoint, so buyers and scanners can check it without trusting you or us.
These are properties of the deployed code, not promises from a team.
No owner, admin role, pause switch or proxy. Once deployed, the rules can't change, for anyone.
Unlock dates only move forward. An early exit is not a feature we could add later.
Team and investor tokens release second by second, with an optional cliff. Holders can price in supply.
Only the lock owner can withdraw, and only after unlock. Fees can't touch locked tokens.
Public JSON endpoints and an llms.txt, so scanners, bots and AI tools read locks directly.
A flat fee in ETH, fixed forever at deployment. Never a percentage of your supply.
Vesting: 0 ETH on Base · 0.02 ETH on Arbitrum and Optimism
Lockers that take a share of the tokens you lock charge more as your project grows. A flat fee costs the same whether you lock $1K or $10M.
We'd rather say it than hide it. Here is what has been done instead, all public:
onlyOwner or proxy administration modifiers. We cannot pause, freeze, or access your liquidity.