Developers
Smart contracts
Every deployed contract, every audit, every upgrade history — public and verifiable.
Live addresses
All contracts are deployed to base-mainnet. The full registry — with Basescan links, ABIs, and upgrade history — lives on the contracts page.
| Contract | Address | Layer |
|---|---|---|
| PinecodeRegistry | 0x4Ae1f8eC9b3c4b2a18d44F12c0aE8b9cC2199AbD | Registry |
| PinecodeStaking | 0x822cF9aED39c44b1AeF8b71082EeA9c12CC3Dc70 | Curation |
| PinecodeRewards | 0x3104a9F1cAaB22C92e7Df88aC04E1B22cDe7Aae0 | Rewards |
| PinecodeToken | 0xE1C7d44a9aCe22F1238b71082AAB5c12CC3Df901 | Economy |
| PinecodeForwarder | 0x5dCe40f1A2384C12CD8b91082A4B5c12CC3df227 | Recall |
| PinecodePayments | 0xA12B4cFaCDeb22B1d99FE712CCa4Bb29bAaf18cD | Recall |
| PinecodeTreasury | 0x6e2DcC1abdBe44C29Fcb02e0aAB31C9c12c97dB1 | Governance |
| PinecodeGovernor | 0x82aD41912cf7e2bE4F1aF4c2C9aaef03c4d8e2c0 | Governance |
Upgrades & UUPS
Most contracts use the UUPS proxy pattern. The proxy address is permanent; the implementation can be upgraded by a successful governance proposal.
Upgrade history for every contract is queryable on-chain via OwnableUpgradeable events:
event Upgraded(address indexed implementation);event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);iUpgrade authority
Until governance launches, upgrade authority is held by the Pinecode Foundation 4-of-7 multisig. After Q3 2026, only the on-chain Governor can upgrade.
Audits
| Auditor | Scope | Report | Date |
|---|---|---|---|
| Spearbit | Registry, Staking, Rewards | 2025-12-04 | |
| ChainSecurity | Forwarder, Payments, Token | 2025-12-18 | |
| Cantina (competitive) | Full v0.6 suite | 2026-02-20 |
Integrating directly
If you'd rather call the contracts without the SDK:
import { Contract, JsonRpcProvider } from class="text-success/90">"ethers";import { abis } from class="text-success/90">"@pinecode/sdk";const provider = new JsonRpcProvider(class="text-success/90">"https:class="text-fg-subtle italicclass="text-success/90">">//mainnet.base.org");const registry = new Contract( class="text-success/90">"0x4Ae1f8eC9b3c4b2a18d44F12c0aE8b9cC2199AbD", abis.PinecodeRegistry, provider,);const seed = await registry.getSeed(418293);90">console.log(seed.contributor, seed.cid);ABIs are mirrored from Basescan and exported by the SDK under @pinecode/sdk/abis.
Docs v0.6.2