Github bot that automatically funds https://openbounty.status.im bounties
Go to file
Jordi Montes 57fe34c0eb WIP: updating readme 2018-01-25 01:23:27 +01:00
bot console.log removed 2018-01-25 01:06:50 +01:00
config Betha version only some clean ups and readme needed 2018-01-25 00:01:57 +00:00
test test for getAmount finished 2018-01-25 01:07:04 +01:00
.gitignore package-lock.json added to gitignore 2018-01-22 23:45:54 +01:00
Dockerfile Add webhook secret security measure 2017-06-14 14:34:26 +02:00
LICENSE Add license 2017-06-09 11:52:38 +02:00
index.js Betha version only some clean ups and readme needed 2018-01-25 00:01:57 +00:00
package.json Mocha testing pipeline and first test 2018-01-23 14:39:12 +01:00
readme.md WIP: updating readme 2018-01-25 01:23:27 +01:00
restart.sh restart script for the docker image stoping/building/launching 2018-01-17 16:50:45 +00:00
status.png Added Status logo 2018-01-10 09:23:34 +02:00

readme.md

Status OpenBounty Autobounty

Massive Thanks to the Amazing Aragon Team for starting this project! Original repo here

Status Autobounty bot for OpenBounty

A Github bot that will automatically fund issues that are labelled with bounty. These bounties will use Status OpenBounty to incentivize community members to participate and contribute to the development of Open Source Software projects like Status, Riot and Aragon.

Open source is awesome, but it is also hard work that needs to be rewarded to ensure top quality work. It's also important that everyone in the world gets a fair chance to do it.

🦋 We at Status, Aragon and Riot are using OpenBounty to reward open source contributions outside our Core teams.

All issues tagged with bounty are eligible for a bounty on a succesfully merged Pull Request that solves the issue. Currently bounties have to be funded one after the other and manually by a real human being. This bot's purpose in life is therefore to create and automate the process of funding issues so that contributors can be rewarded accordingly.

The process

  • An issue is created at the repo
  • Issue is labeled with bounty and bounty-{xs,s,m,l,xl}
  • Status OpenBounty bot adds a bounty to the issue and it is displayed in the issue's comments
  • This autobounty bot automatically funds that issue with a set amount of tokens based on another label decribing the size of the bounty based roughly on how many hours the team feels it will take to complete * the rate per hour they are willing to pay. When a successful Pull Request is merged, the contributor is paid that amount for their work autonomously, transparently and programmatically by the smart contract itself - no middle men involved at all.

Configuration

This bot can be build using docker.

  • Remember to create the folder for the logPath before running the build.

The config folder contains the files for configuring the bot. The description for the variables can be found in default.js:

    // Debug mode for testing the bot
    debug: true,
    
    // URL where the bot is listening (e.g. '/funding')
    urlEndpoint: '',
    
    // Path for the log files (e.g. './log/')
    logPath: '',
    
    // URL for the signer (e.g. 'https://ropsten.infura.io')
    signerPath: '',
    
    // Address with the funding for the bounties 
    sourceAddress: '',
    
    // Token of the currency for fetching real time prices (e.g. 'SNT')
    token: '',
    
    // Limit for the gas used in a transaction (e.g. 92000)
    gasLimit: 0,
    
    // Price per hour you will pay in dolars (e.g. 35)
    priceHour: 0,
    
    // Delay before funding a bounty (e.g. 3600000)
    delayInMiliSeconds: 0,
    
    // Bounty Labels for the issues and the correspondent houres (e.g. {'bounty-xs': 3})
    bountyLabels: {},

    // username for the bot which has to comment for starting the process (e.g. status-bounty-)
    githubUsername: '',

    // Activate real transactions
    realTransaction: false

The idea is to deploy the bot running

docker build -t autobounty .
docker run -p 8080:8080 autobounty
  • Configure the PORT and NODE_ENV variables in the Dockerfile
  • Create a production.js file using the {default,development}.js as example