With the advancement of the information society, opportunities to exchange money and spread someone's opinions on the Internet are increasing. Crowdfunding is a method of collecting funds from people who agree with the purpose, product and the wish of service. We can appeal to an unspecified number of people so as to donate funds on the Internet.
However, current crowdfunding systems are not satisfactory for many people due to inefficient examination procedures and high fees.
We propose a system that solves these problems by using blockchain technology to allow people to easily become drafters and supporters of projects. The goal of this system is to make crowdfunding a more efficient way to gather ideas and funds, and ultimately to be a part of the progress of society.
What it does
Project drafters can feel free to submit project ideas. Ideas at this point are not eligible for investment. In addition to drafters, there are "Voters" and "Customers" as a role. "Voters" can vote for a drafter’s idea, and if the idea meets certain criteria, it can be investment target. “Customers" can invest in these ideas. Together with the investment, Customers can also “Like” and “Comment” on the ideas. The investment tokens are given to the drafter, after a few percent fees depending on the drafter's goals are deducted. The handling fee is returned to the "Voter" who voted for the idea and to the "Customer" who took a Like or Comment action on the idea. This decentralized system is profitable system for both parties compared to conventional systems.
How we built it
The screening process of ideas, investment, and transfer of this system will be implemented by smart contracts using solidity and hardhat. We are also implementing a Full-Stack dApp using a front-end composed of Web3uikit and React in the Moralis framework.
The Idea Pool stores details of ideas by "drafters". These ideas contain information. For example, whether "Voter" can vote for the idea, idea content, desired investment amount, investment timeframe, investment type ("all-in" or "all-or-nothing"), etc.
This is the system that the Voter decides to vote for which drafter's idea. The results of which ideas are voted for and how much they are invested are stored on the blockchain, and each Voter is scored based on these results. This score allows Voters to vote more carefully on which ideas should be invested. Therefore, it leads better screening than with traditional systems. If some idea doesn't meet criteria within configured deadline, the idea is slashed automatically by "Chainlink Keeper". In this way, We can reduce the burden of managing croudfunding system.
The Funding Pool stores details of invetment target ideas. Unlike the Idea Pool, only ideas that meet the criteria for a certain number of votes will be saved. Since the number of investments, likes, and comments remain saved, other Customers can also use them as a reference for their investments in this system. If "drafter" select "all-or-nothing" and ideas don't reach registered money within configured deadline, the idea is slashed automatically by "Chainlink Keeper".
A pool of each user exists here to manage withdrawing token. Withdrawals from each user's pool to the owner's Wallet take the following steps.
- The owner of the pool decides the amount to be withdrawn and applies for the withdrawal.
- An approver with some administrative authority approves manually or rejects the withdrawal request, and if approved, executes the requested withdrawal.
This function was implemented from an AML (anti-moneylaundering) perspective and is only intended to limit withdrawals to a certain extent. For this implementation, we refer to Multi Sig Wallet, a Wallet implementation that requires multiple private keys (approvers) when transferring money from the Wallet.
What we learned
- Concept of Moralis
- How to use Chainlink Keeper
- Technical knowledge to build blockchain service by using solidity and hardhat
What's next for MAZUME
We want to implement govenance token to achieve fair and decentralized system. And, 3 roles("Drafter", "Voter", "Customer") are assigne randomly in a fixed period. Then, Random Function will be needed.
Communication helps to judge ideas and know about what kind of person drefters are. We want to implement communication app only peaple with tokens can talk.