A decentralized, fully transparent, open source crowdfunding DApp built on Ethereum.
The WeiFund portal is intended to act as a bridge between web 2.0 and WeiFund. Currently, it is just a platform veiwer.
The WeiFund client is currently hosted on IPFS (note, you must provide the IPFS and Ethereum API backend):
gateway.ipfs.io/ipfs/QmV6xQdwKB4woawdiVnj7EvdvBbhQQ1Ws4o9MxHaUejYT1
The WeiFund client is also being hosted on meteor.com. You can check it out below:
-
Install Curl, Git, Meteor, Go-Ethereun and IPFS 4.0+ (download and extract IPFS binary here)
$ sudo apt-get install curl git geth // install curl, git and geth $ curl https://install.meteor.com/ | sh // meteor install $ cd go-ipfs && sudo sh install.sh // install ipfs
-
Setup an Ethereum account and Run a local geth node:
$ geth account new $ geth --rpc --rpccorsdomain="http://localhost:3000" --unlock=0 // hit `Enter` key after this
-
Setup and Run a local IPFS daemon:
$ ipfs init $ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://localhost:3000"]' $ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]' $ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]' $ ipfs daemon
-
Clone this repo and run the dApp
$ git clone https://github.com/WeiFund/WeiFund && cd WeiFund/app $ meteor
-
Browse to
http://localhost:3000/
on Chrome or Firefox, run the setup and start crowdfunding!
You may also choose to run WeiFund without the Meteor framework/platform. You can do this by running a simple server for the WeiFund client. Here is an example using Python:
$ cd WeiFund/dist
$ python -m SimpleHTTPServer 3000
You may be able to run WeiFund without a server by simply opening the /dist/index.html
file in a browser. However, it is not recommended as some client functionality may not work.
-
Goto
/dist/index.html
-
Right click, and open in Chrome or Firefox
You can manually lookup campaign or contributor information by going to the admin page and using the lookup tools. For example, lookup a campaign by:
-
Going to the
/admin
page -
Type the Campaign
ID
Number -
Click
Lookup Campaign
One you have WeiFund running, you can deploy the WeiFund and WeiHash contracts to your local blockchain.
-
Goto the
/admin
page -
Click
Deploy WeiFund
-
Click
Deploy WeiHash
-
Click
Deploy Persona
The WeiFund.sol contract contains all the core essential buisiness logic of a crowdfunding platform.
The WeiHash.sol contract connects WeiFund campaigns securely to IPFS or other decentralized file storage systems. Hashes can only be registered for a campaign by the owner of the campaign.
The WeiAccounts.sol contract allows campaigns to have their own Ethereum account and identity. .This means all Ether that is sent to that account will be forwarded and contributed verifiably to the WeiFund campaign in question. The WeiAccounts system is essentially an account factory and registry, so all campaign account forwarding contracts are the same, and are securely registered.
The CampaignAccount.sol contract is what is generated by thhe WeiAccounts contract. It allows a forwarding proxy of sorts, so that all money sent to that address is forwarded to the campaign specified in WeiFund.
The WeiController.sol contract enables campaign operators to create a token dispersal mechanism that disperses Ethereum standard tokens to campaign contributors. Tokens are issued to the controller, and the controller is activated when campaign contributions are made, thus dispersing tokens to campaign contributors securely. Any remaining tokens held by the controller can be given back to the controller owner.
The StaffPicks.sol is a prototype campaign picking contract that allows the WeiFund core team to pick campaigns we believe are of note for the platform. While this does have some aspects of centralization, we believe it's a positive step toward platform curation, that will eventually be replaced by more decentralized services.
The MultiService.sol is a prototype multi-configuration service provider for WeiFund crowdfunding campaigns. This allows campaigns to have multiple configuration services activated by the WeiFund config hooks.
The CategoryAuction.sol contract is part of our campaign promotion system. This allows campaign operators to bid on "Promoted Campaign" slots that will be available at the top of each category. Auctions are held every 7 days. The highest bid for that week gets the promoted campaign slot for the next week (7 days). All auction funds will be donated to the WeiFund organization as a tasteful way to support further platform development.
The PersonaRegistry.sol is a prototype identity and reputation system contract that links things like IPFS hashes to Ethereum accounts to establish a very basic and unverified identity. The WeiFund platform uses this system for all account identity (i.e. names and pictures for Ethereum accounts).
The Standard_Token.sol contract enables campaign operators to create their own Ethereum standard token system. This could be used for equity shares and voting rights in decentralized governance systems such as BoardRoom.
Install the meteor-build-client suite and run it in the Meteor app folder. This will build the meteor application down into three code files, and asset folders.
$ [sudo] npm install -g meteor-build-client
$ cd WeiFund/app
$ meteor-build-client ../dist -p ""
Checkout Meteor-Build-Client here
Build WeiFund into a Stand-alone application for your OS by using installing and using the Electrify packager. Note, this will package WeiFund into an electron wrapper for your OS (200 mb). The app will build to WeiFund/standalone
.
$ npm install -g electrify
$ cd WeiFund/app && mkdir ../standalone
$ electrify package -o ../standalone -- --version=1.0
Checkout Electrify/Electron here
The WeiFund core client uses IPFS for data storage. Sometimes, things go wrong and data is lost. To prevent this, all new campaigns you start have an immediate persistent local data backup made at multiple points of the campaign creation. In case of a bad transaction, or browser malfunction, this data is available in the /admin page under IPFS Data Recovery. Type "latest" and recover the latest campaign data backed up. Then follow the instructions for IPFS hash assignment to campaign data.
These mechanisms should not be relied on.
All loaded campaign, contributor and persona data is locally stored in your browsers persistent local storage. Sometimes, data gets corrupted and you will want to clear all locally stored data. You can do this by going to "/admin" and then clearing t
he data by using the "Collecitons Manager". This will clear all locally stored data for WeiFund.
The Persona Identity and reputation system is used to handle account identification for WeiFund. This includes things like account pictures and names. Persona also uses IPFS.
Checkout the Persona Identity and Reputation System here
WeiFund uses IPFS to handle all non-blockchain/consensus campaign and contributor data. IPFS is a very new and experimental system. This means that sometimes campaign data may not appear properly.
Checkout the IPFS file system here
If you have successfully created a WeiFund campaign and the IPFS data has not shown up in the WeiFund portal or your own client, it may be because your IPFS hash has not been passed around enough to the various nodes on the IPFS network.
The best way to fix this, is to view your hash on your own gateway http://your_local_node_address:8080/ipfs/your_ipfs_hash
, then view it on the main IPFS gateway, either http://ipfs.io/ipfs/your_ipfs_hash
or http://gateway.ipfs.io/ipfs/your_ipfs_hash
. This way your campaign's IPFS data can be retrieved, stored and spread in the swarm by others.
Note, all essential campaign information necessary for crowdfunding business logic is not stored with IPFS, so your campaign will be unaffected on the Ethereum/blockchain side of things.
You can donate to the WeiFund organization by sending Ether to the address. Donations will be used to support the project of decentralized crowdfunding on Ethereum.
0xe91c8111086d89fab3b231afd49c16ff308a1254
We thank you for all your support.
- Go-Ethereum (decentralized consensus ecosystem)
- IPFS (distributed file-storage platform)
- MeteorJS (application framework)
- Meteor-Build-Client (build tool)
- Google's Caja Anti-XSS (anti-xss injection tool)
- Bootstrap (visual framework)
- Electron (stanalone application wrapper)
- Electrify (electron packager for meteor apps)
- Persona (identity and reputation system)
Copyright (c) 2015 Nick Dodson. http://nickdodson.com . donate @ 0x2e1bd60c7154ec6040505b9056cb36713c0c3e56