Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CDIP 18 - Non-transferable Badges for Maker Ecosystem Activity #537

Closed
3 tasks
twblack88 opened this issue Apr 27, 2020 · 6 comments
Closed
3 tasks

CDIP 18 - Non-transferable Badges for Maker Ecosystem Activity #537

twblack88 opened this issue Apr 27, 2020 · 6 comments
Labels
enhancement New feature or request

Comments

@twblack88
Copy link
Contributor

Title: Non-transferable Badges for Maker Ecosystem Activity

Your name/handle: @scottrepreneur, @bflynn4141, @naszam

Links:

Replaces: #433
Relates to: #536
Inspiration chat: "NFT for protocol achievements" conversation in MakerDAO chat

Proposal abstract:
A universal badge standard that awards non-fungible, non-transferable badges for interacting with smart contracts events in the MakerDAO Ecosystem. These badges will exist on-chain and allow web3 connected dapps to read which achievements a user has completed. There will be badges for the following events:

Action Check On-chain Action
Earn 0.01 DAI from the DSR Yes Drip for the Pot
Vote on Governance Poll Yes PollingEmitter, send
Lock MKR in Chief for 3 months Maybe? DSChief, lock
Lock MKR in Chief for 12 months Maybe? DSChief, lock
Vote on an Executive Spell Yes DSChief, vote
Bid on a Flipper Auction Yes DSChief, tend, dent
Vote on 20 Executive Votes Maybe? DSChief, vote
Cast a Spell Yes DSSpell, cast sender
Create a Spell that gets 10 (addresses) votes No? DSSpell, votes?
Create a Spell that is cast Maybe? DSSpell, deployed by sender
Change vote to another spell No? DSSpell, vote 2x
  • Fork Open Proofs contracts and combine it with some additional properties to have the achievement stored in the badge on-chain.
  • Work with the MakerDAO team to get approval of badge designs that can be displayed to represent these various achievements.
  • Work with tech-ops for domain mapping (ie. badges.makerdao.com) to see all of their badges that they’ve earned and are able to redeem.

Technical user story:

  • User logs into badges.makerdao.com with MetaMask
  • The MakerDAO subgraph is queried to see if a user has completed any of the achievements. If the user has completed an achievement, the user is able to redeem it.
  • The badge is then transferred to the user. This cannot be transferred again.
  • The badges can be read from any interface by using the OpenSea API. Some badges can be checked directly on-chain. For those users, redeem them directly upon completion of the associated activity.

Proxy signature story:

  • On the backend, we run a script every hour that checks for new badges.
  • User 0xabe1 logs into metamask, goes to badges.makerdao.com
  • If 0xabe1 is on the list of claimable badges, then we sign a message with our issuance key saying that “0xabe1 can claim the DSR badge at 0x2345”
  • The user signs the signed message above. This proves that both parties want the badge issued, and the issuer (Maker) can execute the transaction and issue the badge. Maker pays the gas for this transaction.

It requires a code update to implement additional badges, so we’ll have to follow-on if necessary to expand the badge set.

@twblack88 twblack88 added CDIP enhancement New feature or request labels Apr 27, 2020
@amy-jung amy-jung changed the title CDIP 18 CDIP 18 - Non-transferable Badges for Maker Ecosystem Activity May 6, 2020
@scottrepreneur
Copy link

scottrepreneur commented Jun 9, 2020

Updates all around

WIP Demo: https://badges.on.fleek.co/
Contracts: https://github.com/naszam/maker-badges
Frontend: https://github.com/scottrepreneur/mb-frontend
Backend Service: https://github.com/scottrepreneur/mb-merkle-service

  • create badge factory
  • on-chain challenges registry
    • dsr, earned > 1 dai
    • voting on executive vote
    • highest bidder on collateral auction
  • off-chain challenges
    • create badges in frontend
    • activity queries (couple remaining for Dai sent)
    • create and save trees
    • share trees to ipfs
    • save root hashes from frontend
  • activate badges
    • activate on-chain with merkle proofs
    • activate in frontend
    • show redeemed badges in frontend
    • unlock next tier of badge for redemption
    • share badge info to ipfs for save on activation
  • badge designs
    • preliminary designs
    • refine tiers & visuals
    • add frames
    • implement in frontend
  • schedule update job

We're researching gas usage in this implementation versus other options to find a best fit for a community solution.

@sudo-owen
Copy link

Hi, sorry if this isn't the right place to ask.

I've been trying to track the progress of the ERC on non-transferable tokens from the issue referenced here, and I saw one of the most recent issues referenced is from here.

I see that Maker is moving forward with a badge system. I'm wondering what API you all ended up going with, and if this standard is written up anywhere? I'd like to do the same for another community, and I'd prefer going with the same standard, even if isn't codified as an ERC yet.

Thank you!

@twblack88
Copy link
Contributor Author

This is a great place to ask! In addition, we use rocket chat to coordinate (don't judge us, a long antiquated choice)

I'll post your message there too.

@twblack88
Copy link
Contributor Author

You might want to check out open proofs which helped with the badges architecture by @naszam and @scottrepreneur

@sudo-owen
Copy link

Okay, thanks for the lead!

@twblack88
Copy link
Contributor Author

Delivered on 10-1-2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants