Decentralized Crowdfunding Application
By: Dhrumil Dalwadi
Tags: Solidity, Ethereum, Crowdfunding, Web3, Blockchain

Introduction

Crowdfunding is a practice where people provide funds for a project or venture by raising small amounts of money from large number of people. In this day and age, with the advancement of the technology, such practices are now widely done over the internet. There are many platforms to create a campaign for a project and generate capital. But now these platforms are misused by some people. These people collect the money by creating a fake project campaign and steal people’s money rather than using it for the development of projects. Such frauds are quite common these days. To overcome this a decentralized application would be perfect.

What is Blockchain?

The technology of Blockchain was introduced along with Bitcoin in the white paper written by Satoshi Nakamoto back in 2009. Blockchain may be defined as a decentralized, distributed ledger that records the transactions and assets. Blockchain consists of chain of blocks. Each block contains the data, the hash of the previous block and hash of the same block. So if the data is changed inside the blockchain, the hash value will change and this reflects on the other blocks. Due to this one can identify where the data is changed.

Here no one organization can own the chain. Instead the copy of blockchain is distributed to all the peers in the network and whenever any changes are made in the chain, it is reflected in each copy of the blockchain. Due to this, whenever a transaction occurs, it takes about 15 to 30 seconds to confirm as it needs to reflect on all the copies of the chain.

Ethereum

Ethereum is the second largest cryptocurrency platform, behind Bitcoin. It is a decentralized, open source Blockchain featuring Smart Contract functionality. Some of the wallets like Trezor One, Metamask, Exodus, etc. are famous around the globe and easily available. These wallets are used to transact in ether. One of the most commonly used wallet is the Metamask which provides ether not only in main network but also in other test networks for development purposes. With the help of Infura API key, one is able to use the test network for the development of the project

Solidity

Solidity is an Object-Oriented Programming Language used for writing Smart Contracts. A Smart Contract is a program which is stored in a blockchain and is executed automatically when the conditions are met. Smart contracts automatically execute transactions following predetermined rules, and the encrypted records of those transactions are shared across participants. Thus, nobody has to question whether information has been altered for personal benefit.

Web3

Web3 is a library which enables us to interact with a local or remote ethereum node. The web3 JavaScript library interacts with the Ethereum blockchain. It can retrieve user accounts, send transactions, interact with smart contracts, and more. With the help of web3 one is able to connect their wallet with the frontend of the project and establish a communication.

Front-end

The Front-end of the project is made with the help of React JS and Next JS.

React is an open-source front-end Javascript library used to build interfaces and other ui components. It is used to render web elements which makes it relatively easy to create a interface. Semantic-ui is used to generate different elements and provide default styling to those elements.

Next JS is also a Javascript library which is used for server-side rendering with the help of react. The javascript files are executed on the server-side so the content delivery is faster. It is also used to do client-side route transition between pages and linking different pages.