All around us, we see the challenges of urbanism. From increasingly stressed urban infrastructure to residential complexes which fail to create a community in the true sense of the word. In urban settings where individuals come from heterogeneous cultural backgrounds with varying beliefs and preferences, it is non-trivial to create consensus or undertake public projects. Combine with this the fact that trust in social institutions is falling worldwide.

At koinearth, we believe that the emergence of crypto-economics enabled by blockchains is an opportunity to extrapolate the decentralization philosophy beyond the economy to our social institutions. Our proposed civic crowdfunding solution is a step in this direction.

Civic crowdfunding is a form of crowdfunding where the project being funded is a public or community project. Civic crowdfunding relies on private contributions from individuals to create public (non-excludable) goods. Thus, fundamentally, civic crowdfunding is an institution for taxation-substitute. Instead of a centralized institution collecting contributions towards public goods under the threat of penalty, civic crowdfunding instead asks individuals for voluntary contributions towards projects of their preference. In this view, the contribution of funds towards a project is a much stronger signal of preference rather than the indirect route of taxation combined with preference expressed via an elected representative.

What it does

Our solution enables

  • a convenient way for communities to raise funding for projects by incentivizing individuals to contribute
  • project proposers to enlist broader support in community projects—both as funders and participants
  • communities to build social capital

The use of civic crowdfunding does more than collect funds. It reduces demand risk by confirming the demand for a particular project before its execution starts. As a ripple effect, it also increases the political will to support for projects which have been funded using this mechanism, thus making it easier for politicians to get involved and fasten the regulatory process, where required. Finally, it can bring communities together by making the project a focal point of social interactions in a community.

Our blockchain-based civic crowdfunding solution has the inherent advantage of de-intermediating the process by moving the trust from an intermediary (a civic crowdfunding platform) to code (smart contract). We are also building extensions of this smart contract which can condition the release of the crowdfunded amount from the contract to the requester based on pre-determined milestones using oracles. By tying the payout of the collected funds to progress made towards the public project as determined by oracle(s), our blockchain based solution has the added advantage of making the civic crowdfunding process to scale to scenarios where the donors may not know (or trust) the requester who is promising to deliver the project.

How we built it

We started the development from the bottom up. We first designed the Smart Contract based on a recently proposed mechanism from the research literature. The Provision Point Mechanism with securities can achieve a higher success rate than the popular All-or-Nothing mechanism: the Provision Point mechanism with Securities (PPS) was in fact the contribution of one of the team members. In the All-or-Nothing mechanism, if the target amount needed for the project is collected, the contributions are transferred to the project proposer; otherwise, individual contributions are refunded to the the individual contributors. In PPS, the first condition is the same: if the target amount needed for the project is collected, the contributions are transferred to the project proposer; however, if the target amount is not collected, individual contributions are refunded to the the individual contributors and an additional bonus is paid to each individual contributor. This bonus acts incentivizes individuals who have value for the project to contribute and it has been shown that projects which are valuable to the community will get funded with PPS (under mild assumptions) In our solution, the PPS mechanism is implemented as a Smart Contract.

After implementing the Smart Contract, we turned our focus to the the development of the Dapp. Following the Agile development philosophy, we first created the user stories. We envision two key roles in the Civic Crowdfunding process:

  • Requester : A person who proposes a community project
  • Contributor: A person who contributs funds towards a project

We have built out two different user-flows for each of the roles in our Dapp implementation. The Smart Contracts are created using Solidity. The Dapp is created using Javascript + HTML accessible from a web browser. The Dapp interfaces with the Smart Contract using web3.js and Metamask. The User Interface is built using Angular.js. The complete solution is deployed on AWS with the Smart Contracts deployed on the Ropsten test net.

Challenges we ran into

  • PPS (like most mechanisms in the literature) assumes that the communication channel between agents and the mechanism is synchronous and sequential. However, in blockchains, the interactions between the agents and the smart contract (mechanism) cannot be guaranteed to be recorded in the ledger (arrive at the mechanism) in the order in which they were initiated.
  • When developing a web-browser based Dapp, we need to find solutions for the scenario where a browser may be shut down / crash while the asynchronous interaction has not yet completed.
  • The PPS mechanism needs flotating point operations (natural log, exponentials etc.). Since solidity does not support this natively, we ended up using the gnosis math library.
  • The recommended withdraw currency (rather than send / transfer) design pattern creates challenges for the User Experience.

Accomplishments that we're proud of

We believe our biggest accomplishment has been to build an end-to-end working prototype. This includes

  • A factory contract deployed on the testnet (solidity)
  • A Dapp which interfaces with the factory contract to create projects (JS + Metamask)
  • A UI & a server (database) which acts as a repository of projects (Angular.js + MongoDB)
  • Civic Crowdfunding Contracts created from the factory contract on-demand (solidity)
  • A Dapp which interfaces with these contracts to invest in projects (JS + Metamask)

What we learned

  • Creating a complete solution requires cognizance of the fact that the interactions between the Dapp and the Smart Contract are asynchronous (due to mining delays). This observation impacts the design & implementation in multiple places.
  • The development environment is still evolving and debugging is harder than in traditional programming environments.
  • The temptation to use a centralized server to achieve some functionality is high and in some cases, necessary. This may change as solutions like IPFS develop.
  • The lack of support for floating point math operations can be challenging for some smart contracts.

What's next for koinearth civic crowdfunding

With a social impact focus, our key user base are groups who are passionate about improving their community. Our solution can be used wherever there is a need for the provision of a community / public good using contributions of individual members. We note that one key advantage of our blockchain based solution is a trustless solution so that group members may not trust each other or the requester. The contributors may not even by physical co-located for e.g. expatriated communities living far away from where a public project is being proposed should as fluidly be able to fund projects as members of a resident welfare association.

We understand that bootstrapping civic crowdfunding at scale will require significant field work, at least in the beginning. Even though the primary users of this solution will be citizens / communities, initial deployments can benefit significantly from the involvement of civic society (e.g. NGOs) which work on the field. Self Help Groups (SHGs), micro-credit organizations and peer-to-peer lending organizations may be especially apt as GTM partners. We believe that these organizations can contribute to the adoption in three significant ways:

  • By working with citizen groups to explain the functioning and benefits of the solution.
  • By acting as (project) requesters, they can focus community funds and attentions to specific community projects.
  • By monitoring project progress, they can guide the development of the projects and the platform to improve it. Once the alpha-version of the solution is ready for deployment, one key focus area for us is to build partnerships with such organizations and deploy our solution in the real world.


Built With

Share this project: