New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Manage Groups with Bandada

ETHGlobalWed, Oct 9, 2024, 12:00 AM

Join Giacomo Corrias of the Ethereum Foundation for a workshop titled, "Manage Groups with Bandada.” Bandada enables anyone to create and manage privacy-preserving groups of anonymous individuals without requiring expertise or dealing with complexity / configuration burdens. You can manage off-chain and on-chain groups (backed by the Semaphore protocol), either manually or by defining the requirements (credentials) required for joining a group. With a week of open learning, hacking, and workshops on all things Zero Knowledge technology, as well as $50,000+ USD in prizes, Circuit Breaker is a great way to connect with the community from around the world, and help shape the future of Ethereum! ----------------- Find more about Circuit Breaker: https://ethglobal.com/events/circuitbreaker Follow us: https://x.com/ETHGlobal?s=20 Check us out: https://ethglobal.com/ Email us at: hello@ethglobal.com

Transcript

[Music] hello everyone welcome to the circuit breaker PSC ethereum Foundation Workshop manage groups with bandada joining us today is jakc coras who will be taking us through this session and with that I'll pass it over to jakamo to get the session started thank you Rory um hello everyone I'm Joo also known as zxj on the web I'm an independent fullstock software engineer currently L focused on building developer tools protocols and infra for privacy preserving Technologies I'm collaborating with PSC and it's about two years now and PSC is a research lab building public goods that expand the word of cryptography and today I'm thrilled to introduce to you one of them bandada a public good infrastructure to easily managed proy preserving groups of anonymous individuals so here's the agenda for today uh we will start by exploring the motivations principles and analogies to be ready to dive into the architecture and code and we will wrap up everything by discussing the focus of the team the road map and how you can contribute to the project and get in touch with us first of all why bandada managing anonymous groups that preserve privacy can be challenging due to complexity configuration overhead trade-offs between privacy and user convenience so beyond these main problems um we see a problem as the lack of modular and adaptable infrastructure uh that can allow anyone even those with limit limited technical knowledge to join or manage these kind of anonymous groups so that's why we're building bandada to provide a concrete solution to this um so what is bandada bandada is a plug- and play public good infra that enables anyone to create and manage privacy preserving groups of anonymous individuals the goal is to make bandata the de facto standard infra for both onchain and offchain group management it is designed with developers in mind because we offer libraries and customizable modules and also for non-developers too because it has different clients dashboards front ends to make it friendly and for non technical people currently the users can be in added manually or programmatically to groups by the creators of the admins or they can join autonomously by satisfying some eligibility criterias all of these enable a wide range of applications from grouping contributors of a particular GitHub repository or even holders of a specific nft to to admit people just because they have like antherium attestation or certain chain history so the youth cases can vary a lot about the terminology uh bandada is a Spanish word that means flock so you could imagine like flock of birds in Flight moving in Perfect Harmony and each bird is an integral part of this Collective movement while maintaining its own space and autonomy that's basically the essence of bandada that enables a similar Harmony but in t group management ecosystem because people can interact much like birds in Flight while maintaining their individual anonymity and autonomy while interacting um behind bandada there are some key Concepts that that are worth exploring be before going through the code and those are like groups anonymity versus pseudonymity and credentials um in the context of privacy and zero knowledge a group can be seen more than just a collection of individuals it represents an anonymity set this means that within the group the actions characteristics or identities of the individual members become indistinguishable from one to another and this provides a way for individual to engage in Collective actions like signaling or share attributes without revealing specific informations about themselves and this is cor the in this context is C the difference between anonymity and pseudonymity the anonymity refers to the complete concealment of users's identity um well pseudonymity allows users to interact under a consistent but um disguised identity it's something like an Alas and as we know our identities are fragmented into different zos in the web and the concept of credentials and bandada is just a way of esta lishing the necessary trust between a set of participants by verifying certain attributes or qualifications of individuals without making them um in the need of sharing their full identity but we just take some sparse information we get Advantage from that uh as a core features we have the intuitive group management with userfriendly dashboards for admins apis for developers and so on also there's a Vari a variety of of chain groups based on the access mode we have different access modes like manual invitation and credential we will see them later and the legal likee approach of credentials providers the possibility of taking advantages from external protocols for unchain group management like semaphor and grasp their features as a core principles of one of the core principles of bandada and this is reflected in also the modularity anonymity extensibility and customizability principles before diving into the architecture is worth mentioning the difference between bandad and semop for and for your interest there's a session after this one about semop for where you can learn more and bandada and semor are different by Nature um in SE so semor is a protocol for unchain Anonymous signaling while bandada is an infrastructure for group management and yes seop for manages on chain groups under the hood and bandata uses semop for libraries for this kind of thing right now but the the idea is that you can use bandada for group management also of chain and you can have different custom access modes by default while in seor you you cannot and seop for offers one more cool feature which is uh the Anonymous second link on chain so you can do something and nobody knows who did that like signaling a feedback a vote and so on but you will learn more in the next session um this is the architecture of bandada uh we have a robust backend system which is composed by a database to store the offchain data groups a versatile set of apis to ensure easy external integration and communication across the bandata components for of chain groups the database makes bandata single point of failure so you have to take care about distribution or decentralization of the data we provide to users interfaces uh the dashboard is used to create and manage groups other remove members and you can see in the dashboard the groups that you have joined or created then we have also a demo application which is used to consuming invites to join groups this is a demo because you can build on top of it to provide a unique experience for your end users to join the groups or just build it from scratch going down deep we provide also a set of JavaScript libraries we have the apis SDK Library which is a wrapper of the apis methods in order to easy the integration for developers um since the custom customization is one of the key principles we have also providers and validators inside the library and this Library can be used also as a standalone to provide sever resistance in your business logic then we have a bunch of our do scripts and utilities that are commonly shared acoss looking at the contracts we have one for managing the groups on chain and this contract is based on B on semaphore sorry and since we are following we are using semore we follow so its structure so this is um binary mle tree and we have also an offchain um uh an offchain group management that can be where the proofs made of chain can be verified on chain on the band. soul smart contract so basically people can verify the proof without relying on the database that's the idea um one thing that is worth mentioning is that semaphor takes care of root history expiration um for the Merkel trees and we don't for the offchain um groups so we are working on it to provide it as soon as possible but right now you you have to take care of it um so we support different access modes for of chain groups we have manual and also onchain groups are based on manual access and um in the manual you can the admins can directly add or remove members both programmatically or just typing the member ID Dion chain groups support only manual access mode as I said uh and they are backed by semore invitation admins can generate unique invite links to be consumed by the Target members and also we have credential based so the admin can set some sort of criteria based on the credential providers and for offchain groups you can set just Web Two providers and for unchain groups you can set tojust web stream providers so right now we can have uh so we have scratched the surface of bandada so we can start seeing the code uh bandada provides this a monor [Music] repo um here we are so this is the monor rap of Vada and as you can see we have the Habs and the libraries that we have already seen in the architecture and one cool thing of bandada is the easy of um configuration in terms of the things that you have to do before starting with it um it's it's easy you just need to configure uh the API environments and then just you can you're ready to to run everything locally um you can follow along the rme for further explanations and we provide also the running in Docker section to have more instructions that are more suitable for production environments delving into libraries as we have seen we have D apis SDK which is just a wrapper in typescript for theband apis super easy to use is just one line of code and you have to just give the URL of your apis and you can get access to different methods like get groups generate marle proof add members and so on then we have the credentials so it's very important to note that um the provider defines the data sources that can be used for validation for example I need aop profile uh information while validators are more focused on defining the criteria that must be satisfied with that credential provider so for example here we have this example minimum followers 100 so this can be translated in to access this mandata group I need a GitHub account that has at least 100 followers that's the idea as I said this Library can be customized as needs you can add more criterias more providers more validators and so on uh our that uh is just some tasks to deploy the SM contracts that we have seen super simple and the common utilities are just shared to communicate with one dat or can be used externally and here you can have something like get provider get contract and some sort of of utilities going through the apps um here we have the API which is a classic rest API back end uh made with nestjs then the contracts we have seen two contracts so bandada samap for is the one that will hand the logic for onchain groups and band. souls towards the meracle tree roots to make anyone able to verify proofs also for offchain groups and it's just a classic library with uh some hardat and ather JS um and then we have two front ends Cent and dashboard client is the demo app I think it's more interesting to see them in while working so this is the dashboard so the thing you have to do to work with the dashboard is just sign in with your wallet and connect One account oh you cannot see the account but it's just classic metamask interaction and sign a message after that um here's the dashboard and here you will see when after the creation the groups that you have created or the groups that you have joined right now we are working in gly network but we are planning to to migrate to to Sephia so let's create a new group we can you can choose from offchain or onchain groups uh we will do offchain for the the demo so this is new L circuit breaker let's also copy and paste in the description here you can select the the size of the group let speak small and the access mode manual or credentials we will see a demo for the credentials groups later and so we will continue with minimal um this is the group uh there's there are some statistics this is the group ID which is unique and this is the API case that you can use to programmatically interact with the groups and the dangered Zone just to remove the groups so delete it when just inputting the the group name from there you can add the members you can past some IDE paste some IDs here supp both one to three and add them to the group you can also remove the members and you can also generate invite links let's try to do one so you generate you copy one somebody else connects this is the the demo client somebody else connects H it's metamask this is the invite code you click join group they sign a message and you have joined a group so you can go back here refresh and you can see the the that there's now a new member on group so this is basically the dashboard I now should fetch the group here we are and another thing to say I think is that yeah the admins do not need to meet group's criteria when they are creating them since uh they're just creating them so if they want to join the group they have to meet the criterias or to be added manually by themselves in that case Okay so let's get back to the presentation and next are the bower plates we have two boiler plates one is bond semop for and another one is the SDK quick starter so let's start with bandada sopur feedback app so here you can create your unique identity join a group and provide your feedback anonymously using bandada and S for together so bandada here manages of chain groups and use semop for libraries like identity proof to EXT struct the feature of anonymous signaling in semaphore in order to make just people that have joined the groups or group members to cast their signal anonymously and their signal is just Anonymous feedback um we provide both manual and credential um uh application so it's configured with one One manual group and one credential group we will see the credential Group which is more interesting and this is a GitHub provider credential group so and the criteria is that you need to have at least one follower we can see the demo for or easy so this is a demo so you need you must have a group already created on your Bata deployed instance or or for example the one in see uh then you create your semop for identity you have a bunch of private information and one public information which is the commitment you will learn about it later then click next and ask for joining the group so here you need to authorize the O application for bandada that needs to take your public uh profile information to check your number of followers after the authorization you join the credential group this is your commitment and uh you can check also if the commitment is present inside the dashboard it should be if everything um is correct and then you can send your Anonymous feedback so you enter your feedback and that's it anyone can see it but nobody's can uh know who send it um and that was the the bandala sem4 feedback app um then we have also the SDK demo this is super simple it's just uh script you have to pass in the group ID group API key and an invite code which must be valid and you instantiate the apsd as we have seen before and it does bunch of stuff with the group I have prepared this small video so basically it ask for the group data then has one member and another member and lots of members then create a proof of membership so inclusion proof for the member one and it verifies it and it's correct and then removes everyone it's just super simple just to to Showcase how to interact with bandada and that's a great starting point um okay we can rub up everything with the road map so the vision is to make mandada the de facto standard for onchain and offchain group management the V1 beta is out and we are currently batttle testing it with some Integrations like potion to provide severe resistance for trusted setup ceremonies we want to extend the credentials with onchain providers like ethereum attestation service signing with ethereum and we are also working on documentation and we will release the website soon another must have uh is the addition of The Logical operators and this can make people able to combine different credential providers and criterias together to access one group so basically you can do something like hey you can access this group if you have a GitHub account of X months old have y followers and have contributed eight times to organization one this is very cool and last but not least we want to go beyond semor so we want to avoid using directly semor liaries and start using like something like DIY kit and open support to other onchain group protocols and you can check the road map by scanning this QR code is publicly available on gab and you can comment you can Screen through check everything there's lots of stuff here going around so feel free to add any question or comments as resources we provide this notion page this is our current Doc and you can check it that's basically what I've said today during the presentation and also there's this try it out section which is very important for you that since you're starting with bandada do a couple of steps to to start with and yeah so um if you'd like to reach us for asking questions or discussing things more in depth uh you can either join PC Discord for improvement Box open an issue on GitHub there are a couple of good first issues to tle to if you want to reach me or the team you can find us in Discord or X I'm zxj almost everywhere and I think that's everything from my side so thank you everyone and I think we have some space for some questions yeah uh yeah thank thanks for that Jak uh do we have any questions folks feel free to type your questions in the chat or if you want to take yourself off mute uh you can ask them directly and if there are no questions and of course you know as uh we have here on the screen the two QR codes for reaching out to the team and also don't forget to you can reach out to them in our Discord channels um in the the PSC partner Channel That's so with the circuit breaker so if you haven't done so already please make sure that you connect your hacker dashboard to Discord um in order to access those channels um but yeah I don't think there are any questions so uh thanks again for the great presentation jakamo and thank you all everybody else for attending just a quick housekeep reminders uh kickoff is later today in about uh a little over two hours and then has when hacking officially begins um and we have we do have a few more uh other workshops later today so we look forward to seeing you all at those thank you Rory and abing everyone cheers thanks happy ha everybody [Music]

Automatic transcript — names and jargon may be misspelled.