I have an idea to allow for grants (bounties) to be voted on by coin owners and awarded in the block chain.
I envisage grants being awarded to developers working on projects related to the coin, or groups working for the benefit of the coin.
I want to avoid adding too much code, on the assumption that the more code I add, the more errors I'll introduce.
How it would work.Here's what I've come up . . . and I'm seeking feedback on its merits, technical and otherwise. I'm assuming implementation in an altcoin, say Grantcoin, but I'll use Bitcoin friendly numbers.
Step 1. Grant Proposal.A developer seeking a grant creates a vanity address of the form gGRANTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX and sends a small amount of coin to get it into the block chain.
He advertises his proposed project to the community and requests coin owners to vote for his grant allocation.
(No code change required)
Step 2. Voting.Coin owners wishing to vote for a grant allocation send a small amount to the grant allocation address GGRANTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. Coin owners can vote for multiple projects and set an order of preference by sending a larger amount of coin to preferred projects.
Example. A coin owner might like 5 grant proposals and vote for them in order of preference by sending
Preference 1 - .00000020 coin to GGRANT11XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Preference 2 - .00000015 coin to GGRANT06XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Preference 3 - .00000010 coin to GGRANT07XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Preference 4 - .00000006 coin to GGRANT22XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Preference 5 - .00000002 coin to GGRANT56XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
(Small code change required, technical problem 1 - see below)
Step 3. Grant Award.Once a day, say every 144 blocks, votes are tallied, and the top 3 grant vote winners are awarded a fixed amount in that block, say 20 Coins.
Voting is proportionate to the amount of coin currently in the address from which the grant allocation address received. Voting is by transferable vote, similar to STV, but taking the size of voter's stake in the coin into account.
http://en.wikipedia.org/wiki/Single_transferable_vote(Medium code addition - code to calculate vote winners and add reward to block. Must be 100% deterministic.)
Step 4. Vote ChangesCoin owners can leave their votes unchanged for the next day's voting, or add new preferences by sending coin to new or existing preferences.
(No code changes required)
Technical Problem 1Usually change is sent to a different address than the sending address. This would make the vote worthless, as there would be no coin left in sending address. I propose to remedy that by changing the default client to always send change back to the sending address. There's a hit to anonymity.
Behavior Problem 1Developers may not deliver on their promises. I don't see an easy way to resolve this. I propose we leave it up to the community and coin owners to evaluate the credibility and trustworthiness of grant applicants.
So I'm interested if you can see any other technical problems that might arise, or problem behavior that this allocation system would be likely to encourage.