Introduction
The concept of multi-sign decentralized companies
2.1 Basics of decentralized companies
2.2 On-chain governance proposal system
2.3 Multi-sign voting system
The concept of hierarchical multi-sign decentralized companies
3.1 Introduction
3.2 Roles in a hierarchical multi-sign company
3.3 Hierarchy-based voting power
Deployment on OpenDApps Cloud
On-chain Governance on OpenDApps Cloud
Team management on OpenDApps Cloud
In this blog post, we dive deep into the concept of hierarchical multi-sign companies, what is their purpose, and how to manage one using the OpenDApps Cloud.
Hierarchical multi-sign companies are one of the three main types of decentralized companies introduced by OpenDApps Cloud. You should read our quick overview of decentralized companies if you have not already:
If you want to read more about other types of decentralized companies you can find the links to our guides at the bottom of this blog post.
Let’s start.
The concept of multi-sign decentralized companies
We have already covered the concept of decentralized companies in our guide to share-based multi-sign companies. Here we will publish a shorter version so we do not repeat the same content. If you are interested in a more in-depth overview of the concept for multi-sign decentralized companies check out our guide here:
Basics of decentralized companies
Decentralized companies on OpenDApps are smart contracts deployed on EVM-compatible blockchains that represent an entity. The team can execute transactions through the contract allowing for it to own assets, execute transfers, call other contracts, and much more.
Decentralized entities on OpenDApps are really powerful and can create complex structures of organizations.
On-chain governance proposal system
On-chain governance relies on the blockchain itself to facilitate decision-making and enforce rules. It brings transparency, immutability, and decentralized control directly to the governance mechanism.
The fundamental idea is to use smart contracts that allow stakeholders/shareholders to propose, discuss, and vote on the execution of transactions on the blockchain.
On OpenDApps Cloud multi-sign decentralized companies use a proposal system to realize on-chain governance.
Multi-sign voting system
After the proposal is submitted to the blockchain, other stakeholders can vote to support the execution of the proposal or skip voting if they are against it. If a proposal meets the criteria for being approved, any stakeholder can then execute the pending transactions and the proposal will be marked as finished.
When the proposal is executed, all pending transactions will be executed as well as making all the changes submitted in the proposal. After executing the proposal is no longer available for voting and if a reversal of changes is needed it is required to make a new proposal.
Introduction
Hierarchical multi-sign companies are smart contracts owned by a team divided into multiple groups with different levels of voting power. The smart contract requires transaction signatures from a predefined % of each hierarchy level and a predefined % of total signatures (total = sum of all signers on all levels).
Hierarchical multi-sign companies are meant for entities where approval from a small group of members, like an executive board, is crucial for a decision to be executed. At the same time, overall approval from the whole team is required.
Roles in a hierarchical multi-sign company
Hierarchical multi-sign companies on OpenDApps Cloud support two main roles — Root signers and Leaf signers.
Root signer role is meant for the higher management positions in a company like an executive board or a group of owners/founders. Their vote is part of the high-tier approval, exclusive to the root signer role, as well as being a part of the overall approval for proposals.
The leaf signer role is meant for the rest of the management and/or team members who are part of the decision-making in the organization. Their vote is part only of the overall approval of proposals.
On OpenDApps Cloud hierarchical multi-sign companies have unlimited root and leaf signers but with a minimum of one root signer to operate.
Hierarchy-based voting power
The hierarchical structure described allows root signers to veto decisions if they do not sign an approval for it to be executed in the high-tier approval. For a proposal to be approved and executed ALL root signers have to approve it.
A large group of leaf signers can also stop a proposal if they do not sign the execution bringing overall approval below the required threshold. For a proposal to be executed 50%(100% on Testnet) of the total signers have to sign and approval. (total = leaf + root count)
Caution should be executed when promoting root signers because their signature is required for every proposal.
ONLY promote trusted and highly available members to the root signer role!
The deployment of companies through OpenDApps Cloud is the same for all types of companies with the only difference being the ownership type.
First, prepare your setup and connect to OpenDApps Cloud dApp. For this guide, we will use Testnet dApp on DeFiChain MetaChain Testnet. Instructions on how to prepare your setup and how to connect to our dApp can be found in our guide:
After connecting to OpenDApps Cloud dApp we will see the dashboard. From there, we have to click the “Create Company” button to start our deployment:
This opens up the “Create New Company” from where we will see a 3-step wizard for the deployment of our decentralized company smart contract:
The first thing is to create and sign the NFT metadata for the company. Just fill in a name for the company, select a logo, and click the “Sign Metadata” button.
When we click on Sign Metadata, our wallet will ask us to create a signature using the eth_signTypedData_v4 method. You can read more about signature types in wallets here: Click me!
In MetaMask it should look like this in the wallet UI:
Once the signature is complete the wizard will move to step 2 and we can mint the metadata before deploying the company. We click on the “Mint Metadata” button:
After the successful upload of the metadata, we can deploy the company on the blockchain. We select “Hierarchical Multi-Sign Contract” as an ownership type and click the “Create Company” button:
If we have deployed other companies we will have to select who will be the initial root signer for the company from the “Select Executor of Transaction”. We will not create a multi-level company and for that, we select “Connected Wallet”:
After the selection of the initial owner, we will see the transaction for deployment in our wallet. In MetaMask execution will look like this:
After confirmation of the transaction and its successful execution, we will be presented with a message for success and buttons to return to the dashboard or to check the transaction in a block explorer.
If we want to check out our company on the dashboard we can use the “Go to dashboard” button. After the deployment of companies, the dApp requires the new blocks to be indexed before the company is visible. If the process is still ongoing you will see a message on your dashboard.
Once the blocks are indexed we can refresh our dashboard and the newly deployed company will be there.
Congratulations! You deployed your first hierarchical multi-sign company! Read the rest of the guide to learn how to manage it through governance.
On-chain governance for hierarchical multi-sign companies is through the proposal system. Proposals are made up of multiple transactions that can be added to the proposal through the usage of our platform.
For example, we will create a proposal for the creation of a token.
Let’s start creating a token by clicking the “Create Token” button on the dashboard:
We will be greeted with a form to fill up and create the token. If we want the token to be owned by our company we will select our shares-based multi-sign company from the owner menu:
We will fill out the rest of the form and get to the last step of the deployment process for the token.
A more in-depth guide for the deployment of tokens can be found in our blog post: TBD
We click the “Create Token” button to finish the deployment process:
As we can see any action we take on OpenDApps Cloud dApp as a multi-sign organization will result in a transaction being added to our draft proposal. From here we can click continue and add additional transactions to our draft proposal like management of tokenomics, managing our treasury, etc. Once we are ready with our draft we can take a look at its state from the “Open draft” button or the menu on our dashboard:
When we visit our proposal we can inspect all the transactions which will be part of it and when we are ready we can publish the proposal to the on-chain governance for voting using the “Publish Proposal” Button:
We will be prompted by our wallet to execute the transaction for publishing the proposal for on-chain voting. In MetaMask this looks like this:
Once the transaction is successful we can go to the list of proposals using two main methods. We can click the “View list of proposals” button after successfully publishing one or by using the menu on our dashboard:
After publishing the proposal we will have to wait for the indexing process to complete before we will have access to our proposal in OpenDApps Cloud dApp:
Once the indexing is complete we can reload the data and we will see our new proposal at the top of the list. The list contains all the proposals from the past and their results:
To place our vote on a proposal we can click the button “Vote for proposal” and a form will open with information about the proposal:
Here we can see all the transactions (method calls), the voting time available and what current approval is. As we can see for our hierarchical multi-sign proposals, an approval of 100% is required from Root Signers, and a 50% total approval (100% on Testnet) is required for execution.
In the example company, we are the only signer, and if we want to vote with support of the proposal we can click the “Vote to Support Proposal” button. This will open up a transaction execution dialog in our wallet. In MetaMast this will look like this:
After the successful execution of the transaction, our vote will be counted for approval on the chain. Background indexing will be required to show our wallet in the voters’ list but the support for approval will be updated immediately allowing execution if the proposal has a total approval > 50% (100% on Testnet) and 100% approval from Root Signers:
To execute an already approved proposal we can click the green “Execute Proposal” button and confirm the transaction in our wallet.
After the successful execution of the proposal, it will no longer be available for voting and it will only be accessible in view-only mode for people to see the results and the transactions executed with it:
Everything you want to do in the name of a hierarchical company has to be done with the on-chain proposal governance system.
Congratulations! You successfully created, published, and executed an on-chain governance proposal.
The hierarchical multi-sign company team is managed through OpenDapps Cloud dApp. To access the team management control you need to go to the dashboard, find your company, and from the menu select “Add/Remove voters”:
After that, we will be redirected to the team management page where we can see the list of root and leaf signers:
From here we can promote and demote signers. Every change to the list of signers will have to be published as a proposal using the on-chain governance. After the successful execution of such a proposal, the list of signers will change and for the next proposal, the new signers will have to participate.
In-depth guides on all available services and other SaaS-related information resources will be available later on in this blog and any related content will be linked here:
Single Entity Decentralized Companies Overview (TBD)
Guide to Shares-based Multi-Sign Decentralized Companies on OpenDApps Cloud
Token-as-a-Service Overview (TBD)
More….