Over the past few years, projects based on blockchain and distributed application (DApp) technologies have disrupted industries such as e-commerce, banking, identity management, and logistics. These projects leverage the speed, transparency, and immutability of blockchain and other distributed ledger technologies to create new innovations in cross-border banking and transaction settlement, self-sovereign identity management, transparent decision-making, and asset tokenization.
Many entities are capitalizing on those qualities by building new projects based on those technologies, while at the same time seeking to fund further development of their projects by tokenizing certain aspects of their platform. These initiatives, known as Initial Coin Offerings or ICOs allow groups to bootstrap development of their projects through crowdfunding.
The rapid boom in the cryptocurrency market has however led to newer projects facing difficulties in starting, promoting, vetting, and running their projects. There are many more ICOs now - legitimate or otherwise - competing for attention, recognition, and funding compared to a year ago. The costs and effort involved in promoting and running crowdfunding initiatives has also increased exponentially as commercial solutions exploiting these new teams apply premium pricing on their own products, thus hampering the ability of legitimate initiative to launch with minimal funding. Scam projects have also begun to take advantage of the market, preying upon unsuspecting individuals that lack proper information to judge the veracity of projects.
That being said, an ecosystem where individuals who seek to support legitimate projects can connect to well-verified ICO teams is a compelling niche to fill. This platform would allow vetted teams to build, market, verify, and expose their crypto crowdfunding initiatives to a community of early adopters. At the same time, this platform would enable both new and experienced crowdfunding participants to assess and fund projects in the same app.
What it does
Monico is a web and mobile app that allows users to build, market, evaluate, and join Initial Coin Offerings or ICOs in a single ecosystem. Currently, the platform supports the Ethereum blockchain implementation, with work in progress to support other blockchain implementations. Companies can set up their ICOs, find auditors and promoters, list their program in the marketplace, manage their community, and receive funds for their project. Users on the other hand can use the app as a cold cryptocurrency wallet (created and stored on their mobile phone), read audit reports made by both the Monico team and external auditors, connect to the ICO teams through social media, participate in token sales, and trade tokens to another peer.
How we built it
Monico is comprised of three front-end components: a mobile app, a web interface for company management, and a control interface for Monico staff to manage companies. A back-end API server hosts transaction records and ICO details. This version of the application currently supports transactions on the Ethereum blockchain. Development began in late May 2018.
The mobile app was designed to allow both first-time and veteran investors to transact with cryptocurrency. A substantial part of the mobile app was built in React Native. For security purposes, it was decided to not store any user private keys on the Monico servers, instead generating and storing wallet keys on the mobile device. Signed messages are sent to the Ethereum blockchain via web3 using Infura APIs. Records of transactions are retrieved from the Monico server through APIs. User accounts are authenticated using AWS Cognito for the purposes of sending and receiving information to the API server. Retrieval of user identity information for the purposes of Know-Your-Customer (KYC) processes is handled partly by the Facebook Login SDK.
The company management interface allows ICO teams to control the company details displayed on the Monico app. This component was primarily built with React.js, with company details being stored on a mysql database (with plans to migrate to blockchain in the future).
The control interface allows Monico community administrators to create new company accounts and set up smart contracts to govern crowdfunding rounds. This too was built primarily on React.js and communicates with the Monico backend server using APIs. Again, Infura APIs are used to communicate with the Ethereum blockchain.
Challenges we ran into
While mobile devices are more powerful now compared to phones released years ago, the complexity of cryptographic operations imposes certain limitations on what can be done on a mobile device. The speed of generating wallets and transactions using those wallets is still fairly problematic, in that it can take up to a minute to complete operations involving those two processes.
The number of available blockchain libraries that interact properly with React is another limiting factor in terms of limiting the number of external services that the app relies on. At the moment only Ethereum has a set of libraries that would enable the development of a proof-of-concept application, which limits the number of blockchains supported at the momment. There is an internal plan to develop new libraries that support cryptocurrency transaction processing and retrieval direct to other blockchains, but due to time and resource constraints this was not implemented.
Balancing privacy and security requirements with app functionality was also a major concern, due to the way that the app needed to handle user data and the requirement for those details to be made available to companies. While the current setup of the application restricts company access to user information to those users who have opted in to their crowdfunding operation, there are many other data privacy implications that need to be factored in when user data is handled in the Monico ecosystem (i.e. should the Monico database actually contain user KYC artifacts, or only the fact that the user has completed KYC?)
Accomplishments that we're proud of
Setting up an app to handle ICOs as both a marketplace and as a community development tool by itself is a challenge. The market research conducted prior to proceeding with the development of this product revealed that most apps tailoring to this particular segment of the market tended to rely on centralized servers to facilitate the transaction, as well as relying on online wallets to send and receive cryptocurrency. The progress the Monico team has made, as well as future builds of the product will enable increased consumer confidence in the aspects of fund safety and company reliability by decentralizing the key points of entry for breaches (e.g. hot user wallets, poor company vetting, reliance on central transaction servers)
What we learned
Playing with new technologies, namely blockchains, DApps, and React, has made the team grow radically in terms of application design and implementation. Learning and understanding the economics and interactions of actors and agents within the cryptocurrency and blockchain space has made the team realize that there are many more applications of the technology besides making a quick profit, with all the legal, social, and economic ramifications that the development of an application within the space entails.
What's next for Monico
Monico development will continue long after the completion of this proof-of-concept app. The team intends to build upon the social aspects of the platform, potentially integrating chat and other social applications into the app, more deeply binding users into the community.
Support for other blockchain platforms are planned, including Stellar, Bitcoin, NEM, Monero, Litecoin among others. Transactioning between these implementations will be worked on through an intermediate distributed ledger, thus nearly removing the need for a physical or virtual server.
The peer-to-peer aspect of currency trading will be expanded to include orderbook trading on the same distributed ledger, further expanding on the idea of the app as a one-stop shop for crypto trading.
In the short term, the team intends to support further development of the platform through an ICO running on the Monico platform, with the hope of building upon the research and development work done during this phase to come up with a polished and comprehensive platform that supports not just the trading and ICO space of blockchains, but also other practical aspects such as self-sovereign identity management and universal KYC processes.