Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
The money can be in an account that only the oracle controls. – Nick ODell Feb 26 '13 at 16:35
@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? – LamonteCristo Feb 26 '13 at 16:36
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 Feb 26 '13 at 22:33
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 ( ) or website ( or github repo ( for more info – kolinko Jun 23 '14 at 17:37

(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 ( ) or website ( or github repo ( for more info.

share|improve this answer

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.

share|improve this answer
Is this the same as MultiSig? M of N? ... do all the key holders know the total amount? – LamonteCristo Feb 27 '13 at 14:36

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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