All Projects → status-im → Open Bounty

status-im / Open Bounty

Licence: other
Enable communities to distribute funds to push their cause forward.

Programming Languages

javascript
184084 projects - #8 most used programming language
clojure
4091 projects

Projects that are alternatives of or similar to Open Bounty

Cryptotrader
This is an experimental trading bot framework written in PHP. It may contain bugs and should not be trusted with much money
Stars: ✭ 108 (-10.74%)
Mutual labels:  bot, ethereum
Go Web3
Ethereum Go Client [obsolete]
Stars: ✭ 120 (-0.83%)
Mutual labels:  blockchain, ethereum
Backend Ico Dashboard
Free & open-source dashboard for your next ICO, crowdsale or tokensale
Stars: ✭ 110 (-9.09%)
Mutual labels:  blockchain, ethereum
Ethereumjs Blockchain
Project is in active development and has been moved to the EthereumJS VM monorepo.
Stars: ✭ 119 (-1.65%)
Mutual labels:  blockchain, ethereum
Eth Cli
CLI swiss army knife for Ethereum developers
Stars: ✭ 109 (-9.92%)
Mutual labels:  blockchain, ethereum
Truffle
A tool for developing smart contracts. Crafted with the finest cacaos.
Stars: ✭ 11,909 (+9742.15%)
Mutual labels:  blockchain, ethereum
Mosaic Contracts
Mosaic-0: Gateways and anchors on top of Ethereum to scale DApps
Stars: ✭ 119 (-1.65%)
Mutual labels:  blockchain, ethereum
Indy Leaderboard
Example game leaderboard dApp utilizing EbakusDB on Ebakus blockchain
Stars: ✭ 103 (-14.88%)
Mutual labels:  blockchain, ethereum
Stocklook
crypto currency library for trading & market making bots, account management, and data analysis
Stars: ✭ 119 (-1.65%)
Mutual labels:  blockchain, ethereum
Hydro Scaffold Dex
A Decentralized Exchange Scaffold - launch a DEX in minutes
Stars: ✭ 112 (-7.44%)
Mutual labels:  blockchain, ethereum
Learn Solidity With Examples
A repo full of smart contracts written in Solidity
Stars: ✭ 106 (-12.4%)
Mutual labels:  blockchain, ethereum
Cyb Archeology
🌎 Personal immortal robot for the The Great Web
Stars: ✭ 117 (-3.31%)
Mutual labels:  blockchain, ethereum
Smart Contract Sanctuary
🐦🌴🌴🌴🦕 A home for ethereum smart contracts. 🏠
Stars: ✭ 99 (-18.18%)
Mutual labels:  blockchain, ethereum
Ergo
The Language for Smart Legal Contracts
Stars: ✭ 108 (-10.74%)
Mutual labels:  blockchain, ethereum
Diadata
DIAdata.org platform
Stars: ✭ 103 (-14.88%)
Mutual labels:  blockchain, ethereum
Vscode Azure Blockchain Ethereum
Blockchain extension for VS Code
Stars: ✭ 111 (-8.26%)
Mutual labels:  blockchain, ethereum
Masterblockchain
Stars: ✭ 100 (-17.36%)
Mutual labels:  blockchain, ethereum
Awesome Cryptocurrency Security
😎 Curated list about cryptocurrency security (reverse / exploit / fuzz..)
Stars: ✭ 102 (-15.7%)
Mutual labels:  blockchain, ethereum
Blockapi
A general framework for blockchain analytics
Stars: ✭ 111 (-8.26%)
Mutual labels:  blockchain, ethereum
Desktop
The official Musicoin Desktop Wallet Application
Stars: ✭ 112 (-7.44%)
Mutual labels:  blockchain, ethereum

Status Open Bounty

Riot Chat Badge

Allows you to set bounties for GitHub issues, paid out in Ether or any ERC-20 token.

More information: https://wiki.status.im/Status_Open_Bounty

Live production version: https://openbounty.status.im The master branch is automatically deployed here.

Live testnet (Ropsten) version: https://openbounty.status.im:444 The develop branch is automatically deployed here.

Table of contents

Prerequisites

You will need Leiningen 2.0 or above installed. Also, make sure that you have wkhtmltoimage available in your PATH. On macOS, it can be installed via brew cask install wkhtmltopdf.

PostgreSQL

Install PostgreSQL, and set it up properly:

psql postgres -c "CREATE USER commiteth WITH PASSWORD 'commiteth';"
psql postgres -c "CREATE DATABASE commiteth;"

Application config

Create /config-dev.edn, and populate it correctly, according to env/dev/resources/config.edn. The config fields are described below:

Key Description
dev Currently specifies whether Swagger UI endpoints should be added to routes
port HTTP port for the Ring web app
dev-login Local development only. Set it to the GitHub name of your dev user in order to log in to the system and to bypass OAuth. Following this, set server-address according to your localhost address.
nrepl-port nREPL port for development
jdbc-database-url PostgreSQL database URL; for instance, the URL to the local db would be jdbc:postgresql://localhost/commiteth?user=commiteth&password=commiteth
server-address The URL and port of the local server that can be resolved from public internet. It will be used as a redirect URI during GitHub OAuth authorization process.
eth-account Ethereum account ID for the bot. Make sure it has some test ether to cover the cost of gas for deploying contracts
eth-password Ethereum account password for the bot
eth-rpc-url RPC URL to the Ethereum node, e.g. Geth. Either local or remote
eth-wallet-file Location of the wallet file. If Geth is run with the parameters specified below, it will reside under $HOME/.ropsten/keystore.
offline-signing Specifies whether to sign transactions locally before sending. Default is true. Set to false when connecting to the local Geth node that unlocks accounts.
tokenreg-base-format Should be set to :status
github-client-id Related to OAuth. Copied from the GitHub account: Settings -> Developer settings -> OAuth Apps
github-client-secret Related to OAuth. Copied from theGitHub account: Settings -> Developer settings -> OAuth Apps
github-user GitHub username for a bot account. It is used for posting bounty comments.
github-password GitHub password for a bot account.
webhook-secret Secret string to be used when creating a GitHub App
user-whitelist Set of GitHub user/org IDs to be whitelisted. E.g. #{"status-im" "your_org"}
testnet-token-data Token data map; useful if there are Geth connectivity problems

GitHub integration

Open Bounty uses both OAuth App and GitHub App integration.

OAuth App

Follow the steps here. Specify the value of :server-address as "Homepage URL", and :server-address + /callback as "Authorization callback URL". Be sure to copy the Client ID and Client Secret values in the config file.

GitHub App

Follow the steps here. Be sure to specify :server-address + /webhook-app as "Webhook URL", and :webhook-secret as "Webhook Secret".

Contracts

All information related to development of OpenBounty smart contracts can be found in contracts/.

Running

Ethereum node

There are two options for connecting to an Ethereum node: either run a local node with an unlocked account, or connect to a remote Geth node or Infura. We will be connecting to Ropsten, which is an Ethereum network used for testing.

Local

To launch a local geth node with the bot account unlocked, issue the following command:

#!/bin/bash
geth --fast --testnet --cache=1024 --datadir=$HOME/.ropsten --verbosity 4 --port 50100 --ipcpath ~/.ropsten/geth.ipc --rpc --rpcaddr 127.0.0.1 --rpcport 8545 --rpcapi db,eth,net,web3,personal --rpccorsdomain "https://wallet.ethereum.org" --unlock "0xYOUR_ADDR" --password <(echo "YOUR_PASSPHRASE")

Remote

Register at Infura. You will receive an email with the provider's URLs. Paste a URL for the Ropsten network into config.edn under the :eth-rpc-url key, and set :offline-signing to true.

CSS auto-compilation

Launch the following command in a separate shell:

lein less auto

Solidity compilation

Compile Solidity files into Java classes with:

cd contracts && ./build.sh

Clojure app without REPL

Launch the following commands, each in its own shell:

lein run
lein figwheel

Clojure app with REPL

You'll have to start a REPL on the backend and frontend.

lein repl

Now you can start a CLJS REPL:

(use 'figwheel-sidecar.repl-api)
(start-figwheel!)
(cljs-repl)

(Alternatively, if you use emacs and CIDER, you can run cider-jack-in. Details here)

Next, start the application from the clojure REPL with:

(reset)

Uberjar build

To create a standalone uberjar:

lein uberjar

This creates target/uberjar/commiteth.jar. You can run it with the following command from within the project's root:

java -Dconf=<path_to_config.edn> -jar target/uberjar/commiteth.jar

Testing

QA

Please refer to doc/testing.md.

Clojure tests

lein test

ClojureScript tests

lein with-profile test doo phantom test

Reagent component devcards

lein with-profile test figwheel devcards

Open http://localhost:3449/cards.html

CircleCI

We use CircleCI to run unit tests. For this to work, set the following env vars:

These env vars override the configuration parameters that are usually set using the config.edn file.

  • ETH_ACCOUNT - as in config.edn
  • ETH_PASSWORD - as in config.edn
  • ETH_RPC_URL - as in config.edn
  • ETH_WALLET_FILE - as in config.edn
  • ETH_WALLET_JSON - contents of this will be written to ETH_WALLET_FILE

💡 Ideally, we'd create those parameters in a script. PR welcome.

Update landing page

Landing page is static and different CSS and JS due to time constraints.

  • Build CSS with Gulp (see static_landing_page/README.md
  • Make changes and ./build-landing-page.sh

This copies the necessary artifacts over to the resources dir.

More info

Detailed information on code structure, troubleshooting, and more can be found here.

License

Licensed under the Affero General Public License v3.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].