Use G$ streaming
Last updated
Was this helpful?
Last updated
Was this helpful?
First-step:
Superfluid concepts:
Streaming Payments with G$ Token
GoodDollar’s G$ is deployed as a pure Superfluid SuperToken on the Celo network—no wrapping needed, so it can be streamed second-by-second out of the box.
Streaming turns one-off transfers into continuous flows, enabling payroll, vesting, or loan payments.
For other example use cases, see
For simple second-by-second transfers called 'streaming', powered by the SuperFluid Protocol, you talk directly to the immutable CFAv1Forwarder
contract (0xcfA132E3…B125) and pass in G$’s address (
0x62B8…C7A`).
All flows boil down to three methods:
Optional next steps:
GDAv1Forwarder → pool-style distribution streams, optimized to work with off-chain interactions. ()
Super-Apps → have your contracts react to flow events once you register them with the Host. (, )
Node ≥ 18 & bundler (Vite / Next)
To build a web client
ethers v6 or viem + wagmi
Low-level EVM calls
A wallet on Celo Mainnet (chainId = 42220
)
Only Celo currently has G$ streaming capabilities.
G$ token address
CFAv1Forwarder
universal address
If your contract should react to incoming/outgoing streams (e.g. auto-staking or NFT minting), you want your dApp to be registered as Super-App.
GDAv1Forwarder
Flow-rate math
Buffer deposits
Protocol fees
G$ applies its _processFees
on each streamed “drip”; receiver gets flowRate – feeRate
.
Network support
Streaming live only on Celo today; G$ on Fuse & ETH can still use one-off transfers.
Testing
(Recommended for testing: Development G$) (production G$)
0xcfA132E353cB4E398080B9700609bb008eceB125
()
The full ABI is on the technical-reference page and includes helpers like getBufferAmountByFlowrate
. ()
The same pattern works for updateFlow
and deleteFlow
; just swap the method. ()
These helper views are defined in the same contract. () For historical analytics use the Superfluid Subgraph or Explorer. ()
For instructions please follow: The Celo network requires a 'deployer' to be whitelisted before it can be registered.
Needed for pool-style “one-to-many” distributions; interface is analogous to CFA but targets pools. ()
rate = amountPerMonth × 1e18 / 2 592 000
. Keep int96
limits (~10^27 total). ()
Use getBufferAmountByFlowrate
before creating a stream to make sure the sender holds ≥ buffer + first few minutes. ()
Use GoodDollar’s dev contract 0xFa51eFDc0910CCdA91732e6806912Fa12e2FD475
. You can claim some free dev G$'s by creating a dev wallet here:
Create/Update/Delete Flows guide (Superfluid SDK) ()
CFAv1Forwarder technical reference ()
GDAv1Forwarder reference (for next steps) ()
SuperTokenV1Library (Solidity helper) ()
Super-Apps concepts page ()
Host & Super-App architecture ()
App-Registry wiki / registerApp ()
Agreement Forwarders overview ()
G$ token contract on CeloScan ()