public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: ZmnSCPxj <ZmnSCPxj@protonmail.com>
To: Johnson Lau <jl2012@xbt.hk>
Cc: bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Trustless Segwit activation bounty protocol (aka. bribing the miners)
Date: Thu, 27 Apr 2017 17:05:47 -0400	[thread overview]
Message-ID: <DBODV3FYk4TmQNj6jxOnDoOD_fJrEVYjwMybChbqkRbMLUqmj2eWmxP0eIGv3ML7C-KwfwtJ4eWr42hR_OBJ3UgcvYcwJfBeMpaJeSBsUPY=@protonmail.com> (raw)
In-Reply-To: <98AA9A95-0150-4D71-8667-613E1CCD597D@xbt.hk>

[-- Attachment #1: Type: text/plain, Size: 2028 bytes --]

Good morning all,

As other explained, your scheme is broken.

Unless we have a softfork first (OP_CHECKBIP9VERIFY: payment is valid only if a BIP9 proposal is active), it is not possible to create a softfork bounty in a decentralised way

On the other hand, hardfork bounty is very simple. You just need to make sure your tx violates existing rules

Perhaps, it's possible to invert the logic.

When considering a softfork success/fail, the difference is this:

There exists some tx, where if the softfork fails, the tx is valid, and if the softfork succeeds, the tx is invalid.

So, an economic agent who wishes to push for a softork, can instead do:

1. Select block heights H1 and H2, where H1 < H2.

2. Create a valid Funding tx (valid in both softfork-pass and softfork-fail) with a single output, encumbered by the contract (CLTV H1 AND k1) OR (CLTV H2 AND k2), and transmit and put in block.

3. Create a Softfork Failure Refund tx. This tx has to be invalid if the softfork succeeds, but valid if the softfork fails. It provides k1, and is spendable on height H1. It outputs back to the economic agent.

4. Create a Softfork Success Payout tx. This tx has to be valid if the softfork fails. It outputs 0 to the economic agent, allowing any miner who includes it to get the payout as tx fee.

If at block H1, softfork has passed, then the Softfork Failure Refund tx is invalid and cannot be used by the economic agent to spend the output. The miners can then wait for block H2 to include Softfork Success Payout tx in a block and claim the tx fee. The risk here for the miners is that since k2 is generated by the economic agent, the economic agent can create a different tx spending that output before H2.

If at block H1, softfork has failed, then the Softfork Failure Refund is valid and the economic agent can get the Funding tx's output back to a normal output. The risk here for the economic agent is that miners can form a cartel to informally ignore the Softfork Failure Refund until block H2.

Regards,
ZmnSCPxj

[-- Attachment #2: Type: text/html, Size: 2636 bytes --]

      reply	other threads:[~2017-04-27 21:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-27 17:48 [bitcoin-dev] Trustless Segwit activation bounty protocol (aka. bribing the miners) Matt Bell
2017-04-27 18:25 ` Alex Mizrahi
2017-04-27 18:41 ` Alex Mizrahi
2017-04-27 19:45 ` Antoine Le Calvez
2017-04-27 20:10 ` Johnson Lau
2017-04-27 21:05   ` ZmnSCPxj [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='DBODV3FYk4TmQNj6jxOnDoOD_fJrEVYjwMybChbqkRbMLUqmj2eWmxP0eIGv3ML7C-KwfwtJ4eWr42hR_OBJ3UgcvYcwJfBeMpaJeSBsUPY=@protonmail.com' \
    --to=zmnscpxj@protonmail.com \
    --cc=bitcoin-dev@lists.linuxfoundation.org \
    --cc=jl2012@xbt.hk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox