Philanthropy 3.0 How It Works

How CareChain works on-chain and off-chain.

CareChain combines an application flow, IPFS-published metadata, a Wrapper contract, and dedicated Project contracts for every campaign. This page explains the actual mechanics behind publishing a project, receiving donations, recording appreciation tokens, and withdrawing funds with supporting documentation.

Three roles Liaison, donee, and donor
Liaison Donee Donor

Each project depends on a clear split between the platform liaison, the wallet 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 IPFS metadata and documents

Supporting documents and project details are pinned to IPFS, giving the dApp stable references for metadata and proof-of-expense files.

Step-by-step journey

From submitting a request to a live fundraising project

Once someone submits a help request, CareChain 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 pinned to IPFS

The supporting document is uploaded first, followed by a metadata payload describing the project. Both become persistent IPFS references used by the dApp.

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 donee and the current liaison address is embedded at creation.

5

The project is indexed for the website

A background process reads the on-chain project list, fetches metadata from IPFS, and makes the new project discoverable on CareChain.

Under the hood

Two smart contracts do the heavy lifting

CareChain 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 current liaison address, keeps the active project list, and is the only on-chain path used to create official CareChain projects.

Minimum goal required

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

What gets set at launch

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

Liaison controls

The liaison can close a project in the registry and transfer the liaison role to another address.

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 liaison address copied from the Wrapper.
  • The donee wallet that created the project.
  • 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 appreciation token 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. CareChain does not custody donor funds. If the project has not yet been approved to spend enough USDT, 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 USDT for both the donation and the appreciation token 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 appreciation 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 appreciation token: this is not a platform fee. Each donation includes a separate appreciation token amount that is transferred directly from the donor to the liaison wallet in the same transaction. It is intended to support further CareChain platform development and help cover hosting and service providers.
Accessing the funds

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

To withdraw funds, the donee uploads a proof-of-expense document to IPFS 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 donee 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 USDT 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 USDT is transferred to the donee wallet.
Good to know

A few important details worth remembering

$
Donations use USDT

CareChain uses the USDT stablecoin on Ethereum mainnet so donors and donees 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 liaison closes a project, it is removed from the active CareChain listing, but the underlying contract and its history remain on-chain.