Skip to content

BitProtect - 1/2 multisig + timelock #55

Open
@7-of-9

Description

@7-of-9

How to make sure that a friend or family member can access your BTC if Something Bad happens to you... (trustlessly)?

Send your BTC to a non-standard output with a locking script like:

OP_IF
  ${bitcoinJsLib.script.number.encode(lockTime).toString('hex')}
  OP_CHECKLOCKTIMEVERIFY
  OP_DROP
  ${cltvSpender.publicKey.toString('hex')}
  OP_CHECKSIG
OP_ELSE
  ${nonCltvSpender.publicKey.toString('hex')}
  OP_CHECKSIG
OP_ENDIF

Sender is nonCltvSpender, i.e. can spend anytime with redeem script OP_TRUE.
Beneficiary is cltvSpender, i.e. can spend anytime after OP_CHECKLOCKTIMEVERIFY elapses with redeem script OP_FALSE.

Required Wallet Sugar
(1) Wallet will lookup beneficiaries by registered email (hash lookup in DSC) - note: DSC will need to be extended to expose accounts' BTC pubKeys (also can be a nice viral referral flow - beneficiary refers new wallet signups by email prompt...)

(2) Wallet will prompt Benefactors to "roll over" his non-std outputs periodcally to reset OP_CHECKLOCKTIMEVERIFY interval. If and when that fails to happen, output will become spendable by Beneficiary.

WIP... see wallet-btc-p2sh.js (and "DMS" comments in-line, various).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions