Client Incentives is a new mechanism for Nouns to pay clients (frontends) for interactions they facilitate between users and the Nouns protocol.
For more details please read our blog post about it.
As of today, the rewards have no been activated yet. They will be once another DAO proposal goes through to configure and enable them.
Call the registerClient
function of the Rewards contract.
This function expects these parameters:
name
: what is the name of your client? e.g. camp
descriptor
: a short description of your client, ideally a URL
After calling this function, a new Nouns Client Token NFT will be minted to you. The ID of that NFT is your clientId. You will need to send your clientId in order to get attribution and get rewards.
Currently you can use it in the following functions:
NounsAuctionHouse: createBid(nounId, clientId)
NounsDAO:
castRefundableVote(proposalId, support, clientId)
castRefundableVoteWithReason(proposalId, support, reason, clientId)
propose(targets, values, signatures, calldatas, description, clientId)
proposeBySigs(proposerSignatures, targets, values, signatures, calldatas, description, clientId)
The NFT also gives you permission to:
Call updateClientMetadata
to update the name & description of your client.
Call withdrawClientBalance
to withdraw your rewards.
If your clientId was used in any of the functions mentioned above, then you may be eligible for rewards.
In order to reduce gas costs on the DAO functions, rewards are only updated when someone calls the following functions on the Rewards contract:
updateRewardsForAuctions
updateRewardsForProposalWritingAndVoting
Gas is refunded for these calls as long as the contract is holding enough WETH.
You can check your balance to see if you have any rewards to withdraw by calling clientBalance
with your clientId.
To withdraw your rewards, your clientId needs to be approved for withdrawals. We added this step to reduce the risk of bad actors trying to abuse the system.
Clients can be approved only via DAO proposals. To get your clientId approved, create a proposal in which the DAO invokes the Rewards contract with the following function:
setClientApproval(clientId, true)
Once your clientId has been approved for withdrawals, call the withdrawClientBalance(clientId, to, amount)
function to withdraw your rewards.
If you have any questions, feel free to reach out to us on farcaster: @el4d & @davidbr