A decentralized crowdfunding blockchain application.
The funding interface contract.
The project funding hub implementation contract. Allows for creation of a project, stores a record of all projects created by the hub, and allows users to fund each project.
Child contract which manages ownership of the funding hub.
Project interface contract. Include stages and stage management modifiers.
Project implementation contract. Enables funding of a project, refunds and payouts.
Standard ERC-20 token interface.
Funding token implementation. Allows deposits, withdrawals, transfers, allowance transfers (typically mediated by the token's parent project contract) and keeps a record of individual contributions
Standard overflow and underflow protection routines.
Tests written using Node async/await.
it("Should perform an end-to-end test concluding with pay out.", async () => {
...
});
it("Should demonstrate project expiry, using testrpc 'time travel'.", async () => {
...
});
it("Should demonstrate project expiry, funding failure, and refunds.", async () => {
...
});
it("Should create several projects for one hub.", async () => {
...
});
it("Should not allow funding if hub is deactivated", async () => {
...
});