Overview
Architecture

Architecture

On-Chain Components

Agent NFT (Mint Account)

Each Agent NFT is a standard Solana NFT (Metaplex) with additional on-chain metadata:

  • tier — Common / Rare / Legendary
  • staked_since — timestamp when staking began
  • accumulated_rewards — unclaimed $GHI balance
  • agent_pda — linked AI agent wallet (Agent Forge only)

Program Derived Addresses (PDA)

Agent Forge agents use PDAs so each AI agent has a deterministic, program-controlled wallet:

agent_wallet = PDA(["agent", nft_mint, owner_pubkey])

This means the agent can sign transactions autonomously while the NFT owner retains ultimate control.

Mining Contract

The staking contract calculates rewards based on:

daily_reward = base_rate × (0.5 ^ year)
YearCommonRareLegendary
132 $GHI80 $GHI320 $GHI
216 $GHI40 $GHI160 $GHI
38 $GHI20 $GHI80 $GHI
44 $GHI10 $GHI40 $GHI

Ecosystem Flow

User

 ├─ holds $SGHI ──────────────► Priority access to mint

 ├─ mints Agent NFT ──────────► Solana NFT (Metaplex)
 │       │
 │       ├─ stakes ───────────► earn $GHI daily
 │       │
 │       └─ deploys agent ────► PDA wallet + autonomous tasks

 └─ holds $GHI ───────────────► DAO vote + Agent Forge fuel
⚠️

Smart contracts are under development and will be audited before mainnet launch.

Transaction Flows

Stake Flow

User wallet
  → [stake_nft instruction]
    → verify NFT is Sandbox GHI collection member
    → read tier from Metaplex metadata attributes
    → transfer NFT: owner ATA → program vault ATA
    → create StakeAccount PDA (seeds: ["stake", nft_mint, owner])
    → pool.total_staked += 1
  ← StakeEvent emitted on-chain

Claim Flow

User wallet
  → [claim_rewards instruction]
    → load StakeAccount
    → calculate rewards (elapsed days × current rate)
    → transfer $GHI: ghi_vault → owner ATA
    → stake_account.last_claimed = now
  ← ClaimEvent emitted on-chain

Unstake Flow

User wallet
  → [unstake_nft instruction]
    → calculate pending rewards
    → transfer NFT: vault ATA → owner ATA
    → transfer $GHI: ghi_vault → owner ATA (if rewards > 0)
    → close StakeAccount (rent SOL → owner)
    → pool.total_staked -= 1
  ← UnstakeEvent emitted on-chain

Tech Stack

LayerTechnology
BlockchainSolana mainnet-beta
NFT standardMetaplex Token Metadata v1.x
Smart contractRust + Anchor framework v0.29+
FrontendNext.js + @solana/wallet-adapter
Agent runtimeOff-chain executor — signs via program authority key
HostingVercel (frontend + docs)
RPCHelius / Triton (production)