Guide to Shares-based Multi-Sign Decentralized Companies on OpenDApps Cloud
An in-depth guide and how-to tutorial for shares-based multi-sign companies on OpenDApps, how to deploy them, and how to manage on-chain proposals.
Table of contents
- 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 shares-based multi-sign decentralized companies
3.1 Introduction
3.2 Company shares as ERC1155 NFTs
3.3 Shares-based voting power - Deployment on OpenDApps Cloud
- On-chain Governance on OpenDApps Cloud
- Company shares ownership transfer
6.1 Transfer shares directly from OpenDApps Cloud
6.2 Transfer shares via NFTs transfer
6.3 Sell/Buy Shares on NFT Marketplaces
Introduction
In this blog post, we dive deep into the concept of shares-based multi-sign Companies, what are they meant to do, and how to deploy one using the OpenDApps Cloud dApp.
Shares-based multi-sign decentralized companies are one of the three main types of decentralized companies supported by OpenDApps Cloud. If you want to read a quick overview of the idea behind decentralized companies, please read our blog post here:
If you are interested in an in-depth guide for one of the other types of decentralized companies you can find the links to our other guides at the bottom of this blog post.
Let’s dive in.
The concept of multi-sign decentralized companies
Basics of decentralized companies
Decentralized companies on OpenDApps are smart contracts deployed on EVM-compatible blockchain that represent the organization as a blockchain entity. The smart contract can be managed by a team of select ownership types and owners can execute transactions through the contract allowing for it to own assets, execute transfers, call functions of other contracts, and much more.
Decentralized companies on OpenDApps are really powerful and can create structures not accessible to developers and organizations using simple DAOs. OpenDApps Cloud provides customers with three main options or ownership of deployed decentralized companies.
On-chain governance proposal system
In the realm of blockchain technology, governance refers to the process of making decisions and implementing changes to a blockchain network, managing a decentralized protocol, or executing company transfers and transactions.
On-chain governance is a specific approach to decentralized governance that relies on the blockchain itself to facilitate decision-making and enforce rules. On-chain governance brings transparency, immutability, and decentralized control directly to the governance mechanism.
The fundamental idea behind on-chain governance is to use smart contracts or protocol-level mechanisms to enable stakeholders/shareholders to propose, discuss, and vote on the execution of transactions on the blockchain.
On OpenDApps Cloud decentralized companies use on-chain governance to execute company operations. Multi-sign companies use a proposal system to realize on-chain governance where any stakeholder can propose with consists of one or more transactions to be executed.
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.
The concept of shares-based multi-sign decentralized companies
Introduction
Shares-based multi-sign companies are smart contracts owned by multiple entities that require transaction signatures from multiple owners to execute transactions.
Shares-based multi-sign companies are created to mimic the real-world private companies where ownership is split into stakeholders owning different % of the company. On OpenDApps Cloud shares-based companies have a total of 1000 shares that can be split between different entities — wallets or other companies.
Any owner of shares has the right to propose, vote on and execute approved proposals in the name of the company through the contract.
Company shares as ERC1155 NFTs
The ownership shares for the shares-based company contract and thus for the company are represented by an NFT, part of an ERC1155 NFT Collection by OpenDApps Ownership Infrastructure.
The NFT shares are fully compatible with the ERC1155 standard making them very flexible for transferring ownership. The shares can be transferred, sold on marketplaces, and auctioned as any other NFT.
In the future, there should be a place for people to trade company shares in a decentralized marketplace specializing in decentralized companies.
An example of such NFT collection with NFTs for company ownership can be seen on DeFiChain MetaChain Testnet:
Shares-based voting power
For shares-based companies, proposals need to have 50% + 1 approval from stakeholders. Every share counts as one vote and the total available shares in a shares-based multi-sign company are 1000. This means that stakeholders holding a total of more than 500 shares have to approve the proposal before it can be executed.
Deployment on OpenDApps Cloud
The deployment of decentralized companies through OpenDApps Cloud is the same for all types of companies with the only difference in the ownership type selection.
First, we need to prepare our setup and connect to OpenDApps Cloud dApp. For this example, we will use Testnets dApp and DeFiChain MetaChain Testnet. You can find instructions on how to prepare your setup and how to connect to our dApp from our guide:
After we have connected to OpenDApps Cloud dApp we will see our 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 we have to do is to create and sign our NFT metadata for the minting of the ownership shares. We do that by filling in a name for our company, selecting a logo, and clicking the “Sign Metadata” button.
When we click on Sign Metadata, our wallet will ask us to create a signature for the metadata using the eth_signTypedData_v4 method. You can read more about signature types in wallets here: Click me!
We are using MetaMask for this guide and the signature looks like this in the wallet UI:
Once we sign the metadata the wizard will move to step 2 where we can mint the metadata for our company before we deploy it. We can do that by clicking the “Mint Metadata” button to upload it to IPFS:
After the successful upload of the metadata to IPFS, the only thing left to do is to deploy the company on the blockchain. For that we need to select a company ownership type for this guide we will select “NFT shares Multi-Sign Contract” and click the “Create Company” button which will deploy a shares-based multi-sign company for us:
If we have already deployed other companies we will have to select who will be the initial owner of the company from the “Select Executor of Transaction”. For this guide, we will not create multi-level companies and will select “Connected Wallet” and click “Confirm”:
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 shares-based multi-sign company! Read the rest of the guide to learn how to manage it through governance and how you can transfer shares to new stakeholders.
Оn-chain Governance on OpenDApps Cloud
On-chain governance for shares-based 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, and then we will create another to make some changes to the tokenomics of the 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. Usually, if we are deploying the token with our wallet instead of a multi-sign we will be prompted from our wallet to confirm the transaction. But because we are using a multi-sign company we will see a success message telling us that the transaction has been added to our draft for a proposal:
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 will see a successful message and an option to view the list of proposals for the company. 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 support is. As we can see for shares-based multi-sign proposals a approval of 50.1% is required. To vote for approval 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 an approval > 50.1%:
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 shares-based company has to be done with the on-chain proposal governance system.
Congratulations! You successfully created, published, and executed an on-chain governance proposal.
Company shares ownership transfer
Shares-based multi-sign company ownership is really flexible due to the ERC1155 implementation of the shares structure. Transfer of ownership can be achieved with any NFT transfer available on the market as well as using OpenDApps Cloud dApp.
When a shares-based company is created all the 1000 shares are transferred to the deployer and from there they can be transferred with any preferred method.
Transfer shares directly from OpenDApps Cloud
One simple way to directly transfer shares is with the OpenDApps Cloud Transfer ownership instrument. To access it you must select the “Transfer Shares” option from the company management menu:
This will open up a page showing us the current shareholders, their stakes, and the option to transfer our shares. To transfer shares to another wallet or company we can click the “Transfer Shares” button.
This will open up a dialog where we can input to whom we wanna transfer shares and how much from our current holding we want to transfer. If we are doing this operation as a company owner of that shares we will see the amount of shares owned by the company. For this guide, we will send 250 shares [25%] to a random community member on DeFiChain MetaChain Testnet.
Once we are ready with our input we can confirm the dialog and a transaction window will show in our wallet if we are executing it as a single entity or the transaction will be added to our draft proposal if we are executing it as a multi-sign company.
After a successful transfer, background indexing will be required for us to see the new list of stakeholders.
After the indexing is finished we will see the new list with all shareholders
Transfer shares via NFTs transfer
Another way to transfer shares is through an NFT transfer directly from your wallet if it supports ERC1155 collections. For this to work you need to add the NFT collection containing the NFTs for your company. For DeFiChain MetaChain Testnet the NFT collection address is: 0xd403A282F7D4FeB117Ba1664E307BE9Bb94d0467
We can add the collection in MetaMask to see our shares as part of our wallet.
After we add the collection we can transfer the NFTs directly to another wallet or company. Just keep in mind that every NFT is worth 0.1% of the ownership stake at the company. For this guide, we will transfer shares to a random community member on DMC Testnet.
Sell/Buy Shares on NFT Marketplaces
Shares for companies can also be sold or bought on any NFT marketplace on the selected blockchain. Such marketplaces include OpenSea, Rarible, and others. You just have to publish an offer or a listing for the NFT and others can buy or sell you shares.
In the future, we plan on launching a dedicated NFT marketplace for company shares to give investors a place to find good deals on decentralized companies.
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:
- OpenDApps Cloud — Testnet Connection and Testing Guide
- Decentralized Companies in OpenDApps Cloud — An Overview
- Guide to Hierarchical Multi-Sign Decentralized Companies on OpenDApps Cloud
- Single Entity Decentralized Companies Overview (TBD)
- Token-as-a-Service Overview (TBD)
- More….