This idea came after deep diving into token curated registries and token bonding curves. In the digital economy, individuals have switched from being passive consumers to being an essential force in creating value for organizations (as users, contractors, contributors...). Unfortunately, current legal entities are unable to provide organizations with mechanisms to financially align their community with their financial success. Cryptocurrencies and the bonding curve model open new possibilities to address this problem. We published the paper describing Continuous Organizations this week.
What it does
A Continuous Organization is an organization that relies on a bonding curve smart-contract (called Decentralized Autonomous Trust) to issue fully digital security tokens (FAIR securities) that can be used to raise funds and incentivize the community. We developed (i) the smart-contract (ii) a CLI to deploy it and (iii) web interfaces to let stakeholders interact with Continuous Organizations (buy, shell, grant...).
The DAT main functions are:
- buy() to let an investor buy tokens from the bonding curve
- sell() to let an investor sell tokens to the bonding curve
- revenue() to let a customer pay his invoice
- dividends() to let the organization reward its token holders with dividends (paid in ETH but stored in Tokens)
Each functions interact with bonding curve according to what is specified in the paper.
How we built it
We implemented the Decentralized Autonomous Trust (DAT) as a smart-contract, built on top of Open Zeppelin' standard contracts and using ERC-20 tokens for the time being. We also developed a CLI in python to deploy the DAT based on a YAML configuration file. Finally, we implemented a simple web UI to let stakeholders interact with DAT.
Challenges we ran into
- Deploying a smart-contract from the command-line proved to be much trickier than anticipated. It was mostly due to the fact that - unless you have a local synced ethereum node - it is not straightforward to connect to a wallet that will pay the gas to deploy the smart-contract. Hopefully, CLI support for WalletConnect is around the corner. For the moment, we defaulted to creating a local wallet (clearly not the most secure option) and asking the user to fund it with enough ETH to deploy the contract.
- We realized that it is not possible in Solidity to loop through a map structure. We needed to do just that to be able to "airdrop" dividend tokens in the accounts of the Continuous Organization token holders. We had to implement a quick, not satisfying, workaround.
- Most of us were not familiar with React and, being probably too tired, we finally had to take the decision to revert back to a much more familiar jQuery/Boostrap environment.
- The Web3.js API is evolving so fast that it's very hard for beginners to get started due to the disparities of the documentation online.
- Connecting Web3.js and react was definitely not as easy as expected
- Not being able to use floats in Solidity complicated things for us
- The Wifi connection was slow and spotty
Accomplishments that we're proud of
- We made it through the night!
- We made it work!
What we learned
- Devtools for ethereum are still very young
- Metamask cannot send tokens (!)
- Don't be late if you want food
- Despite all this, hackathons are fun :)
What's next for Continuous Organizations
We'll pursue the development until we reach a reference implementation for Continuous Organization that we can be proud of :) There are many technical aspects to improve:
- Enable external Wallet connection (HD Wallet, Metamask, WalletConnect...) to make the smart-contract deployment easier.
- Implement security tokens (Harbour? Polymath? Custom? etc...) instead of pure ERC-20 tokens to restrict transfers to KYCed addresses.
- Add KYC. The On-chain compliance mechanism proposed by Wyre (using NFTs) looks very interesting on that regard.
- Connect with a 0x permissioned pool to increase exposure and liquidity on the secondary market.
- Improve Web UX / Integrate with IPFS. Automatically push to CloudFlare's IPFS Gateway> for hosting?
Another, non technical next-step, is to explore in depth the legal side of Continuous Organizations and ideally work with a forward-thinking regulator to give a legal regulatory framework around Continuous Organizations.