Create a new bounty
This guide will explain how maintainers can create a new bounty by attaching it to a Github issue.
Create an issue
The process starts by creating a normal Github issue. There's no requirement or constraing for the issue, it can follow whatever conventions or good practices you have defined for your organization / repository.
Even if not strictly required, it's important for the maintainer to provide a well-defined scope of what the task tries to acomplish. If it's a bug fix, provide ways to reproduce it and acceptance criteria. If it's a new feature, describe all requirements and a definition of "done".
Attach a bounty
Once you have created the issue that represent the task to acomplish by a
contributor, the next step is to attach a bounty to it. You can do that by
adding a comment in the issue that mentions the @txpipe-bounties
bot and calls
the attach-bounty
command.
The attach-bounty
command requires you to define the following parameters:
amount
: the amount in ADA currency that the contributor that fulfills the bounty will get once the tasks has been fulfilled.deadline
: the time interval starting now that the contributor has available to fulfill the task.address
the address of the wallet that will be used to deposit the reward in the escrow contract.
Here's the example of the body of a comment that can be used to attach a bounty
that provides a reward of 500 ADA, that needs to fulfilled within 60 days and
that will be deposited from the address addr1xxx
.
@txpipe-bounties attach-bounty --amount 5000 --address addr_test1vp626xyvsxnue73fkvjh2r3krfsv4xq3n0ma429k9fn5hhgcewutd --deadline 60d
For detailed information on available commands please refer to the Bot commands section of the documentation.
When the bot receives the command it provides acknowledgment by adding a +1 emoji to your comment.
At this stage is when the bot will create a new custom on-chain contract specific to this issue / bounty. This process might take a few minutes. Once finished the bot will reply with a comment explaining the result of the operation and providing a link to execute the reward deposit transaction.
Deposit the reward
One of the main advantages of using on-chain contract is providing strong enough guarantees for all parties involved that the conditions of the bounty will be fulfilled.
The bounty contract requires the maintainer to lock (deposit) the corresponding reward amount in the on-chain contract serving as an escrow mechanism. If the final PR is completed, reviewed and merged, the bot will get notified and call the on-chain contract to release reward without any actions required from the maintainer side.
If the task is not fulfilled within the deadline or if the contributor cancels the the bounty, the maintainer will be able to recover the reward amount.
To execute the desposit, click the link provided by the bot in response to the
attach-bounty
command. This will show a very simple web page that allows that
holds a reference to the required on-chain transaction for you to sign using a
browser-enabled Cardano wallet. Make sure to use the wallet that matches the
address specified in the attach-bounty
command.