How It Works

How SeeGive works on-chain and off-chain

SeeGive combines an application flow, public verification records, a Wrapper contract, and dedicated Project contracts for every campaign. This page explains the actual mechanics behind publishing a project, receiving donations, recording the ambassador reward, and withdrawing funds with supporting documentation.

Three roles Platform, recipient, and donor
Platform Support Recipient Donor

Each project depends on a clear split between the platform support team, the recipient receiving approved withdrawals, and the donors contributing funds.

Two smart contracts Wrapper + Project

The Wrapper contract deploys each Project contract. Every Project then keeps its own funding state, donor history, and withdrawal records.

Published records Public verification records and receipts

Supporting documents and project details are saved as public verification records, providing permanent, unalterable proof for every project and expense receipt.

Step-by-step journey

From submitting a request to a live fundraising project

Once someone submits a help request, SeeGive handles the publication flow by pinning documents, writing metadata references, and creating a dedicated smart contract for that campaign.

1

Fill out the Help Request form

The person seeking help provides their details, a description of their situation, the requested funding target, and an optional supporting document.

2

Files are saved to public verification storage

The supporting document is uploaded first, followed by a metadata payload describing the project. Both become permanent public verification records that anyone can inspect.

3

The applicant confirms the publish transaction

The applicant signs a wallet transaction that sends the funding goal and metadata reference into the Wrapper contract.

4

A dedicated Project contract is created

The blockchain creates a new Project contract for that campaign. The applicant becomes the recipient (project account holder) and the platform operating address is embedded at creation.

5

The project is indexed for the website

A background process reads the on-chain project list, fetches verification records, and makes the new project discoverable on SeeGive.

Under the hood

Two smart contracts do the heavy lifting

SeeGive uses a Wrapper contract as the controlled deployment layer and a dedicated Project contract for each campaign.

Wrapper contract

Creates projects and keeps the master registry

There is one Wrapper contract for the platform. It stores the platform operating address, keeps the active project list, and is the only on-chain path used to create official SeeGive projects.

Minimum goal required

A project can only be created if the funding target is at least 20 USDC and a metadata string is provided.

What gets set at launch

The Wrapper passes the platform operating address, the applicant wallet, the funding goal, and the metadata reference into the new Project contract.

Platform controls

The platform support team can close a project in the registry and transfer the administrative role if needed.

Project contract

Holds donor, balance, and withdrawal state on-chain

Each campaign gets its own isolated contract. It tracks what has been donated, what has been withdrawn, which donors participated, and which expense documents were submitted for withdrawals.

Set once, never changed

  • The platform operating address copied from the Wrapper.
  • The recipient wallet that created the project account.
  • The funding goal fixed at creation.
  • A cryptographic fingerprint of the project metadata string.

Updated as activity happens

  • Current total raised, amount withdrawn, and remaining balance.
  • Per-donor contribution totals and ambassador reward records.
  • A completed flag when the exact funding goal is reached.
  • A history of withdrawals and expense document references.
Making a donation

Funds go directly into the project contract

When a donor contributes, the donation amount goes directly into the Project contract. SeeGive does not custody donor funds. If the project has not yet been approved to spend enough USDC, the wallet requests approval first.

When a donation is accepted

  • The project must not already be fully funded.
  • The donation amount must be greater than zero.
  • The donation cannot push the total above the funding goal.
  • The donor must have enough USDC for both the donation and the ambassador reward amount.
  • The donor must also have enough approved allowance for both transfers.

What changes on-chain after a donation

  • The project's raised total and available balance increase.
  • The donor's contribution and ambassador reward records are updated.
  • If this is the donor's first contribution, they are added to the donor list.
  • If the exact funding goal is reached, the project is marked as complete.
About the ambassador reward: each project carries a fixed reward percentage (set when the project is created and readable in its forwarder contract — the donate page shows the exact amount before you pay). The reward is added on top of your donation, so the project still receives 100% of the gift you intended. It is transferred from the donor to the platform operating account in the same transaction and helps cover hosting, service providers, and further platform development. It is never deducted from your gift and never taken afterwards.
Accessing the funds

Only the recipient can withdraw, and every withdrawal needs supporting evidence

To withdraw funds, the recipient uploads a proof-of-expense receipt to public verification storage first. That reference is then submitted with the withdrawal amount, linking each payout to a specific supporting document. The same expense document cannot be reused twice.

When a withdrawal is accepted

  • Only the wallet address set as the recipient can initiate a withdrawal.
  • The requested amount must be greater than zero.
  • There must be enough donated-but-not-yet-withdrawn funds available.
  • Both the internal accounting balance and the actual USDC balance must be sufficient.
  • An expense document must be provided and must not have been used before.

What changes on-chain after a withdrawal

  • The total withdrawn amount increases by the requested amount.
  • The expense document reference is permanently recorded and locked.
  • The document is appended to the project's withdrawal history.
  • The contract balance decreases and USDC is transferred to the recipient's wallet.
Good to know

A few important details worth remembering

$
Donations use USDC

SeeGive uses the USDC stablecoin on Base mainnet so donors and recipients can reason about dollar-denominated values more clearly.

OK
Exact goal means complete

A project is marked complete only when the funding total reaches the exact goal amount. Overfunding is blocked by contract logic.

DB
Closing a project does not destroy it

If the platform closes a project, it is removed from the active SeeGive listing, but the underlying project account and its history remain on-chain.