Bonus: Provide certainty with pledges and especially smaller donations by locking pledges into contracts
Needs
- Weak need: Accidental or intentional double spends of pledged coins can make the fundraiser unpredictable and is a minor DOS vector (more like a delay vector which could become DOS at the end of the funding period).
- Stronger need: As the proposal amount becomes larger, the static minimum investment increases also. E.g. For a $10k proposal, the minimum is about $20 which is already high for many people who want to help. For a $1M proposal, the minimum is about $2,000 which eliminates a huge % of people who want to help. Although small donations end up making a small fraction of the final, this funding mechanism lets people participate in something big and fun.
- Even stronger need: We could potentially simplify the UX away from a plugin to the proposal below that does not need a plugin.
Proposed solution:
UX:
- Site requests refund address + pledge amount.
- Site gives p2sh address (through bip70 or payment url).
- User pays.
Contract requirements:
- It should never make the proposal a custodian of the coins except for setting the agreed target address/amount.
- It should be redeemable by anyone who knows the contract parameters (especially the proposal server + donor).
Contract redemption conditions:
- Use a timelock. When it expires --> refund all sats in the contract to the fixed address previously provided by the user.
- Pledge payment
- At any time --> can spend to the campaign output address+amount. The spend will not work until a tx is assembled with enough value to cover the output amount.
- OR use an oracle that says "yes/no" so that there is no limit on the number of tx we can stuff into a proposal.
Edited by Emergent Reasons