How can a Bitcoin Oracle ensure that the money can't be respent?

4

1

Suppose I modify the requirements of the Inheritance Scripting Sample where I need to make sure that the prior BTC is "guaranteed" to be available and not reduced or re-spent prior to either of the preceding events:

  1. The 18th birthday arrives
  2. The oracle verifies that the man is dead

With the additional requirement that the Oracle can't hold the transaction hostage for a ransom (since it would know how much is due to the payee), is there any way to use scripting to cover the condition that the previous funds can't be respent? How can this be done?

goodguys_activate

Posted 2013-02-26T16:14:11.757

Reputation: 11 898

The money can be in an account that only the oracle controls.Nick ODell 2013-02-26T16:35:24.370

@NickODell - Perhaps I should update the question... is there a way that the Oracle could prevent "knowing" the amount of inheritance and holding the transaction hostage for a ransom?goodguys_activate 2013-02-26T16:36:48.933

Let's say the Oracle has a partial key (created with BTCKeySplit) and doesn't know the underlying transaction. If the amount has already been spent then who cares if the Oracle tries to hold the transaction for hostage, it is already spent.Stephen Gornick 2013-02-26T22:33:21.130

You can use distributed oracles - i.e. a set of independent oracles. That way it would be much harder for oracles to hold your funds illegally. You can consult Orisi Whitepaper ( https://github.com/orisi/wiki/wiki/Orisi-White-Paper/ ) or website (oracles.li) or github repo (https://github.com/orisi/orisi) for more info

kolinko 2014-06-23T17:37:36.333

Answers

1

(elaborating on the comment I gave to the question)

You do this by wiring the funds to an address controlled by both you and an oracle (or a set of oracles). You do this by utilizing a bitcoin multisig address.

That way there's no way for you to move the funds away without oracle's permission, and there's no way for oracle to run away with funds.

As for preventing oracles from holding the transaction hostage, you can use distributed oracles - i.e. a set of independent oracles. So, to withdraw the funds you'd need a signature of both yourself, and say 8 out of 15 oracles. If you choose oracles wisely, the chance for them to collude and hold your funds for ransom should be minimal.

You can consult Orisi Whitepaper ( https://github.com/orisi/wiki/wiki/Orisi-White-Paper/ ) or website (oracles.li) or github repo (https://github.com/orisi/orisi) for more info.

kolinko

Posted 2013-02-26T16:14:11.757

Reputation: 245

0

There's no nLockTime support currently so there's not way to limit the spend prior to the 18th birthday.

But as far as giving the Oracle access to spend the funds without knowing the transaction, that can be done with key splitting.

Stephen Gornick

Posted 2013-02-26T16:14:11.757

Reputation: 26 118

Is this the same as MultiSig? M of N?https://blockchain.info/wallet/escrow ... do all the key holders know the total amount?

goodguys_activate 2013-02-27T14:36:35.303