How to participate in Nouns Client Incentives?

What are Client Incentives?

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.

I have a frontend for Nouns, how do I join?

1. Register a clientId

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.

2. Collect 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.

3. Enable withdrawals on 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)

4. Withdraw rewards

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

Subscribe to verbs
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
This entry has been permanently stored onchain and signed by its creator.