Skip to content

Create bounties and track with Tipbot #4

@fr1t2

Description

@fr1t2

Describe the solution you'd like

Bounty submission and tipping system for the tipbot

Add the ability to create and vote on plus sponsor activities through a bounty system. Tipbot tracks the bounty details, votes, and donations. Once bounty is completed the bot will pay out the contributor that completed the task.

Set it up so that only Discord moderators can create and complete the bounties. Once a bounty is created any user can vote on and donate to the bounty from the tipbot account. A contributor can submit a completed task to more than one moderator with proof and the moderators vote to pay out the bounty. Once the bounty payout has received 2 votes it pays out.

Requires a few new commands or one large multiplexed command

  • bounty-create
  • bounty-vote
  • bounty-fund
  • bounty-submit
  • bounty-verify

Initiation

  • Only a moderator or higher can submit a new bounty or close one.
  • to open one must give { BOUNTY_NAME, ITERATIONS or PAID_IN_FULL, TTL, PAYOUT, INITIATOR, DESCRIPTION }
    • Bot will open a new entry in DATABASE.TABLE for the bounty, assign an ID, and create an entry in the bounties page {qrl.tips website repo}
    • Users can send tips to the bounty, using name or ID to help fund and give incentive
    • Users can also simply vote on the bounty, adding importance to the task, giving better insight to what the community wants worked on first

Submission

  • When a user believes they have completed a bounty, they send a message to the bot which notifies a moderator or core member, with some proof of completion {link to work, repo, photo, description etc.}
    • Moderator reviews the task complete and the bounty, and upon approval sends a bounty-verify approval with {users ID, bounty ID,
    • Once 2 mods or admin agree on the completion the bot sends funds to the users tipbot address

Stale Bounties

  • If no users complete the task in allotted TTL the bot returns the tipped funds to...
    • The users who donated?
    • Sends them to a general bounty fund?
    • Sends them to the faucet?

Database New tables

Added tables to the database to track the bounty system

bounty

Table to hold the bounty information

+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              |              |      |     |         |                |
| bounty_name     |              |      |     |         |                |
| mod_id          |              |      |     |         |                |
| guild_id        |              |      |     |         |                |
| payout_limit    |              |      |     |         |                |
| payout_min      |              |      |     |         |                |
| ttl             |              |      |     |         |                |
| initiating_user |              |      |     |         |                |
| description     |              |      |     |         |                |
| active          |              |      |     |         |                |
| status          |              |      |     |         |                |
| time_stamp      |              |      |     |         |                |
+-----------------+--------------+------+-----+---------+----------------+

bounty_votes

Table to hold the votes users send

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         |              |      |     |         |                |
| bounty_id  |              |      |     |         |                |
| user_id    |              |      |     |         |                |
| vote       |              |      |     |         |                |
| time_stamp |              |      |     |         |                |
+------------+--------------+------+-----+---------+----------------+

bounty_fund

Table to hold the users fund information. If user dictates they can leave any un-spent funds to be donated to the faucet.

Any use that is no longer active or banned after placing bounty funds forfeits their funding contribution.

All fees are taken from the contribution upon returning.

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          |              |      | PRI |         |                |
| bounty_id   |              |      |     |         |                |
| user_id     |              |      |     |         |                |
| fund_amount |              |      |     |         |                |
| donate      |              |      |     |         |                |
| time_stamp  |              |      |     |         |                |
+-------------+--------------+------+-----+---------+----------------+

bounty_submissions

Table to hold the submissions for a user to collect funds. Requires 2 entries from seperate moderators or core members

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          |              |      | PRI |         |                |
| bounty_id   |              |      |     |         |                |
| mod_id      |              |      |     |         |                |
| sub_user_id |              |      |     |         |                |
| proof       |              |      |     |         |                |
| time_stamp  |              |      |     |         |                |
+-------------+--------------+------+-----+---------+----------------+

Bounty_payout

Table to hold the information from contribution payouts

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           |              |      |     |         |                |
| bounty_id    |              |      |     |         |                |
| paid_user_id |              |      |     |         |                |
| tx_id        |              |      |     |         |                |
| time_stamp   |              |      |     |         |                |
+--------------+--------------+------+-----+---------+----------------+

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions