Debitum Protocol
A fully on-chain, permissionless bond protocol. Projects sell tokens with vesting at a discount — every position is an NFT.
What is Debitum?
Debitum is a Bond-as-a-Service protocol for EVM chains. It allows any DeFi project to sell tokens at a discount in exchange for immediate liquidity, while distributing those tokens to buyers over time via an on-chain vesting schedule.
Unlike traditional token sales or OTC deals, every Debitum bond position is minted as an ERC721 NFT. This makes positions transferable, composable, and self-custodial — no backend, no escrow third-party, no admin keys.
Fully on-chain
All logic, state, and vesting lives in smart contracts deployed on EVM-compatible networks.
Permissionless
Any project can deploy a bond for any ERC20 token without approval.
NFT positions
Every purchase mints an ERC721 that represents a vesting position.
Self-custodial
Buyers hold their NFT. Projects fund their own bond escrow directly.
How It Works
Project deploys a bond contract
A project calls the BondFactory to deploy an individual bond contract. They specify the principal token (what buyers receive), the payment token (what buyers pay), a discount in basis points, vesting parameters, optional token-gate rules, and the total bond capacity.
Project funds the bond
The project deposits principal tokens into the bond contract up to the configured capacity. Until the contract holds enough tokens, it will not accept purchases.
Buyers purchase positions
Buyers call purchase() on the bond contract, sending the payment token. They receive an ERC721 NFT that represents a vesting position. The NFT records the principal amount, start time, and vesting schedule.
Tokens vest on-chain
As time passes, the vesting contract allows more principal to be claimed. Buyers call claim() at any time to withdraw unlocked tokens to their wallet. The position NFT remains valid until fully claimed.
For Bond Buyers
Buying a bond lets you acquire tokens at a discount compared to their current market price. In exchange, those tokens are released to you over a vesting period rather than immediately.
How to buy a bond
Go to the Marketplace and browse available bonds.
Click a bond to open its detail page. Review the discount %, payment token, and vesting schedule.
Connect your wallet. If the bond has a token gate, make sure you hold the required tokens.
Enter the amount you want to pay. The interface shows how many tokens you'll receive and when they unlock.
Approve the payment token spend (one-time ERC20 approval), then confirm the purchase transaction.
An NFT is minted to your wallet. Go to Portfolio to see your position and claim unlocked tokens.
Your Portfolio
- Visit /portfolio to see all your active bond positions.
- Each card shows the total principal, amount already claimed, and amount currently claimable.
- Click Claim to withdraw unlocked tokens to your connected wallet.
- Your position NFT can be transferred to any wallet — the new holder can claim the remaining tokens.
For Projects — Creating a Bond
Any project can permissionlessly launch a bond. No approval, no KYC, no governance vote. You need only the token you want to distribute and a wallet connected to the supported network.
Bond configuration
Deployment steps
Go to /create and connect your project wallet.
Fill in the bond parameters. Review the preview to confirm pricing looks correct.
Submit the transaction — this calls BondFactory.createBond() and deploys a new bond contract.
After deployment, approve the bond contract to spend your principal tokens.
Deposit principal tokens into the bond contract. The bond becomes purchasable once funded.
Monitor via /dashboard — pause or close the bond at any time. Unfilled capacity can be withdrawn.
Vesting Types
Continuous unlock
Tokens unlock gradually and continuously every second over the full vesting duration. Buyers can claim any available amount at any time.
Locked until cliff date
All tokens are locked until the cliff date, at which point they either unlock all at once or continue vesting linearly. Ideal for team token releases.
Equal periodic tranches
Tokens unlock in equal installments on a fixed schedule — for example, 25% every quarter. Clean and predictable for both parties.
Oracle Pricing
Fixed price
Set a fixed price per principal token at bond creation time. The discount is calculated from this price. Simple and predictable — best for projects without an on-chain price feed.
- No oracle dependency
- Predictable payment amounts
- Suitable for new tokens
Dynamic price feed
Connect a price oracle (Chainlink, Uniswap TWAP, or custom feed). The bond price tracks the live market price and applies the discount on top. Buyers always get the exact discount percentage they see.
- Discount % stays constant
- Price adjusts with market
- Prevents arbitrage on price moves
Token Gates
Projects can optionally require buyers to hold a minimum balance of a specified ERC20 or ERC721 token to unlock a higher discount tier. Multiple thresholds can be set per bond.
Use cases
- Reward your existing token holders with exclusive discounts
- Gate access to NFT holders of a specific collection
- Create multiple tiers — the more they hold, the bigger the discount
- Configurable per bond, not globally enforced
Smart Contract Addresses
Contracts are deployed on multiple EVM networks. All source code is open-source and verified on each network's block explorer.
Deploys new bond contracts. Call createBond() to launch a bond.
0x01f1ea69d712457a25f62c19325e8edf3a68cc6eView on explorer ↗ERC721 contract. Mints one NFT per purchase representing the vesting position.
0x6cdefd13eab04c52f9e4f1a587de3bcb98d9f346View on explorer ↗Stateless vesting math — Linear, Cliff, and Step schedules.
0xa872f5b4f78e40a222aa97aab422ddb41ab6f9d1View on explorer ↗Verifies buyer token balances against configured discount tiers.
0xe7e97f4f480f4a7b78270332c6603a0d6a7bd874View on explorer ↗Deploys new bond contracts. Call createBond() to launch a bond.
0xd1Ce0FB550B9e2565F478388Dd879149E5c02726View on explorer ↗ERC721 contract. Mints one NFT per purchase representing the vesting position.
0x3fC0b3B0bBbe1BeE1a5326964d0afC247b357C00View on explorer ↗Stateless vesting math — Linear, Cliff, and Step schedules.
0x22c833Ad10450e172E05DeB67f9578F36C7C0DE9View on explorer ↗Verifies buyer token balances against configured discount tiers.
0x5aE618657e8347D2Fb999799Af3440e6945b200EView on explorer ↗Decentralization & Immutability
Debitum is built around a single principle: once a bond is deployed, its terms are permanent. No team member, admin key, or governance vote can modify the vesting schedule, discount rate, price, or any other parameter of an existing bond. The protocol enforces all guarantees in code.
Contract upgrade status
A pure, stateless contract — deterministic math only. No storage, no admin role, no initializer, no upgrade path. Computes vesting schedules identically forever.
The factory that deploys bond clones. It has no UUPS proxy. The bond implementation and VestingModule it references are fixed at deployment time. Admin can only update the protocol fee and fee collector — changes only affect future bonds, never existing ones.
The ERC721 contract that mints and tracks bond positions. Removed from UUPS. Its logic — minting, claiming, position snapshots — cannot be altered after deployment.
Each bond is a minimal proxy clone of the BondContract implementation. Clones have no upgrade mechanism. The terms encoded at creation are final and immutable.
The optional discount module. It retains an upgrade path to allow new check types (e.g. new oracle formats) to be added in future. Critically, it controls only optional additional discounts — it cannot alter bond terms, vesting schedules, or principal amounts in any way.
What is guaranteed for buyers
- The vesting schedule of your position is snapshotted at mint time and stored permanently in the NFT — it cannot change.
- The principal token and amount are locked at purchase — you will always receive exactly what was promised.
- The VestingModule address is snapshotted per position at mint time — even if a new VestingModule were deployed, your position uses the original.
- Unclaimed tokens accumulate indefinitely on-chain. There is no expiry or clawback mechanism.
- Your position NFT is transferable — the new holder inherits all vesting rights with no change to the schedule.
What can change (and what it means)
Verification
All contract source code is open source and verified on each network's block explorer. You can independently confirm the upgrade status of any contract by checking whether it has an _authorizeUpgrade function — contracts without it have no upgrade path. For proxy contracts, verify that no ProxyAdmin with upgrade rights exists.
Frequently Asked Questions
Is there a fee to create or buy a bond?
Debitum charges no protocol fee at this time. You only pay gas for the on-chain transactions. The bond capacity and discount are fully configurable by the project.
Can I cancel or close my bond as a project?
Yes. Bond owners can pause purchases or close the bond at any time from the Dashboard. Closing a bond returns any unfilled principal tokens to the project wallet. Existing buyer positions continue to vest normally.
Can I transfer my vesting position to another wallet?
Yes. Your position is an ERC721 NFT and can be transferred like any other token. The new holder inherits the remaining vesting schedule and can claim tokens as they unlock.
What happens if I miss a claim?
Nothing bad. Unlocked tokens accumulate on-chain indefinitely. You can claim at any time — even months after the vesting period ends — and receive all accrued tokens in one transaction.
Does Debitum support native ETH as a payment token?
Yes. When creating a bond, set the payment token to address(0) to accept native ETH. Buyers will send ETH directly in the purchase transaction.
What oracle formats are supported?
The protocol supports Chainlink AggregatorV3Interface and custom oracle adapters that implement the same interface. Uniswap v3 TWAP oracles can also be wrapped to match the expected interface.
Is the contract code audited?
All contracts are open-source and verified on their respective block explorers. An independent security review is in progress. Links will be published when available.
What networks are supported?
Debitum is deployed on multiple EVM-compatible networks. Connect your wallet to the supported network of your choice to interact with the protocol.
Ready to get started?
Browse existing bonds or launch your own in minutes.