• This repository has been archived on 26/Apr/2019
  • Stars
    star
    118
  • Rank 299,923 (Top 6 %)
  • Language
    JavaScript
  • License
    GNU Affero Genera...
  • Created over 8 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Enable communities to distribute funds to push their cause forward.

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

More Repositories

1

status-mobile

a free (libre) open source, mobile OS for Ethereum
Clojure
3,897
star
2

react-native-desktop-qt

A Desktop port of React Native, driven by Qt, forked from Canonical
JavaScript
1,194
star
3

status-go

The Status module that consumes go-ethereum
Go
728
star
4

nimbus-eth1

Nimbus: an Ethereum Execution Client for Resource-Restricted Devices
Nim
562
star
5

nimbus-eth2

Nim implementation of the Ethereum Beacon Chain
Nim
531
star
6

nim-chronos

Chronos - An efficient library for asynchronous programming
Nim
354
star
7

status-desktop

Status Desktop client made in Nim & QML
QML
291
star
8

status-keycard

Our Javacard Implementation for making secure transactions within Status and Ethereum
Java
195
star
9

status-network-token

Smart Contracts for the Status Contribution Period, along with Genesis and Network Tokens
JavaScript
148
star
10

nim-chronicles

A crafty implementation of structured logging for Nim.
Nim
138
star
11

nim-stew

stew is collection of utilities, std library extensions and budding libraries that are frequently used at Status, but are too small to deserve their own git repository.
Nim
119
star
12

doubleratchet

The Double Ratchet Algorithm implementation in Go
Go
110
star
13

nim-faststreams

Nearly zero-overhead input/output streams for Nim
Nim
107
star
14

nim-taskpools

Lightweight, energy-efficient, easily auditable threadpool
Nim
98
star
15

swarms

Swarm Home. New, completed and in-progress features for Status
HTML
92
star
16

contracts

Python
87
star
17

nim-json-rpc

Nim library for implementing JSON-RPC clients and servers
Nim
84
star
18

status-web

TypeScript
79
star
19

nim-websock

Websocket for Nim
Nim
74
star
20

questionable

Elegant optional types for Nim
Nim
73
star
21

nim-stint

Stack-based arbitrary-precision integers - Fast and portable with natural syntax for resource-restricted devices.
Nim
73
star
22

nim-eth

Common utilities for Ethereum
Nim
69
star
23

nim-drchaos

A powerful and easy-to-use fuzzing framework in Nim for C/C++/Obj-C targets
Nim
66
star
24

nim-graphql

Nim implementation of GraphQL with sugar and steroids
Nim
64
star
25

clj-rn

A utility for building ClojureScript-based React Native apps
Clojure
56
star
26

nim-confutils

Simplified handling of command line options and config files
Nim
56
star
27

nim-serialization

A modern and extensible serialization framework for Nim
Nim
54
star
28

nim-presto

REST API framework for Nim language
Nim
52
star
29

keycard-cli

A command line tool and shell to manage keycards
Go
46
star
30

keycard-go

Go pkg to interact with the Status Keycard
Go
41
star
31

nim-json-serialization

Flexible JSON serialization not relying on run-time type information
Nim
39
star
32

nim-metrics

Nim metrics client library supporting the Prometheus monitoring toolkit, StatsD and Carbon
Nim
38
star
33

nim-web3

Nim
37
star
34

nim-bearssl

BearSSL wrapper in Nim
C
37
star
35

ETHPrize-interviews

A repository for the ETHPrize website.
HTML
36
star
36

nim-codex

Decentralized Durability Engine
Nim
36
star
37

nim-toml-serialization

Flexible TOML serialization [not] relying on run-time type information.
Nim
35
star
38

hackathon

Status API Hackathon
JavaScript
32
star
39

nim-rocksdb

Nim wrapper for RocksDB, a persistent key-value store for Flash and RAM Storage.
Nim
29
star
40

nim-daemon

Cross-platform process daemonization library for Nim language
Nim
28
star
41

StatusQ

Reusable Status QML components
QML
27
star
42

nim-http-utils

Nim language HTTP helper procedures
Nim
27
star
43

status-electron

[OUTDATED NOT SUPPORTED] Status Electron (React Native Web and Electron)
Clojure
27
star
44

nim-style-guide

Status style guid for the Nim language
Nim
26
star
45

status-teller-network

DApp which provides a platform for borderless, peer-to-peer, fiat-to-crypto echanges that allows Stakeholders to find nearby users to exchange their cash for digital assets and currency.
JavaScript
26
star
46

nim-decimal

A correctly-rounded arbitrary precision decimal floating point arithmetic library
C
26
star
47

codex-research

Codex durability engine research
Jupyter Notebook
25
star
48

vyper-debug

Easy to use Vyper debugger | vdb (https://github.com/ethereum/vyper)
Python
24
star
49

react-native-status-keycard

React Native library to interact with Status Keycard using NFC connection
Java
24
star
50

nim-unittest2

Beautiful and efficient unit testing for Nim evolved from the standard library `unittest` module
Nim
24
star
51

mingw-windows10-uwp

Minimal Windows 10 Store ready sample of MinGW dll PInvoked from Windows 10 UWP application
C#
24
star
52

wiki.status.im

It's the wiki... for Status
HTML
24
star
53

nim-snappy

Nim implementation of Snappy compression algorithm
Nim
24
star
54

CryptoLife

A repo for all the #CryptoLife Hackathon submissions, The National House Smichov, Prague, 26-28th October 2018.
23
star
55

status-chat-widget

Easily embed a status chatroom in your website - outdated, please use https://github.com/status-im/js-waku
JavaScript
22
star
56

nim-blscurve

Nim implementation of BLS signature scheme (Boneh-Lynn-Shacham) over Barreto-Lynn-Scott (BLS) curve BLS12-381
C
22
star
57

keycard-connect

Keycard + WalletConnect
Kotlin
21
star
58

nimplay

Nim Ethereum Contract DSL. Targeting eWASM.
Nim
20
star
59

nim-cookbook

Nim
20
star
60

whisper-tutorial

Whisper Tutorial using web3js
JavaScript
20
star
61

ens-usernames

DApp to register usernames for Status Network
JavaScript
19
star
62

status-keycard-java

Java SDK for the Status Keycard
Java
19
star
63

Keycard.swift

Swift
19
star
64

account-contracts

Key managers, recovery, gas abstraction and self-sovereign identity for web3 universal login.
Solidity
19
star
65

nim-protobuf-serialization

Nim
19
star
66

ethereumj-personal

EthereumJ for Personal Devices DEPRECATED
Java
19
star
67

liquid-funding

Dapp for delegating donations to projects
JavaScript
19
star
68

nim-testutils

testrunner et al
Nim
17
star
69

react-native-transparent-video

React Native video player with alpha channel (alpha-packing) support.
Java
17
star
70

general-market-framework

A Generalised Market Framework for Ethereum
Python
16
star
71

nim-libbacktrace

Nim wrapper for libbacktrace
C
16
star
72

wallet

CSS
16
star
73

go-maven-resolver

Tool for resolving Java Maven dependencies
Go
15
star
74

murmur

WIP - Whisper node / client implementation built in javascript
JavaScript
15
star
75

keycard-installer-android

discontinued, use https://github.com/status-im/keycard-cli - Keycard applet installer over NFC
Java
15
star
76

bigbrother-specs

Research and specification for Big Brother protocol
14
star
77

status-dev-cli

Status command-line tools
JavaScript
14
star
78

nim-evmc

Nim EVMC - Ethereum VM binary compatible interface
Nim
14
star
79

specs

Specifications for Status clients.
HTML
14
star
80

nescience

A Zero-Knowledge Toolkit
Nim
13
star
81

geth_exporter

geth metrics exporter for Prometheus
Go
13
star
82

autobounty

Github bot that automatically funds https://openbounty.status.im bounties
JavaScript
13
star
83

status-security

Repository for all Status Network related security information
JavaScript
13
star
84

snt-gas-relay

SNT Gas Relay
JavaScript
13
star
85

move

MOVΞ - A Decentralised Ride Sharing DApp
JavaScript
13
star
86

nim-ttmath

C++
12
star
87

nim-eth-p2p

Nim Ethereum P2P protocol implementation
Nim
11
star
88

dreddit-devcon

JavaScript
11
star
89

keycard-pro

WIP
C
11
star
90

syng-client

The Mobile Client for the Ethereum Network DEPRECATED
Java
11
star
91

status-github-bot

A bot for github
JavaScript
11
star
92

embark-status

Provides an ability to debug Embark DApps in Status
JavaScript
11
star
93

pluto

Clojure
11
star
94

snt-voting

JavaScript
11
star
95

nimbus-launch

Jumpstart your Nim project at Status
Nim
11
star
96

keycard-redeem

TypeScript
10
star
97

translate.status.im

Help translate Status into your language!
JavaScript
10
star
98

nim-eth-contracts

Ethereum smart contracts in Nim
Nim
10
star
99

status-console-client

Status messaging console user interface
Go
10
star
100

the-explainers

The Explainers Initiative is an open effort to bring technical content regarding the Serenity upgrade of the Ethereum blockchain closer to non-technical and semi-technical communities
10
star