StandardBounties introduction

The StandardBounties smart contract

Note: These docs will soon be updated, for the most up to date data, check out the git repository.

In the Draft state, all bounty details can still be mutated.

In this state, the various functions which can be called are:

`contribute()` [ANYONE]: contributes ETH (or tokens) to the bounty
`activateBounty()` [ONLY ISSUER]: This will activate the bounty
`killBounty()` [ONLY ISSUER]: This will kill the bounty

As well as several functions to alter the bounty details:

`changeBountyDeadline()` [ONLY ISSUER]
`changeBountyData()` [ONLY ISSUER]
`changeBountyFulfillmentAmount()` [ONLY ISSUER]
`changeBountyArbiter()` [ONLY ISSUER]
`extendDeadline()` [ONLY ISSUER]
`transferIssuer()` [ONLY ISSUER]
`increasePayout()` [ONLY ISSUER]

A bounty transitions to the Active state when the issuer calls activateBounty(), or if it was initially issued and activated.

This is only possible if

the bounty hasn't expired (isn't past its deadline)
the bounty has sufficient funds to pay out each milestone at least once

Once a bounty is Active, bounty hunters can submit fulfillments for the various milestones, and the bounty issuer can approve fulfillments to pay out the rewards.

In this state, the various functions which can be called are:

`fulfillBounty()` [ANYONE BUT ISSUER OR ARBITER]
`updateFulfillment()` [ONLY FULFILLER]
`acceptFulfillment()` [ONLY ISSUER OR ARBITER]
`increasePayout()` [ONLY ISSUER]
`transferIssuer()` [ONLY ISSUER]
`extendDeadline()` [ONLY ISSUER]
`killBounty()` [ONLY ISSUER]

A bounty transitions to the Dead state when the issuer calls killBounty(), which drains the bounty of its remaining balance.

In this state, the only functions which can be called are:

`extendDeadline()` [ONLY ISSUER]
`contribute()` [ANYONE]
`activateBounty()` [ONLY ISSUER]