1KSM = 1DAO: How to create your Community at Kreivo

by Pablo Dorado

Post cover


Creating a DAO is usually a not so straightforward process. It usually involves deciding how do you want it to work, the goal, the methods for deciding how to onboard the members of it, and how to govern it.

Additionally, the deployment of a DAO doesn't get much easier: setup a multisig, find a network where to deploy the Smart Contract for your DAO, issue a token among your members, then start receiving funds on the account dedicated for the DAO. Aside from the technical challenge this means, being able to decide managing your community out of the ordinary way (via tokenized governance) implies modifying code you probably have to thoroughly check and audit.

Between the cost of deciding, and the technical expense of deploying, the process of thinking in establishing a DAO hasn't been an easy task.

Until now.

Introducing Communities at Kreivo

At Virto Network, we believe that lowering the technical expense empowers people express their creativity.

With this in mind, we just finished a tough process to ensure you can create a DAO as simple as possible without sacrificing the robustness of the security provided by a blockchain in Kusama, and the flexibility to decide how you want to manage your organization.

In this guide, you'll learn how to setup your DAO the way you want, how to onboard members on your community, vote on referenda, and more!

What is a Community?


In Kreivo, we define a Community as an abstraction of a DAO, represented by an account, governed by a plurality using a referenda track, with a decision method. Alternatively, the DAO can be directly administered by an origin.

The first things you'll need to know before you create your Community (leaving the name and website domain aside 😉) are:

The Admin Origin

First things first: a Community in Kreivo is represented by an Account. The account can receive funds (either KSM or assets from Asset Hub).

Let's get a bit technical here (promise not to be too technical in this explanation): in order to administer the community, or use the community account, you'll need to dispatch a call from the communities pallet in Kreivo.

To dispatch those calls correctly, you have to call them either as a Community Origin (which is the result of successfully passing a poll in the community governance with the requested instructions), or via an Admin Origin.

This Admin Origin can be any caller in Kreivo (like a Community Origin, or a Signed Origin —i.e. you signing an extrinsic—).

Usually, the first Admin Origin on a Community is a Signed where the signing account belongs to the founder of the community. This is because to vote in a community, you need to be a member of it, and communities are created without members. We'll talk about adding members later.

Once your community has enough members, you can set the admin origin to be the Community itself, reaching to the point where your Community is a fully decentalized DAO.

A bit tradeoff of this is that, to manage a community or to take decisions with your community's funds, you'll have to submit a poll, and vote to take decisions.

Take this into consideration, so you'll decide what's better for your community in the long run.

Initial members

Members are the main pillar of a Community. They have ownership of the Community, and therefore are the ones enabled to vote in a community poll. This might seem a bit odd, but this was designed to be able to tell apart one the different affiliations on a community an Account might have.

For example: Alice can be a member of the DAO and the AOD Communities. But each community provides them with a different membership. This means Alice can vote for decisions in the DAO community using their first membership, and vote in the AOD community using the second membership.

Memberships are represented via NFTs, which means it's easier to swap accounts over time. Also, it's possible to keep them as collectibles.

Also, in the future, we plan that accounts which own memberships have certain perks, like executing feeless transactions in Kreivo, or be configured for recurring payments (like salaries).

One of the considerations you'll need to have is the initial amount of memberships, so you can acquire as much memberships you need intiially for your community.

The Decision Method

We talked about how you need to submit a poll to administer and take actions on behalf of your community's account. Let's talk about which mechanisms you can use to decide.

Different communities decide by different methods. Traditionally, DAOs tend to decide by using the token issued by the community. You can do that with Communities in Kreivo.

But there are other ways to let your community decide a poll:

Once you decide which method fits better for your community, you'll be ready to get started with creating a community.

Getting Started

1. Top-up your account in Kreivo

Kreivo uses the same native token and account format as Kusama. This means, your Account Id in Kreivo will be the same in kusama, so you won't need to create another key to manage your presence in Kreivo.

Since Kreivo is not a Kusama System Chain, you'll need to transfer KSM as an asset, not teleport it.

To do so, you'll need to call XcmPallet::limited_reserve_transfer_assets with the following arguments:

Screenshot 2024-04-23 at 10.22.54 PM

Here's an example with the parameters to send 1KSM to an Account. Use it to guide yourself into sending funds to your account in Kreivo.

2. Create the Community

💵 Note: When creating a community, a charge of 0.5 KSM will be taken as a deposit for covering the expenses of creating the community. This is to prevent spamming.

For now, a community is not destroyable, so the deposit is not refundable, and funds are sent directly to the Kreivo Treasury. If you need a chargeback, and to destroy the community, you'll have to submit a referenda to the Kreivo Governance to ask for this.

⚠️ Note: It's really important you remember the Community Id you entered when registering the community. This will be the main identification of your community in Kreivo, and (as you will see below), will be used anywhere.

Enter the details we already discussed about earlier in the form to call CommunitiesManager::register. Once the process is finished, you'll have access to the community account, a track in the community referenda to submit proposals to execute on behalf of your community, and a collection for storing the memberships issued to the members of your community.

Screenshot 2024-04-23 at 10.25.58 PM

Here's an example with some parameters you can use to create a Kreivo community administered by the signature of the founder (that is, you), for which its members vote using a rank-based membership voting method.

3. Acquire memberships and add members

💵 Note: acquiring memberships means you have to pay for them. This is to prevent spamming.

We know it's a big commitment for our first communitise. So, for a limited time, communities will be able to acquire memberships that don't expire and will enable their members to make free transactions.

In order to acquire the memberships for your community members to use them, there are two ways of doing it:

  1. Acquiring the memberships from CommunitiesMemberships, then transferring them to your Community Account.
  2. Topping up some funds to your Community Account (hint: you can use the Index option in account to address to your community's account with your Community Id), then calling Communities::dispatch_as_account to make your Community Account directly.

3.1. Acquire the memberships yourself and transfer them to your Community Account

Make a call to CommunityMemberships::buy_item. Specify which Membership you want to acquire. You'll get them from the collection 0 (the Membership Management collection) and the price of it will be transferred to the Treasury.

Screenshot 2024-04-23 at 11.01.21 PM

Here's an example of this call.

Once you've acquired the membership, you can transfer it to your community's account, to be able to add a member using that membership. Repeat this process as many times you as you need for your members.

Screenshot 2024-04-23 at 11.09.15 PM

3.2. Acquire the memberships using your Community Account

First, transfer some funds to your Community Account, so the account can pay for the assets. There are two ways of finding out your Community's Account. First one is crafting the community account. This is more technical, but basically you'll replace the bytes in the hex-encoded address noted below between the <<<<>>>> signs with the hexadecimal representation of your community account.


Then, remove those signs. Finally, use the format transform tool to get the SS58 representation of your AccountId. Get the prefix 2 (Kusama) account.

Screenshot 2024-04-23 at 10.57.39 PM

Here's an example of this call using your community AccountId.

The second one (the easiest) is using Index on the dest parameter, and entering the Community Id of your community as the index. This will be internally converted as the Community Account for your community.

Screenshot 2024-04-23 at 10.45.52 PM

Here's an example of this call using the Index representation.

Then, you can call Communities::dispatch_as_account to call CommunityMemberships::buy_item, with the parameters we've seen above.

Screenshot 2024-04-23 at 11.17.48 PM

Here's an example of this call.

That's it. Let's add some members!

3.4. Add some members

As your community has some memberships available for its members it's time to call Communities::add_member. Just indicate which is the Account you want to add as a member, and that's it!

Screenshot 2024-04-23 at 11.19.40 PM

Here's an example of this call.

4. Going Beyond! 🚀

Your community account can receive funds in KSM and assets from Assets Hub, as well as using our Payments module. In further articles, we'll explain how you can use these features, and setup a Soverign Account that represents your Community in the Kusama Relay Chain, all of that, using XCM.