DappCon 2023: Customizing your governance - Zuza Zuber

DappCon 2023 · September 2023 · 35:18

Snapshot governance is framed around low participation, spam, bots and whale dominance. The talk groups customization into voting, validation and voting-type building blocks, including eligibility checks, quadratic and threshold-based voting, and privacy that hides live results. In Q&A, later transfers are said not to affect a proposal’s snapshot, while the off-chain system is acknowledged as not fully decentralized or trustless and Snapshot X is presented as the intended route to fuller decentralization.

Speakers

Topics

From DappCon 2023, hosted by Dappcon Berlin.

Transcript

uh can you maybe tell me which were the challenges that you were talking about first as the issues without the solution because I guess you also talked about the solution already guess want go talking about participation mhm and what about the participation a lot of participation this is the problem okay so low participation in governance um and uh that is in terms of like maintaining the members over time or low participation in general and the difficulty to motivate the members to vote at

all yeah I think over time and not just voting also participating MH okay okay so we have like the engagement and discussions and ideations suggesting something new and then also voting okay cool and uh what did you talk about your group talking missing inp okay you only have kind of cost terms of transaction following time to follow discussions

spend them um and you don't necessarily have to MH maybe even just like even holding the government's program is maybe you could rather convert it to e and state it that would be okay cool so we both like you both are talking about really participation and engaging the members and like maintaining the participation within the voting process luckily snapshot is free so no transaction fees which is actually uh one of the good in incentives for the users because there is nothing malicious that can happen they're just signing a

message they're not paying anything um and um what we can do we can chat about it later uh when it comes to different solutions that are possible when it comes to um the low participation um but actually uh there are also other problems around governance that we've seen starting for example with Spam which can be also quite a big discouragement for the members because whenever they go onto your space profile on Snapchat they only see some random proposals that just have actually also scam links inside so users are being discouraged from uh even reading the

proposals um voter apathy not really interested in voting uh we also have the whales uh who are also discouraging the community to take part in the vote if the if the community members know that there is someone who ow who owns majority of the token they don't even want to vote because what is the point if that one person can come in and just overrule the entire proposal um then we also have staking while as you said maybe it actually makes more sense to to stake uh the tokens I hold uh there are also Solutions on snapshat that allow you to counteract that because we can check how many tokens the user have sted and then

calculate their voting power based on that so actually you can have both um then we also have delegation who to delegate to how can I do it how the voting will go what if I actually want to take part in a specific proposal uh we also have Bots um that are basically over overruling uh the proposal so basically whales create hundreds or thousands of addresses and split their tokens and then they automate the entire process um and lastly exactly what we talked about the low participation so then when it comes to the governance customizations on Snapshot there are several ways uh you can actually address all of those

problems and each space can basically create their own very unique setup depending on their needs um and the three building blocks that I wanted to show you are voting strategies validation strategies and voting types uh where voting strategy is basically a a tool that tells you how much voting power do you have and also enables you to actually uh use the delegated tokens from another user uh for the proposals uh in technical terms it's just a JavaScript function that takes an address and returns a number then we have validation strategies which basically check if a user is eligible to either create a proposal or cast a vote

uh and this is actually really useful because you may for example limit the proposal creators to specific users to specific members uh that have a specific experience or have a specific role in your D or have a specific amount of tokens or have been a member of your Dow for I don't know at least six months then we have the voting types basically voting types are um the voting systems that you see on different proposals which allow you to say that I only want to have a question in the proposal and then I vote yes no or abstain um the other solution would be for example

multiple choice voting where you can provide different options the user are voting for uh we also have quadratic voting weighted voting plenty of those and the voting types are actually defining how the final result of the proposal is calculated what we require at this moment is a combination of at least one voting strategy and proposal validation strategy due to recent scam and spam attacks which went from Twitter or X to snapshot where there are plenty of new proposals with a lot of like malicious scammy links uh that were redirecting users to other domains and also inviting them to sign a

transaction so when it comes to the most common Solutions you probably know them yourself the the crown jewel is our erc20 balance off which is a voting strategy that allows you just to provide the token address um and it Returns the amount of tokens that you hold in your wallet and this is then your voting power uh we also have Whit list which is uh taking as an input a list of addresses uh that that will all have one voting power uh you can check for E balance you can also use nfts to vote and so on and as you can see they are quite popular as uh for example rc20 is in over 10,000 spaces on Snapshot however we what we want to talk

about are actually specific use cases um and we'll start from the Civil resistance so basically the way to avoid scams the spam and also make sure that your voters are not Bots but they are actually genuine humans um and what you can do for that is to use validation strategies uh and what we provide on Snapshot at this moment are mainly two strategies one is the basic one where what you can do you can take the set of the voting strategies that you're using to calculate the voting power and just say the minimum balance for this user to vote or create proposal has to be 20 what you can also do with

that is to select the custom selection of the voting strategies different than you use for the voting power and create the setup um for the validation separately then not we have we also have the gitcoin passport validation which is now being updated to the git course core uh validation uh which is actually the the real proof the real proof the the the stronger proof of um of resistance um where you check for the score of each user that you can set at whatever level you wish to um you wish to Define and the validation strategies as I said can be used for proposal validation and the

voting then we have voting strategies um and what we have is a white list which is the easiest way to define who can vote and you basically have a selection of your members that provide your addresses and you set them up in um in the strategy the other option is a membership which is based on an nft if a user holds specific nft They will receive uh one voting power and then when it comes to managing the different responsibilities in your space you can also use space roles in your space settings and Define admins who will be able to change the settings of your space moderators who are responsible for

managing the proposals and for example flagging a proposals if they see um that it has malicious content and then you also have outs uh that are the users that are eligible to create the proposals without meeting any specific requirements you just provide their address what is also useful and it comes to the Civil resistance and like monitoring what is going on you can use uh web hooks that um that that we provide um that you can get for the new proposals and for the ended proposals so if you want to keep an eye on what's going on in your doll it's actually really good to set it up the other solution would be also to set a Discord bot which will notify you in the channel like hey new proposal check it out uh

and then you can ask also your moderators to have a look to make sure that the space is clean of scam also if you have any questions you can like raise your hand let me know then talking about the way um and the voter apathy the discouragement because there is someone who can just overrule the entire proposal we also have ways to act against that first off is the quadratic voting um which is one of the voting types that then is calculating the result of the proposal it is not however exactly the same as um the gitcoin quadratic funding it's a bit more

um sophisticated in a way where it comes to the Democratic Democratic process of voting and if you want to have a look at it uh that's a QR code to our documentation with a bit longer explanation showing you the real example of like uh various users different options the tokens they hold so you can follow the process um throughout and what matters here is that we really care for the amount of you users that are taking part in the voting rather uh than their Holdings um and as I said before whales can also do a trick of creating hundreds or thousands of accounts uh and

then setting up a bot that will basically take their entire Holdings and vote as 1,000 different addresses quadratic voting perfect they get what they wanted so in order to make sure that this is not possible you should be able to set up uh set it up with the voting validation that will check for uh the Civil um the Civil attacks and make sure that the addresses are not the Bots but actually they are most probably human the other thing uh we also have our voting strategies um where there is a specific anti- whale strategy again explained in the documentation a bit more difficult setup but it allows you to set specific threshold above which the voting power will be uh decreased

and Below which the voting power will have more significance in the voting process um there is also a strategy called balance off with thresholds which basically mean that you can set buckets and if someone holds up to five tokens their voting power will be Zero from 5 to 10 their voting power will be one and from 10 to Infinity their voting power will be to so even if the whales are holding large amounts of token their voting power will be really really small and then we also have uh voting privacy with uh shielded voting um this is one of the options that you can

select uh in the space settings I'll talk about it uh in a second but the idea is that basically while the proposal is going on no one can see what is the current result and who voted what the votes are private until the proposal has ended and then anyone can release it so basically when a whale comes to a proposal they don't really know if their vote will really change the outcome so not fully secure when it comes to antiw strategies but can also be uh useful in this case kind of validation strategies as well yes it's a separate it's a separate kind of module um and uh shielded voting

all it's doing is encrypting uh the votes on the ipfs so no one knows what the user has voted what is the current result and at the same time this address can be checked if they have enough of uh voting power so if you want to go into the details if you know that the validation is actually set at I don't know like you need to hold 50 tokens and if you follow these addresses that voted you can figure that they you know that they are eligible uh but they can work allog together no problem so shielded voting what I just mentioned um hide the voting results while the proposal is live and then release it

while after the proposal has ended uh how to do it you go to the space settings voting section then select privacy and then you can select the option with shatter which will then lead to a proposal where you only see the addresses or the ens domains uh but you don't see the their results at all then um what I also wanted to show you is something we released recently which is a space handbook uh which is basically like a Bible of how to use snapshot for different use cases and we are still building it up and um developing it as you can see what we have here as well is uh for example

liquidity and staking pools so what we have are the voting strategies where you can provide the addresses of the vested State tokens and basically read the amount that user really owns they don't own them at you know in a specific moment they have them somewhere but they can still use it to vote so maybe actually the real problem is that the members don't know about it they don't know it's possible so a key issue is actually communication and letting your members know what is possible and how their votes can be actually counted if there are any other use cases if your organizations have any other needs it is

also possible to create your own solution be it voting strategy or a validation strategy uh and here you have a link to uh to the documentation I'll share the slides uh in a second uh and currently we have over 450 different voting strategies on Snapshot uh which basically allows you to do anything when it comes to the voting power and it's the tool is very flexible um same goes for the validation if you have a very specific use case which is not covered by the basic validation which takes into account the voting strategies or uh is not covered

by the gitcoin passport it's also possible to create that so from the slide that all you have the links here also the QR code leads you to um to the slides um if you want to have a look at that uh and do you have any questions or do you have any other ideas or solutions to the problems you defined before that you haven't seen covered here mhm there we have a mic if you want to wa didn't take it before

okay um so regard regarding spam MH um you mentioned validation and then um for us it still doesn't solve it we don't want to have like just a specific set of users being able to to set proposals and uh token amount threshold is not solving it either because um you still if you want to have like good spam protection you have to set it very high we don't want to to do that and even that allows spammers to just buy enough tokens and and and post anyway um and then uh another solution that we thought of is essentially having uh two stages for for a proposal one

that is kind of hidden from the main space um but still allows to gather um kind of a minimum amount of uh um participation or uh support and then if a minimum amount of of uh support is achieved then it becomes like a fully fledged uh proposals and and goes into the main space with a with regular voting okay so you do it on a kind of like a Subspace or a separate space to kind of have a temperature check uh we don't do it at the moment it's it's something that we would wish to have mhm okay um um so this might be actually um possible in the future currently we uh

what you can do is to have sub spaces linked to your main space uh and one space might be used for like the temperature check open uh validation anyone can create it so you may experience a lot of spam but then actually you can take those proposals that had a lot of interest and duplicate them there is like a function where you can just duplicate it uh to the main space which is like the the actual building um actually we we are using sub spaces for something else and I don't think it will solve the spam problem because everything from the Subspace is showing on the main space so you still get the Spam problem yeah yeah yeah uh one thing that you can do um we had this

problem with uh Lio because they are basically the the kings and queens of spam proposals like 10 20 30 100 daily um and what we uh did right now is that one address can only create I think 10 can have 10 active proposals at a time so at least one address cannot um uh create that many a space can only have uh also a limited amount of active proposals at a time so maybe what you can do what we can do specifically for you is to limit the the act the number of active proposals for space um directly uh in the code base so then you

know that you only want to have a specific number only when they pass um then someone else will be able to create a new one one thing that you can do um is to basically what you can do uh when you go to your space settings is when you click on the filter there you can display all the proposals because because by default we are not showing the proposals we flagged and we have an automated and a manual system for doing that um what you can see here is basically uh when the proposal is flagged you only see the warning that it may contain something malicious or or span and basically only

if you click show you will go and see the content uh how to do it you can go to a proposal and then uh report it here and soon we will also have a feature that will allow the admins uh of the space to flag directly uh so that might be quicker and then basically they will not pop up on the main space and if you set a web hook system or a Discord and you get notifications and have multiple users that can basically flag the proposals uh then it might be easier but the problem is if you want to allow everyone to to propose it's not always that easy to avoid spam yeah would that be any

helpful not sure because we we we don't have admins on our space but uh okay is there a reason for that because they can change uh space uh settings and and we have a hnap module installed so it actually uses the space settings for execution validation and we don't want people to be able to change the space settings okay got it uh then maybe we can consider another role or allowing the mod ators to flag proposals so that they won't have access to editing the space settings but they can actually just click to flag something uh and you can whel list those so maybe that's that's also another option cool thank you

yep just to add to that thread I guess um have you guys thought about allow allowing a safe uh smart account or multi to actually be the administrator it's already possible it's already possible yeah it's a bit more complex and uh sa for UI is not um very intuitive when it comes to that but we're also working on a solution that should enable uh easier management this is actually already the case for us because that is is the owner of the the MH

um yeah thank you I I had another question about snapshot to understand a bit how it works so as understand it's all offchain right you just read the blockchain data to um get the balances and I was thinking about your ear C20 balance off voting strategy um so as I understand you it's not possible for you to implement any token loing so is it possible that somebody maybe has let's say 10 accounts and they have some amount of tokens they vote from one account and then transfer them to the second account they vote from the second account and so on um so is it kind of a possible um situation is it possible to mitigate this somehow and uh have you yeah have you thought about this

um what What scenario are you talking about like is the whale like splitting there no no maybe it's not the whale maybe I'm just a user I have a th000 tokens but I want to vote uh as if I have 10,000 tokens told to inflate my voting power so I just create 10 different accounts I vote from the first account I transfer them to the second vote from the second transfer them to the third and so on so I do this 10 times but if I want I can do this 100 times I can do this a thousand times and there will be thousand different accounts voting with 10 tokens each maybe but um yeah in total it will be quite a lot of voting power so this is actually not possible because we checked the balance of the tokens at the

snapshot of The Proposal creation so basically when you have the the chain The Proposal was created here whatever happened afterwards whether it's delegation whether it's transfers whether it's staking whatever is not taken into account we only look at this specific point in time that's why snapshot mhm okay yeah makes sense thank you no worries um if that's the case don't you get the problem that at the snapshot I may have some tokens you know I use them to vote on a proposal and then I kind of sell away my liability by moving the token somewhere else since they're not locked in any way right they're just locked to the specific State at that moment that's that's completely fine we

don't uh we don't want to interfere with your Holdings and like you know kind of Judge what you're doing with it once you vote it the thing is that you should have the tokens be before the proposal has been really posted so you can't see the proposal and get the tokens you just you you hold the tokens first and at the moment the proposal is created we don't look at whatever else has happened later so if you have the tokens you vote and then you sell them that's good for you if you made some profit so yeah I was just thinking if that could introduce some misalignment let's say between the incentives of maximizing the token value you know at that moment this is like this is kind of out of our reach because we we're just purely

governance not really defy so do you have any data on like which how many Dows are using you know certain strategies do that kind of thing like like percentages how many are just using you know the year C20 how many years you to override is there anything like is there a Blog poster I can look at for like yeah actually um let me have a look if we have updated data we have a dashboard on Dune uh and there are couple of other dashboards I can maybe I can just add them to the slides what's the what's the Dune IDE or user ID Dune is basically snapshot Labs that's our profile and then also if you uh if you

search for snapshot uh that was one of the projects in the Aragon hackaton times ago and uh we had a couple of really good submissions with like in-depth analysis of the usage of the of the voting strategies uh the biggest Dows uh what's their setup what's their participation what's their number of their proposals uh and so on so um like a lot of good stuff uh to have a look at it and as data is offchain it's not always up to date but we're now trying to figure out a way with' Dune to make sure that we update it on a regular basis and another question is there any talk about like so most people most people use the governor Bravo contract right but the token contracts himself

have different events that are emitted when like delegations take place and there's like no standard is there any talk about the standarded events um so and the problem there is so if you're building a tool tool to like index you know delegations those kind of things voting power changes uh it's really difficult because you almost have to treat each Dow each token as like its own thing um it's it's hard to build like a tool at kill is there any talk about like standardizing token events specifically it's kind of Niche uh so not at the moment what is currently possible of Delegation is to delegate through snapshot we have our own delegate registry uh contract and also then you can set up a delegation with um the contract that you have uh as as your own

organization however we are also working on Snapshot X which is the onchain voting solution which will actually be uh reading the uh voting power through um the indexer uh which we're also building ourselves uh and then it's highly modular and basically you can also uh Fork the repository it's called um let me have a look if we have it somewhere on [Music] [Music]

the if I can see it [Music] somewhere there you go uh checkpoint and you can basically Fork the repo um and either uh load it in your basically import it in your own project or build on top of that because this is also an open source tool um which we buil first for starnet and then we are currently adapting it to to be evm compatible so you can have a play with that okay thank you mic the root of the mic is I think more optimal I would have uh one more question about

uh like the general architecture so as far as I understand the um voting happens off chain and so also the computation of the outcome happens off chain yes and could you say a bit about the architecture and how it's ensured that it's uh um trustless or decentralized like in particular that no votes are left out and not considered and the correct snapshot balances are considered yeah sure um so basically the as you said the the offchain architecture is not onchain exactly um however our infrastructure

was built um with the idea that basically it's um sensorship resistant it's yeah it's sensorship resistant basically anyone can have a look at what happened throughout the process um and what is going on is that currently on uh you have the snapshot UI on the left side uh when user casts a vote the data with um their signature goes to snapshot uh sequencer which is kind of like the central habub of everything that is going on uh and snapshot sequencer uh is uh verifying the signature sending um the address to our score API score API is responsible for calculation of the

voting power or the eligibility to vote um basically it can communicate with anything like a node a subgraph or an API uh which can be unique to a specific Dow once we receive um the uh the data and the signature is um verified basically uh sequencer has its own private key um once once once it's site with a private key we start at an ipfs we store it on MySQL and what we store there is the entire history of Snapchat so anyone can actually uh Fork uh our infrastructure and replay every single action taken from the very beginning of

uh snapshot every single new space settings update new proposal a vote delegation and so on and so forth you can also read the data from The Hub API directly and basically like there is an entire article about that so I would really recommend to um to go through that to understand like more details but the goal is to decentralize it fully with snapshot X because we know that offchain is not fully decentralized it's not fully trustless um so we really want to make sure that anyone can know that this is basically out of our hands uh and it's all basically code yeah thanks that explain

okay last question I guess and we have a break mine is a quick one uh just any news regarding snapshot X and its release date tentative never ask about the release day I know uh it's coming it's coming it's actually already audited if you go to our repository um if you go to snapshot Labs um let me just do this H and you find the SX repost let me see if we publish it we have SX darket we have our UI we have uh the the apis that would be available for

everyone also um SX evm uh which is currently so SX evm has undergone an audit so code freeze all good and now we are also building the solution for stet do have like really fast and cheap um transaction fees uh on on L so it's coming soon do you know if the SDK is uh final the SDK we're still developing it so it's kind of like it's final for SX CVM um but we're going to probably still change it due to the stet implementation because if you use the snapshot JS SX Js

is much more complicated to set up depending on which um basically which uh which network which layer you're using uh and we also don't provide currently the sjs um documentation because simply it will still evolve that's why that was the to on snapshot of chain not yet on on the onchain but the next talk should be probably on the onchain voting okay thank you thank you all right that's it thanks so much for uh for joining also if you have any questions like you can ping me you can find me you can join our Discord uh and always happy to hear your feedback and

like suggestions for whatever your needs are thank you