TechEnterprises / WeiFund

A decentralized, fully transparent, open-source crowdfunding platform built on Ethereum.

Home Page:http://weifund.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

WeiFund

A decentralized, fully transparent, open source crowdfunding DApp built on Ethereum.

Portal

The WeiFund portal is intended to act as a bridge between web 2.0 and WeiFund. Currently, it is just a platform veiwer.

weifund-portal.meteor.com

Client Beta on IPFS

The WeiFund client is currently hosted on IPFS (note, you must provide the IPFS and Ethereum API backend):

gateway.ipfs.io/ipfs/QmV6xQdwKB4woawdiVnj7EvdvBbhQQ1Ws4o9MxHaUejYT1

Client Beta on Meteor

The WeiFund client is also being hosted on meteor.com. You can check it out below:

weifund.meteor.com

Installation

  1. 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
    
  2. 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
    
  3. 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
    
  4. Clone this repo and run the dApp

     $ git clone https://github.com/WeiFund/WeiFund && cd WeiFund/app
     $ meteor
    
  5. Browse to http://localhost:3000/ on Chrome or Firefox, run the setup and start crowdfunding!

Run Without Meteor

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

Run Without HTTP Server

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.

  1. Goto /dist/index.html

  2. Right click, and open in Chrome or Firefox

Lookup Utils

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:

  1. Going to the /admin page

  2. Type the Campaign ID Number

  3. Click Lookup Campaign

Deploy WeiFund, PersonaRegistry & WeiHash Locally

One you have WeiFund running, you can deploy the WeiFund and WeiHash contracts to your local blockchain.

  1. Goto the /admin page

  2. Click Deploy WeiFund

  3. Click Deploy WeiHash

  4. Click Deploy Persona

Contracts

WeiFund

The WeiFund.sol contract contains all the core essential buisiness logic of a crowdfunding platform.

WeiHash

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.

WeiAccounts

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.

CampaignAccount

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.

WeiController

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.

StaffPicks

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.

MultiService

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.

CategoryAuction

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.

PersonaRegistry

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).

More About Persona

Standard_Token

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.

More About Standard Tokens

Client-Side Build

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 Stand-Alone Release (.exe, .dmg, bin)

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

Campaign Data, IPFS Data, Data Loss and Recovery

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.

Clearing Locally Stored Data

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.

Persona Identity And Reputation Integration

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

IPFS Integration

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

IPFS Pitfalls/Issues

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.

Donate To WeiFund

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.

Notable Components

  1. Go-Ethereum (decentralized consensus ecosystem)
  2. IPFS (distributed file-storage platform)
  3. MeteorJS (application framework)
  4. Meteor-Build-Client (build tool)
  5. Google's Caja Anti-XSS (anti-xss injection tool)
  6. Bootstrap (visual framework)
  7. Electron (stanalone application wrapper)
  8. Electrify (electron packager for meteor apps)
  9. Persona (identity and reputation system)

License

Copyright (c) 2015 Nick Dodson. http://nickdodson.com . donate @ 0x2e1bd60c7154ec6040505b9056cb36713c0c3e56

About

A decentralized, fully transparent, open-source crowdfunding platform built on Ethereum.

http://weifund.io


Languages

Language:JavaScript 50.8%Language:HTML 49.0%Language:CSS 0.2%