ethereumproject / bountyetc

Fund Github issues for Ethereum Classic development using ETC
Apache License 2.0
1 stars 3 forks source link

Initial Design #1

Open laddhoffman opened 7 years ago

laddhoffman commented 7 years ago

Overview

The goal of this project is to enable Ethereum users to assign bounties to GitHub issues, and for solution contributors to claim those bounties.

Design Proposal

Contract

A bounty contract shall be developed. To create a bounty for an issue would involve deploying an instance of this contract.

The contract shall be able to store the following data:

The contract shall expose the following methods:

The rules of the contract shall be as follows:

Off-chain Server-side Application

An off-chain server-side application shall be developed. This may run as a daemon, or on a scheduled interval.

This application shall have the following responsibilities:

Client-side Application

A client-side application shall be developed. This may be a web application.

This application shall have the following responsibilities:

Design Considerations

The following questions were considered when preparing this design proposal.

How should bounty payouts work?

How should donations work?

Should bounties expire?

Can bounties be withdrawn?

Does the contract need a monetary policy?

Can a bounty contract be upgraded in the future? By what mechanism?

What role should core maintainers play in this scheme?

Are there benefits to having a single contract for multiple bounties?

Are there benefits to having a separate contract deployed for each bounty?

How will the contract identify GitHub issues?

How will the contract know when issues are resolved?

How will the contract know when a solution is accepted?

How can donors verify the identity of a claim submitter?

laddhoffman commented 7 years ago

I raised the question of whether it should be possible to revoke bounties.

Just wanted to note that with the current implementation, it is possible for a donor to claim their own bounty, which would have the same effect as revoking the bounty.

laddhoffman commented 7 years ago

@realcodywburns suggests that a registry is the best way to keep a list of bounties.

Should such a registry be stored on the blockchain? Storing on the blockchain would cost something to register, but has the advantage that anyone could implement a client to list bounty contracts. Storing off-chain could avoid paying gas costs, but information is power and nothing is free, so whoever controls the registry has the potential to influence what bounties are made visible.

I think a registry contract makes sense but I'm interested in alternate opinions.

realcodywburns commented 7 years ago

I like registries :) and voting on stuff. And bounties really. It would be easy enough to write a registry that tracked bounty contracts. Oddly enough I think I have most of the basic parts laying around in other projects.

realcodywburns commented 7 years ago

Members of a board can vote on sending funds or executing bytecode. Voting requires a quorum of members and a majority rules.

Bounty contracts can be issued, registered, and funded by the board. After someone claims they have completed a bounty, the board votes on whether or not it is complete and releases the funds.