Final Spec for Season 6 Participant Badges (Otterspace Pilot)

Draft Authors: BPetes, Otterspace

Working Group: Ops-Guild ( chunz , raybankless.eth , brianl, LiviuC)

Summary

This post is an update on the finalized and detailed plans for the Otterspace Pilot. This Pilot was proposed back in August and recently discussed in the Season 6 community vote.

The intent of this post is to:

  • Provide a detailed specification for Season 6 pilot;
  • Address questions raised in prior forum post discussions (see FAQ); and
  • Provide space for a final round of feedback and sentiment before imminent pilot start

For this pilot we are focused on improving security and access challenges that occur when a contributor goes inactive.

The experiment proposed for Season 6 is to have bDAO members mint an expiring Otterspace ‘Season Participant Badge’ and a ‘Level 2 Badge’ (for members that have achieved L2). The Participant Badge NFT will be a signal of members who are preparing to participate and remain active in S6. The Participant Badges will expire automatically at the end of Season 6, and process will start over again in Season 7 (if sentiment of this experiment is positive).

These Badges will be used in Collab.Land gating logic for server access control to improve security holes that exist as contributors go inactive or go below 35k BANK. Expired Badges can no longer be used for access via Collab.Land in subsequent seasons, but they can be retained by contributors as proof of their presence and participation at the start of Season 6 (or simply burned if they no longer wish to hold them).

Quick Example:

@level2 discord role access will require that the member hold:

  • A Level 2 Otterspace Badge AND
  • An unexpired Season Participant Badge AND
  • Maintain the 35K BANK threshold of an @level1.

This will ensure that as L2s go inactive or dump BANK their @level2 access will lapse until they renew their Participation Badge and/or regain the 35K BANK. This also brings the added benefit of no longer relying on Discord role-tags as the ‘source of truth’ for this important L2 status.

Background

This pilot and bDAO partnership with Otterspace was originally proposed in August by @0xJustice with a 93% favourable poll result from 43 voters. This proposal has no cost associated with the use of Otterspace and only requires coordination efforts from within existing departments and roles.

Since the initial proposal, members of the Ops-Guild and the bDAO Cartography Workstream have stepped up to support the implementation and related coordination. The plan to use these Otterspace verifiable credentials were signalled and discussed in the Season 6 community vote with a 94% approval and 65 voters.

The finalized scope of this pilot is greatly reduced relative to the originally proposed plan to ensure we minimize the effort required to experiment and the time required to get more experientially informed feedback – AKA. “Go small, learn faster.”

This initiative acts as a proof–of-concept for using non-transferable NFT protocols but sits inside a larger “fabric of change" emerging here at bDAO. We’d like to acknowledge that this experiment meshes nicely with related work being done on tokenomics/subscriptions, guest pass revamp, and general reputation/governance-based initiatives. The learnings from this small experiment can be used to support each of these in the following way:

  1. Guest Pass (@blockboy) [Forum Post] - GuestPasses expire, can harden them using Otterspace expiring ntNFTs
  2. Tokenomics (@Icedcool) [Forum Post Soon] - subscriptions/time-lock BANK options – ntNFT tech like can have an ‘allow-list’ to mint driven by external contracts
  3. Reputation Based Unlocks (@0xBaer) - if you use reputation data from tools like Showkarma and/or Orange Protocol they can be complimentary methods of allowlisting ntNFT solutions like Otterspace

About Otterspace

Otterspace Badges provide DAOs with a new, non-financial coordination primitive to enable richer interactions and a more nuanced participation model.

Otterspace is building a flexible and easy-to-use interface for DAOs to harness the power of non-transferable Badges. Badges can enable DAOs to automate access rights & permissions (with Guild & Collab.Land), perform non-financialized governance (with Snapshot), manage community-specific credentials, and create better incentive systems. Badges can be easily designed and issued to members via the Otterspace app interface. Through the API endpoint, members can also be automatically added to an allowlist programmatically. The protocol also supports badge revocation, expiry, and reinstatement, so the community is able to respond to bad actors. The team is also co-authoring a token standard specifically for non-transferable tokens (EIP 4973) on top of which they are building an open protocol.

Pilot Plan Details

Scope

Problems Explored

Throughout Season 5, several problem areas were identified or accentuated. Some of these considered for this pilot include:

  1. Level 2 role holders that have gone dormant or dipped below 35k BANK were server admins and this presented a significant security issue to bDAO – recently closed by InfoSec, but perhaps we could have just determined who was dormant vs. cutting off access.
  2. Sesh.fyi guild election polls being called into question because anyone can permissionlessly get a guild tag via Carl-Bot and collude to win.
  3. It is hard to keep track of who is active or has been active and therefore who should be able to participate in Coordinape rounds (e.g. Dormant L2s collecting BANK because of past contributions/rep/popularity not recent ones)

We ultimately decided to focus on #1 with hints of #3. The goal is to create a bit of a crude ‘dead man’s switch’ on roles like @level1 and @level2.

Solution Landscape

bDAO can use Badges as a means of:

  1. Hardening Level 2 roles into an on-chain non-transferable Badge, so L2 status isn’t just a Discord role-tag and can be more trusted
  2. Having all bDAO members interested in participating in Season6 explicitly declaring this interest by minting an on-chain ‘Season Participant’ badge
  3. Automating gating permissions for Badge holders in Collab.Land so that proof of L2 and proof of ‘intent to participate’ are considered in @level1, @level2 gates
  4. Creating historic mementos for Badge holders (proof of L2, and seasonal participation – or just burn it when done using; users choice)
  5. Unlock future potential discovered through small experiments (i.e. guest pass system, guild/project role assignment, governance improvements, rep and contribution badge unlock games, etc)

Implementation Details

The bDAO Ops Guild has set up an initial pilot use case to test how Badges could work during Season 6. This is scoped to be a very simple experiment of hardening Level2 passes and having Season Participants minting a seasonally expiring badge to indicate their intent to participate for the season.

For the desired Collab.land gating logic to work, the Ops Guild will create two Badges through Otterspace:

1) Season 6 Participant Badge

The Season 6 participant pass denotes intent to remain active and expires at the end of the season.
There are one of two ways to obtain the S6 pass:

  1. Through being an active contributor in Season 5 and expressing interest in continued activity in Season 6, which was gathered through the Coordinape form at end of S5:
  • Members who indicated their wallets in that form are getting allowlisted to claim the Season 6 Participant Badge in Otterspace
  • Members will be informed that they can mint the Badge, and then use it to retain their @level1 and @level2 tags in Discord and continued access in S6
  1. Contributors who missed the sign-up at the end of season 5, or want to use a different wallet for minting the pass, can use the Badge Request Form which will be located in one of ‘front-door’ channels in Discord to help folks returning easily find it.

2) Level 2 Badge

The Level 2 Badge, which will replace Discord @level2 as the source of truth of Level 2 membership (does not expire):

  • Existing Level 2 role holders are eligible to obtain a Level 2 Badge (as well as any new ones nominated going forward). The @level2 role on Discord will be contingent upon a users wallet(s):
  1. Holding the Level 2 Badge
  2. Holding 35k BANK
  3. Holding an unexpired Season X Participant Badge; and

The @level2 Discord role will be revoked automatically if any of these conditions are not met and will automatically return once they are.

Important implementation considerations:

  • For the duration of this pilot, Otterspace will cover the minting costs on Optimism by airdropping ETH on Optimism to the wallets that signed up to participate
  • The DAO WILL NOT decide which wallet must mint these badges. Members will get to choose which address they wish to use so members can use a different wallet for collecting these vs. say an ENS wallet which is more identifying if they wish
  • In this Season 6 experiment, Badges initially won’t be used in governance – smaller use cases in guilds are encouraged and reach out to Ops Guild if you’re interested in experimenting with Otterspace Badges and guild governance/reputation experiments

Implementation sequence:

This is a not a trivial transition in our server gating; but it can be achieved very safely and with DAO consensus “baked in” to process with the following steps:

  1. Get people their badges first (as this can take time) and ensure success with the minting process
  2. ‘Wire up’ the new collab.land gate logic and test it with some trivial placeholder Discord role-tags first to see that everything’s working.
  3. Observe a ‘critical mass’ of folks have minted and are ready to participate – the badge minting is like an implicit bDAO vote of preparedness and willingness to participate in this experiment :wink: :raised_hands:
  4. IF steps 1 → 3 success, do a final announcement of firm date of transition to this new method of server gating
  5. ‘Go-live’ in Collab.land on the designated date and switch the @level1 and @level2 role-tag rewards to the new logic.
  6. Ongoing: Ops-guild supports new folks in navigating and monitors the Season Participant intake form to ensure that any dormant L1s and L2s who arrive back can quickly mint their badges and get active again with ease.
  7. End of season do a retrospective and sentiment poll to evaluate success of this experiment and determine what is preserved (or merged into Szn7 relevant bDIPs around structure, tokenomics, governance, and access control)

Measures of Success

  • All members that were awarded Level 2 Badges and Seasonal Participant Badges successfully minted the Badges, with the transaction fee covered by the Otterspace ETH airdrop
  • Significantly improving the security holes, measured by infoSec sentiment surrounding this initiative and the potential re-enstatement of deeper server privileges for the @level2 tag once it’s more trusted
  • End-of-season sentiment poll and DAO consented plans to use these technologies in upcoming bDIPs related to structure, governance, Coordinape, and/or access control.

Final Temp Check

  • Yes - I’m ready to mint my Otterspace Badge(s) and try this
  • No - I read FAQ below AND have concerns shared in comments

0 voters

APPENDIX

A1 - Frequently Asked Questions (FAQ)


What happens to the Badges when a member's wallet keys are compromised? Does the issuer simply issue a new Badge?

Currently, the issuer would issue a new Badge to a new account in the case of compromise, but Otterspace is working on a reassignment process based on social validation. The original badge can be burned by the holder or revoked by the DAO. Both burning and revocation make the Badge unusable in Collab.Land.


Isn’t anyone who has their finger on the issuance a vector for centralization?

The issuer is the bDAO community, and it’s up to the community to decide who can act on its behalf. Currently, you can use a Safe multi-sig wallet to act as the issuer if you want to prevent centralization.

To address the balance between centralization and convenience, we are working on a system whereby the DAO can decentralize by distributing specific permissions to Badge holders. For example, you could decide that any holder of the Team Lead Badge can act as the issuer for a Guest Pass Badge. These settings will be entirely configurable by the DAO, which allows you to choose your level of decentralization.

Ultimately it is up to the community to decide what functions of the Badges protocol they want to decentralize and to what degree. For Season 6 Ops-guild will have an Optimism Safe w/ 1/X policy to make it easy to quickly respond to updates during this Pilot. There’s always going to be a trade-off between convenience and decentralization and it’s up to the community to decide where to land on the spectrum. Otterspace’s goal is to provide the tools to go fully decentralized or to be more centralized for the sake of efficiency.


Aren’t there risks since it’s a non-transferable Badge?

Badges are based on the EIP-4973 token standard. Otterspace specifically designed the specification so that claimants have as much control as possible. EIP-4973 implements consensual minting, meaning before any token reaches a wallet, a users signature (and therefore consent) is required. And even after receiving it, a user can always perform a full dissociation by burning the token at any time. Further, the Otterspace protocol includes functionalities such as expiry and revocation to enhance usability and address risk concerns.


Are Badges in conflict with pseudonymity?

It’s important to mention that Badges are in no way tied to personal identity but to users wallets, for which one doesn’t have to reveal their identity. Badge metadata is generic to all holders of the badge, it isn’t unique to the account holding it. I.e. there is no space for individual metadata that could be used to identify someone. (e.g. It does not associate users to their Discord handle). The account address is the identifier users are connected with and nothing else.

Additionally, Badges are consented – i.e. they need to be claimed by the holder via signature. This prevents malicious doxxing via airdrop. Issuers cannot send you the Badge, users are just added to the allow-list and may choose to mint or not.

After the season is completed and the Badge has expired (i.e. primary utility is no longer there) the user can choose to burn the Badge if they wish (or keep it as verifiable proof of participation aka. secondary utility). It is 100% up to the wallet owner.


More FAQs are answered in the Otterspace Docs.

A2 - Otterspace Minting Guide

Badge Claim Process (expand for details & screenshots)

On the Badge page, click “Sign In” on the top right and sign in with the wallet that you have specified for Season 6.

Connect your wallet to Otterspace. You will be automatically prompted to switch your wallet to Optimism. The most common wallets will prompt users directly to switch to Optimism without requiring any additional setup.

After you’ve signed in, you click on “mint Badge” in the center of the screen. bDAO members do not have to pay for minting fees. As part of the implementation, Otterspace sends every user $1 of ETH on Optimism, which will cover minting fees for 4-8 Badges. The process will be seamless and no additional setup is needed, you only have to sign the transaction.

After successful minting, members can view their Badge in the user profile and use the Badge for gating in various downstream integrations, such as Collab.Land.

A3 - Additional Links

Developer docs (all contracts are open sourced): https://docs.otterspace.xyz/developer-docs

Website: https://otterspace.xyz/

Twitter: https://twitter.com/otterspace_xyz

12 Likes

This is amazing :clap::clap::clap::clap: I can’t even. Thank you so much to all the contributors and authors behind this proposal. I can not wait to see all this unfold.

8 Likes

Masterfully instigated by you :pray:, very excited about what we collectively learn by trying something like this.

7 Likes

Echoing excitement of @Bpetes and @0xJustice, such a cool initiative. Look forward to heading west with Bankless DAO Badges :black_flag::otter:

5 Likes

I voted yes. 2 questions:

  • how do you know who to give L2 badges to? Do you have a list of L2 wallet addresses?
  • how much does it cost to mint an OtterSpace badge?
3 Likes

Hey @links, bendo from Otterspace here. Thanks for your questions. I’ll let @Bpetes weigh in on the first question, but regarding your second question: Minting is entirely free for bDAO, as we’re dropping members 1$ of OETH before allow-listing, which should cover minting fees for 3-5 Badges. We’re on Optimism and gas fees are pretty cheap (around 0.15-0.18$ per mint). Through having funds for the Badges, there’s also no bridging needed and members only have to sign the transaction for claiming the Badge.

4 Likes

Great question.

We’re using the L2 Coordinape signup to ‘prime the addresses that are L2 and currently participating’ [if they wish to use different address there’s a form for that] AND we took a ‘snapshot’ of all current discord IDs for @level2 as a reference (@brianl downloaded) so we have that as a back-up of current ‘source of truth’ and ability to check against that if any dormant L2s come back and wish to reactivate.

2 Likes

Hi @Bpetes! I love this idea and voted yes. I do have a couple of questions.

  1. Is there a mechanism to ensure those that are distributed an L2 badge retain the 35K BANK?
    As you need to be L1 to be L2.
  2. Is there a way to automate minting of the badges?
1 Like

Hey @Sprinklesforwinners, bendo from Otterspace here :wave:t3: Thanks for your questions and feedback! I don’t have full context on your first question, but re your 2nd question: I was wondering what the challenges were regarding minting the Badge(s)? Feel free to DM me your wallet address on Discord (bendobbrick#1111) or Telegram (Telegram: Contact @bendob2701) along with your feedback and I’ll make sure to assist immediately :slight_smile:

2 Likes

@dobben Thank you so much for your help solving this! I was able to mint both badges.

1 Like

I like the idea, thank you for the initiative. I have a question though. If the badges are used for gating, how can we know if an address is the holder of a particular badge (let’s say L2 for example). I had a look at the contract and since all badges are in the same contract and I had both L2 and season 6 badge, my balance is 2. I did not see any obvious way to distinguish between the two batches. How can I check if an address is holder of L2 without having to know all ID’s?

1 Like

Sorry for delay to reply Sprinkles
Re: #1 Yes, there’s composable logic in the collab.land gates we’re going to use going forward.
This means that, unlike today, we’ll be able to ensure that L2s remain L1 level of BANK to retain @level2 in Discord.

What do you feel is the “canonical” list of L2s? It feels like with this answer, you are saying Discord, but the whole point of OtterSpace seems to say that the list of NFT holders should be the canonical list. Possible to revoke the L2 badge if they drop below L1?

@links sorry if I"m generating confusion our simplified pilot in many ways is already quite complicated due to the complicated nature of our existing behavioral protocols and quantitative thresholds at bDAO that govern Levels.

L2 badge signifies your peers see you as L2 trust-worthy (non-expiring just like today)

But the logic to give you L2-level access in Discord is:

  • L2 Badge in Otterspace; AND
  • 35K BANK; AND
  • Season Participant Badge (Active)

So you’re always a fully vetted L2 badge holder, but that doesn’t mean you’re getting L2 privileges (e.g. @level2 Discord access) if you’re not sustaining the other criteria of BANK holdings and remaining ‘present’.

I think this is net-better than what we have today and balances:

  • Matching the behavioral patterns of the L2 award mechanics today as best we can as we migrate; and
  • Avoiding complicated design for this first pilot.

I think we have the ability in the future to get a more precise and elegant design at the cost of the solution becoming more complicated – but iterations like that are the wei

Example: badges that are revoked automatically by on and off-chain oracle methods; but this may require new features, glue apps/contracts, or different protocols in the mix to accomplish – there’s early thinking on this and my DMs are open for sharing early learnings.

But for now, we work w/ Collab.land composable token gatting logic (an exclusive beta for bDAO) to do the heavy lifting for us of checking the above AND statements regarding the award of L2 status. So for now, the canonical source-of-truth for who’s an active and valid L2 is collab.land L2 Token Gated Roles (TGR) which is most easily inspected by Discord role-tag for average user, and backed by on-chain assets of BANK tokens and 2 Otterspace badges. It’s onchain source of truth but Web2 expression – source of truth isn’t Discord.

Hey @Tiki, chiming in from the Otterspace side here. Thanks for your question! Sorry for getting a little technical here :slight_smile:

The balanceOf() function was added to the contract for backwards compatibility with the EIP-721 spec. You can check who the badge owner is by calling ownerOf() but that would require you to have prior knowledge of your badge ID/token ID. In order for us to show the user a balance of a certain badge, we need to add that functionality (which we can, our contracts are upgradable).

In the meantime, this is already queryable via the subgraph. You can check out our docs for more info on this at Subgraph wiki (look for section “Check if an address owns a certain badge”).

{
  badges(
    where: {owner: "0x77B476429826C5ba77885D08F272d89D8F1Ed0e4", spec_in: ["bafyreicl3unvw6tvzjfduvrhxbfi74gsob6mpf6ekn3s2nkopqz2phtx7e", "bafyreia2lnu2jmr6sqqijzd3xt6fw2qriyy2vbq57zikzrkeyxfvlpqp3i"]}
  ) {
    id
    owner
    status
    createdAt
  }
}

Ok, thanks for the clarification! Subgraph should do the trick.