Overview
Rep Tokens are a way for you to track your contributions and involvement within the DAO entirely on-chain. It also provides a mechanism for token holders to redeem a limitless number of rewards.
Rep 2.0 Tokens are an ERC1155 smart contract with two tokens. One that is Semi-Transferable and another that is Non-Transferable.
Soulbound Tokens (Token Type: 0)
Non-Transferable Tokens which represent your long standing reputation with the DAO. These cannot be traded, bought, sold, transferred, burned, etc EXCEPT under VERY SPECIAL CIRCUMSTANCES.
Redeemable Tokens (Token Type: 1)
Semi-Transferable Tokens which represent your spendable balance that can be used on rewards, discounts, etc. These cannot be traded, bought, sold, transferred, or burned EXCEPT in the case of sending them to a designated Burner Wallet.
Roles
Summary
Roles are an important concept of Rep 2.0. They provide a semi-centralized approach to the distribution, management, and handling of tokens. Certain actors (a singular person or multi-sig or ledger) will be granted these roles, usually with extreme consideration made beforehand. The smart contract implements OpenZeppelin’s Role-Based Access Control standard.
An Admin can pause smart contract interaction, grant/revoke other roles, and set max possible amount of tokens that can be minted within a single transaction. The likely actor(s) are a multi-sig/ledger explicitly with selected members of the DAO.
A Minter can mint pairs of tokens and can transfer them to an address which has been granted the Distributor Role. The likely actor(s) are a multi-sig/ledger explicitly with selected members of the DAO.
A Distributor can freely distribute pairs of tokens to any address. The likely actor(s) can be any trusted entity of the DAO. Can be expanded to include partnered organizations or other trusted entities.
A Burner can receive Redeemable Tokens from any address. The likely actor(s) can be any trusted entity of the DAO. Can be expanded to include partnered organizations or other trusted entities.
An Every-Day User is not actually a role and by default, every address is considered an everyday user. This means that an Every-day User can be distributed pairs of tokens and send redeemable tokens to qualified burners.
A Soulbound Transferer can send Soulbound tokens on behalf of an address to another address.
Example Scenario
Ryan has been hosting events for awhile and has decided that he wants to start rewarding the attendees for showing up to the event. Ryan reaches out to Jesse (Admin) and asks to become a Distributor. After deep contemplation, Jesse grants him this role. Ryan (Distributor) is hosting an event next week so he will need to get a set of tokens before the big day. He reaches out to Jacob (Minter) and asks to receive a set of tokens that he can hand out. After deep contemplation, Jacob mints and transfers a set of tokens to Ryan. The big day has arrived! Megan and Mason attend the event and scan a QR code and connect their Metamask Wallet on an iPad that Ryan has provided. Megan and Mason both immediately receive 20 Soulbound Tokens and 20 Redeemable Tokens (transferred from Ryan’s wallet). The next day Megan decides that she wants to buy a Consensys ticket at a discount through ATX DAO using her Redeemable Tokens. She interacts with the website and transfers 12 Redeemable Tokens to ATX DAO (Burner). The tokens she sent now lay dormant in the DAO’s burner wallet, impossible to be moved and she receives her Consensys Ticket at the discounted price. She now has 20 Soulbound Tokens and 8 Redeemable Tokens. Mason, unfortunately, uploaded his private key to GitHub and his wallet got cleaned out except for both his Soulbound and Redeemable Tokens (As these are impossible to transfer by standard means). He gets a new wallet, but does not want to continue to use his compromised wallet. He reaches out to Tyler (Soulbound Transferer) and asks him if he can transfer his Soulbound Tokens to the new wallet. After deep contemplation, Tyler allows this to happen and initiates the transaction to move the tokens to the new wallet. Mason is now set up with his new wallet and has received his tokens and can continue to show off his contributions to the DAO.
Live Examples (Testnet)
Mumbai PolygonScan Link
OpenSea Links:
Every-Day User Wallet
Distributor Wallet
Burner Wallet
Current Actors:
Admin - 0xf1dd420F930a5CbC5363D24dC1a8cdC560b786E6
Minter - 0xE4D3081957cc1126e97B71FbDc0044edb2A1387A
Distributor - 0xCe1716BA43A9926A772c5d701bcF5DB4d5B717B6
Burner - 0x9486038cc385997a62FB8f1f8a22a55186e241E8
Soulbound Transferer - N/A
Want To Get Involved With Testing?
On Discord, DM me (JakeHomanics#8476 or JakeHomanicsTempAccount#7621) your ethereum address(es). THESE ADDRESSES SHOULD HAVE NO SIGNIFICANT VALUE TO YOU ASIDE FOR TESTING PURPOSES OF THE REP TOKENS. I will mint and distribute tokens to the specified address(es) and you can interact with them as an every-day user. You can check your balances by going to https://testnets.opensea.io/account and signing in with the accounts that you provided for me to distribute tokens to (You may need to check your Hidden tab in OpenSea).
If you would like to take an extra leap further, then feel free to attach roles (see Roles section below) alongside the addresses and I will grant them their requested roles. I will notify you when you have been granted your role(s).
Other Topics of Discussion
- Should we allow the soulbound transferer to also have the ability to transfer Redeemable Tokens on behalf of a wallet to a new wallet?
- (This does not need to be completely fleshed out by mainnet deployment) How do these come into play for the admission process?
- (This does not need to be completely fleshed out by mainnet deployment) The plan is to have a website where you can easily interact with the tokens, see your balance, and check a leaderboard.
Let me know if anything is confusing or too technical. My goal is to have everyone be very comfortable with the idea and become excited (if you are not already!) to have these released and be used in the DAO's ecosystem!