0

I am familiar with Bitcoin's model, but a complete noob in real-world details. I am entertaining the idea of a service that receives transactions (A->B) and "wraps" or completes them to include (A->B & B->C).

Is it possible to create a transaction requiring 2 wallets to participate?
For example, to create a transaction sending coins from Alice to Bob, and from Bob to Charlie?
I had in mind a process where Alice creates the first half-baked transaction (Alice -> Bob), send it to Bob, Bob "adds" its piece (Bob -> Charlie), and the result is a valid transaction.
Obviously, the (Alice -> Bob) part must not be reusable by anyone else.

Can that be achieved? How? What's a good starting point / alternatives?

1

Yes. There's a project called Lighthouse that does something very similar. Bitcoin transactions either completely succeed or completely fail. We can use this by starting with a transaction that has the outputs we want.

--> TX -- 0.5 BTC --> Charlie

This is invalid, because it doesn't have any inputs.

We add Alice's input.

Alice --> 0.25 BTC --+
                     +--> TX -- 0.5 BTC --> Charlie

This is invalid, because the transaction creates more in outputs than it takes in inputs. It can't be partially spent, either. It's all or nothing.

We add Bob's input.

Alice --> 0.25 BTC --+
                     +--> TX -- 0.5 BTC --> Charlie
Bob   --> 0.25 BTC --+

Now the transaction is valid, and can be pushed to the Bitcoin blockchain. Modifying it will require Alice and Bob to re-sign it. If we want Bob to have some Bitcoins at the end, the procedure is the same, except we start with outputs that pay both Charlie and Bob.

  • not sure I got it, what would be the difference to a multisig spend? Is the difference the reverse order? I don't need a redeem script with lighthouse? – pebwindkraft May 5 '17 at 6:54
  • Thanks! While I am still fuzzy on the details, it's certainly a better starting point :) – UriCS May 5 '17 at 12:31
  • @pebwindkraft A multisig output only allows a spend if enough signatures agree. In the example above, Alice could defect and send her money to David before Bob signs the transaction. However, this would cause the combined Alice-Bob transaction to fail, so the property the OP asked for still holds. – Nick ODell May 5 '17 at 17:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.