/blockparty

NO BLOCK NO PARTY

Primary LanguageJavaScriptMIT LicenseMIT

What is this?

Demo Video

Have you ever encountered free party or meetup and realised that half the people registered did not actually turn up? BlockParty solves this problem by providing a simple incentive for people to register only if they mean it.

How does this work?

Simple. You pay small deposit when you register. You lose your deposit if you do not turn up. You will get your deposit back + we split the deposit of whom did not turn up. You go to party and may end up getting more money.

Demo

  • The demo site Real sites allows for participants to only Register and pay deposit to the site. Since this is a demo site, it allows you to Register, Attend, then press Payback button to simulate how it all works. Pressing Reset will reset the status so that you can play again.

  • The last event on Mainnet is on http://bit.ly/blckprty.

How to setup

Option 1: access from Mist

This is the standard way of accessing Dapp

Option 2: access from browser and Metamask Chrome extension

For those of you who have problem installing the Mist browser, or no time to download big blockchain, why don't you try out via this browser based extension

  • Step 1: Install Metamask Chrome extension
  • Step 2: Create an account on your metamask, and make sure you have at least 1.1 Ether.
  • Step 3: Refresh the page

Option 3: access from normal browser

This has been the standard way to access Dapp prior to Ethereum Wallet (lower than v 0.7)

  • Step 1: Install Mist browser (v 0.8 or higher), and make sure you choose mainnet. Here is a quick video tutorial
  • Step 2: Create an account on your wallet, and make sure you have at least 1.1 Ether.
  • Step 3: Stop Ethereum Wallet
  • Step 4: Start geth(Go Etheruem, command line tool) with the following options. (See the installation instructions for each platform)
  • Step 5: Refresh this page
geth --unlock 0 --rpc --rpcapi "eth,net,web3" --rpccorsdomain '*'

NOTE: --unlock 0 will unlock with one account. --unlock 0 1 will unlock with two accounts.

How to play?

  • Type your twitter account, pick one of your address, then press 'Register'. It will take 10 to 30 seconds to get verified and you will receive notification.

FAQ

Can I cancel my registration?

No

What happens if I do not withdraw my payout?

If you do not withdraw your payout within one week after the event is end, the host (contract owner) will clear the balance from the contract and the remaining blance goes back to the host, so do not keep them hanging

What happens if the event is canceled?

In case the event is canceled, all registered people can withdraw their deposit. Make sure that you register with correct twitter account so that the host can notify you.

What if there is a bug in the contract!

If the bug is found before the contract is compromised, the host can kill the contract and all the deposit goes back to the host so he/she can manually return the deposit. If the contract is compromised and the deposit is stolen, or his/her private key is lost/stolen, I am afraid that the host cannot compensate for you. Please assess the risk before you participate the event.

Can I host my own event using BlockParty?

Please contact the author of this project if you are interested.

Do you take any commission?

No, but if you like this project, it would be great if you can donate to my 5 days Sahara trekking challenge page mentioning "BlockParty". This will help Whizz-Kidz, disabled children's charity, which I am currently fund raising.

Terms and conditions

By downloading and deploying this software, you agree to our terms and conditions of use. We accept no responsibility whether in contract, tort or otherwise for any loss or damage arising out of or in connection with your use of our software and recommend that you ensure your devices are protected by using appropriate virus protection.

Hacking guide

Prerequisite

Installation

  • Run npm

NOTE: If it installs extra zeppilin contracts, do not commit, but remove them.

Running test

  • Run testrpc in one console
  • Generate test public/secret key
cd tmp/
openssl genrsa 2048 > test_private.key
openssl rsa -pubout < test_private.key > test_public.key
  • Run truffle test --network test

Running locally

  • Run testrpc -a 30 in one console
  • Run truffle migrate
  • Run npm run dev
  • Open http://localhost:8080

Building asset files to deploy

  • Run npm run build
  • Upload the content of files under build directory

Confirmation repository code (experimental)

By passing confirmation parameter of Conference during migration, it can allow user to claim attendance with confirmation code.

Encryption (experimental)

By passing public key file location to parameter of Conference during migration, it can allow user to register with their user name encrypted.

Configurable values (experimental)

Event name is configurable as name

Example

First, deploy the contract.

truffle migrate --config '{"name":"CodeUp No..", "encryption":"./tmp/test_public.key", "confirmation":true}'

As an example, assume you have the following two codes at input.txt

$ cat tmp/input.txt
1234567890
0987654321

Running repository.js will add these confirmation code into the ConfirmationRepository.

$truffle exec scripts/repository.js -t confirmation -i tmp/input.txt
Adding 1234567890  as  0xf654274a8983066b9f810ed158b3fa883c9d26553429193e4aba65b44b76c835
Adding 0987654321  as  0x295153b1a40cec2698cd2fb0d75c8137a5c43d67ed5e4b7abbd463bc2b0dfac7

If you run the same program again, it will detect.

$truffle exec scripts/repository.js -t confirmation -i input.txt
Using network 'development'.

code 1234567890  is already registered. Claimed by  0x0000000000000000000000000000000000000000
code 0987654321  is already registered. Claimed by  0x0000000000000000000000000000000000000000

Pass the original confirmation ion codes to the participants. Once participants use the code to register, you can check who used the codes by running the script again.

$truffle exec scripts/repository.js -t confirmation -i input.txt
Using network 'development'.

code 1234567890  is already registered. Claimed by 0x12ff7cfb557a7d0404b694da8d6106e219306a93
code 0987654321  is already registered. Claimed by 0xc7ce74c8c7f2e7c5e6d039c5a48fae053ad5c952

Deploying and running on real network

For ropsten and mainnet it now deploys via Infura. Pass the extra to set deployment specific

--network $NETWORK --mnemonic $SECRET

NOTE: ropsten and mainnet uses different gasPrice. Check truffle.js file and scripts/util/set_gas.js for the detail.

Essentials

See Issues

Milestones

Local meetups ready (~ 2017 September)

  • ~~Register with participant's real name
  • Add new event
  • ~~Allow other people to become the owner of the event
  • Dispute period (participants can demand to cancel the event to avoid event owners cheating)
  • ~~Test that it scales up to 200 people

Wishlists

  • Show who event owner is
  • Upload the deployed source code to etherscan.io
  • Add redux
  • Add testing for frontend
  • Change payback ratio (eg: first registered, more reward)
  • Let user to register by sending Ether (so that they could potentially register not via wallet but via exchange, etc)
  • Automatic check in
  • Waitlist
  • Transfer my spot
  • Refresh info when someone else register/attend
  • Sponsor slots (sponsors can register with ether but they have no right to get payout. This is to guarantee extra payout for promotion purpose).