All contracts are deployed on Base Mainnet, verified on Basescan, and upgradeable via UUPS proxies controlled by multisig.
InkdRegistry
The core registry. Stores project metadata and version history on-chain.
Proxy: 0xEd3067dDa601f19A5737babE7Dd3AbfD4a783e5d
Key functions
| Function | Description |
|---|---|
createProject(name, description, license, isPublic, readmeHash, isAgent, endpoint) | Register a new project |
pushVersion(projectId, tag, contentHash, metadataHash) | Add a version to a project |
getProject(id) | Read project metadata |
getVersion(projectId, index) | Read a specific version |
getVersionCount(projectId) | Number of versions |
getOwnerProjects(address) | All project IDs owned by an address |
Events
ProjectCreated(uint256 indexed projectId, address indexed owner, string name)VersionPushed(uint256 indexed projectId, uint256 indexed versionIndex, string tag, string contentHash)
InkdTreasury
Collects USDC payments and splits revenue between the buyback contract and the protocol treasury.
Proxy: 0x23012C3EF1E95aBC0792c03671B9be33C239D449
Revenue split
When settle(amount, arweaveCost) is called:
payment (USDC)
├── arweaveCost → arweaveWallet (actual Arweave upload cost)
└── remainder
├── 50% → InkdBuyback
└── 50% → Treasury Safe (multisig)InkdBuyback
Accumulates USDC from protocol revenue. Once the balance reaches the $50 threshold, it automatically buys $INKD via Uniswap V3 and sends it to the Buyback Safe.
Proxy: 0xcbbf310513228153D981967E96C8A097c3EEd357
| Property | Value |
|---|---|
| Buyback threshold | $50 USDC |
| DEX | Uniswap V3 |
| $INKD token | 0xa6f64A0D23e9d6eC918929af53df1C7b0D819B07 |
Ownership
All contracts are controlled by Safe multisigs (2-of-2):
| Safe | Controls |
|---|---|
DEV_SAFE 0x52d288c... | InkdRegistry upgrades |
TREASURY_SAFE 0x6f8D6ad... | InkdTreasury upgrades + withdrawals |
BUYBACK_SAFE 0x5882272... | InkdBuyback upgrades + $INKD recipient |
