Core Contracts & API
This page provides contract addresses for key components of GoodDollar protocol.
Contracts & API
GoodDollar Protocol is deployed on both the Ethereum mainnet and on the Fuse sidechain. Contracts like the GoodReserve are only on Mainnet, and other contracts like the UBIScheme are only on the Fuse sidechain. Certain contracts, such as the DAO and G$ Token contracts, are deployed on both networks.
Core Contracts
Core Contracts
GoodDollar G$ ERC-20
GoodDollar G$ ERC-20
The GoodDollar G$ token follows the ERC-20 token standard and also supports ERC-677.
GoodStaking
GoodStaking
Supporters / stakers can stake crypto which is then sent to permissionless protocols which earn interest. The FundManager has permissions to collect interest-earned from this contract.
GoodReserve
GoodReserve
The GoodReserve mints G$ based on the interest transferred from the FundManager. Only the FundManager can trigger minting. The GoodReserve also acts as the GoodDollar liquidity pool and AMM (Automatic Market Maker) and enables methods to buy and sell G$s.
GoodFundManager
GoodFundManager
Has permissions to collect interest from the GoodStaking contract and permissions to tell GoodReserve to mint. Anyone can trigger the collection and minting process
UBIScheme
UBIScheme
Holds all the G$s that were transferred via bridge from the FundManager. The pool of G$s is divided equally by the amount of current active users, and distributed every day. Each active user can then "claim" his quota. If a user fails to claim his quota it becomes part of the next day's pool of G$ to be distributed as basic income.
Identity
Identity
The identity contract controls addresses that are whitelisted to "Claim" UBI.
Face Verification GoodDollar currently whitelists users based on a user proving "uniqueness" by signing up with a live and unique face. All image data and details are anonymized in order to allow the user to create a new account in case he is unable to recover his wallet. Facial details are deleted after
authenticationPeriodand users are required to perform face verification again everyauthenticationPerioddays.Social Profile Each blockchain address is linked to the user's public profile as created in the wallet. The DID is the node id in the public p2p GunDB database. Mappings from wallet address to DID are held in
addrTODID
OneTimePayments
OneTimePayments
Payments on the GoodDollar wallet are done via payment links. G$s are held in escrow and the recipient can retrieve the funds if he has the key. While the money is in escrow the sender can choose to cancel the payment and retrieve the funds. Based on Celo's payments contract.
DonationsStaking
DonationsStaking
Any ETH/DAI sent to this contract address is donated to the GoodDollar DAO and will generate interest to fund UBI. The funds are periodically staked in the GoodStaking contract by calling the stakeDonationsmethod.
GoodMarketMaker
GoodMarketMaker
Helper contract for the GoodReserve.
ContributionCalculation
ContributionCalculation
Helper contract for calculating the exit contribution (ie when selling G$ back to the reserve)
FirstClaimPool
FirstClaimPool
Helper contract for UBIScheme. Manually funded by the Foundation to give 1G$ for "inactive" users when they claim. Since a new user (inactive) becomes active and eligible to claim UBI only in the next UBI epoch. So for new users not go empty handed on their first claim we give out a 1G$.
AdminWallet
AdminWallet
Helper contract for our backend servers to whitelist users and to fill their Fuse network gas.
Token Bridge Contracts
Token Bridge Contracts
Bridge contracts were developed by Fuse.
Note: for regular users it is recommended to use FuseSwap Bridge in order to avoid losing your tokens (help). FuseSwap Bridge: Mainnet -> Fuse | Fuse -> Mainnet.
DAO Contracts
ForeignBridge (mainnet -> fuse)
DAO Contracts
DAO contracts were developed by DAOStack
Controller
Avatar
Reputation
SchemeRegistrar
AbsoluteVote
Last updated
Was this helpful?