[BREAKGLASS] Create test PSBT files which are valid, but garbage values
Go to file
Peter D. Gray 2b9cc32f8c
Working
2020-02-10 12:46:15 -05:00
.gitignore Working 2020-02-10 12:46:15 -05:00
LICENSE Framework 2020-02-10 11:46:59 -05:00
main.py Working 2020-02-10 12:46:15 -05:00
psbt.py Framework 2020-02-10 11:46:59 -05:00
README.md Working 2020-02-10 12:46:15 -05:00
requirements.txt Framework 2020-02-10 11:46:59 -05:00
setup.py Framework 2020-02-10 11:46:59 -05:00
txn.py Working 2020-02-10 12:46:15 -05:00

PSBT Faker

A simple program to create test PSBT files, that are plausible and self-consistent so that PSBT-signing tools will sign them. Does not involve any blockchains... completely made up inputs, output addresses choosen at random.

Usage

# python3 -m pip install --editable .
# rehash
# pbst_faker --help

Usage: psbt_faker [OPTIONS] OUTPUT.PSBT XPUB

  Construct a valid PSBT which spends non-existant BTC to random addresses!

Options:
  -t, --testnet                   Assume testnet3 addresses (default mainet)
  -s, --segwit                    Make ins/outs be segwit style
  -n, --num-outs INTEGER          Number of outputs (default 1)
  -c, --num-change INTEGER        Number of change outputs (default 1)
  -v, --value INTEGER             Total BTC value of inputs (integer, default
                                  3)
  -f, --fee INTEGER               Miner's fee in Satoshis
  -a, --styles [p2wpkh|p2wsh|p2sh|p2pkh|p2wsh-p2sh|p2wpkh-p2sh]
                                  Output address style (multiple ok)
  -6, --base64                    Output base64 (default binary)
  --help                          Show this message and exit.

Requirements

  • python3.6+
  • pycoin version 0.80
  • click

(See requirements.txt)

Examples

$ psbt_faker foo.psbt tpubD6NzVbkrYhZ4Xp6tGusznF6KMdYHy1JSCdDk3XVLDuAA7EgJKghA5J1FP4pDXb4sCypJjAYPB4uTTXkVo2iWzK8BsMaccXTNyShDx3gxagi -s -a p2wsh --fee 15000000 -c 0

Fake PSBT would send 3 BTC to: 
 2.85000000 => bc1qqalzjffzy9nwcd35t0phdyugdmmqpskldgcw3xd40qxh32z908msf5alem 
 0.15000000 => miners fee

$ psbt_faker foo.psbt tpubD6NzVbkrYhZ4Xp6tGusznF6KMdYHy1JSCdDk3XVLDuAA7EgJKghA5J1FP4pDXb4sCypJjAYPB4uTTXkVo2iWzK8BsMaccXTNyShDx3gxagi -n 10

Fake PSBT would send 3 BTC to: 
 0.27272636 => 17VardgvHiYjDEtpBRWpqQLgrvKDUiGGaW 
 0.27272636 => 1A1FDLRD1caNjbwpr4odqpcB2sGgZSgGqZ 
 0.27272636 => 1P3Zr4zQko2CDbDDiqrkMduSppNB3Pb1Aq 
 0.27272636 => 1LcDusCVB6KjjAcrk5NvscV4AQ3cRJTR8j 
 0.27272636 => 15oy1fAxnbYr6Vgz7eNwjBQfujdvssdRaG 
 0.27272636 => 1EkYuiLo9Tt3cYCJwMfDvX38MddTBMqPc1 
 0.27272636 => 185VxgHqCEYudH6XXwdDiQtqfEUXGMxSXJ 
 0.27272636 => 19dR12aRSj8nyUaJLM11ruExa7N6jdAmUJ 
 0.27272636 => 1Ppj73d7z6cQvKhzezmaBywbJRSUnrymPE 
 0.27272636 => 1CPCdAWTrVqgS8cHVTbDQwkCvASjTfcaTe 
 0.27272636 => 1F2WTuA3BRpYmM82gsLuAdyAiLPYoUYijP  (change back)
 0.00001000 => miners fee


$ psbt_faker foo.psbt tpubD6NzVbkrYhZ4Xp6tGusznF6KMdYHy1JSCdDk3XVLDuAA7EgJKghA5J1FP4pDXb4sCypJjAYPB4uTTXkVo2iWzK8BsMaccXTNyShDx3gxagi -n 3 -v 100 -c 10

Fake PSBT would send 100 BTC to: 
 7.69230692 => 13mRoGiQHzmPhaCgQZbjw42njWhV3ymqDw 
 7.69230692 => 1MMbuGuuaJ9GnRXh4ixa6xiKER3xzg52TJ 
 7.69230692 => 1NjnUBrWSSx8iK5TC3XJXqQ7grC23kpZX2 
 7.69230692 => 1Aq96VVsd2nocTqAYQ4PnD6XhotKqmrBNn  (change back)
 7.69230692 => 1Bj7KprFDJ1d1F1se3DKedASFYvjWNaZMT  (change back)
 7.69230692 => 1HVTgLgZF95tF4B1CJk4BEvkLmT3hYDrmA  (change back)
 7.69230692 => 17Uz3tHeG1Zf8W4hmst2kQtbH17tHe3UTN  (change back)
 7.69230692 => 1LyLjaPcXbo5TxJYMYyUT9HzCgkJnKef1j  (change back)
 7.69230692 => 19DasuH8grQGc4MrPPR5abYUZAKF9UbbwZ  (change back)
 7.69230692 => 1JpymwTGWfXpcurLnsFbLcPRnkkzvRiKsy  (change back)
 7.69230692 => 1PoFUSStjmogrv2eEtRjbpz8N5reETVVZn  (change back)
 7.69230692 => 1Q8yrQsHotMNkrsAyEynDAuqC8rDs7nG41  (change back)
 7.69230692 => 1AbiaE64hjUygVoqkedaLvneHht8bbvPgo  (change back)
 0.00001000 => miners fee

psbt_faker foo.psbt tpubD6NzVbkrYhZ4Xp6tGusznF6KMdYHy1JSCdDk3XVLDuAA7EgJKghA5J1FP4pDXb4sCypJjAYPB4uTTXkVo2iWzK8BsMaccXTNyShDx3gxagi -n 10 -a p2wpkh -a p2wsh -a p2sh -a p2pkh -a p2wsh-p2sh -a p2wpkh-p2sh

Fake PSBT would send 3 BTC to: 
 0.27272636 => bc1q2l0zgfksxacs8hdxwmq56ftpzagcyvq8z237qf 
 0.27272636 => bc1q4ru6vpngexl348we0fkydheat3azcvr96uc975tmvcy0z8kjaz6qz30498 
 0.27272636 => 37Axq8rmQGjEHVoCb877RiNfWnnMtFCZ6H 
 0.27272636 => 16JDSqRVvYdWV4KntQ5wjUK5es6CaiTyBc 
 0.27272636 => 3HXq92K1xvx6QMNmQTHPWPLNiEReez595d 
 0.27272636 => 3LyBpZ2aaTs1Qj1NFmGGttL8PyhEzB9iDW 
 0.27272636 => bc1qsplnzq8n500q4zg6a8m2nj4c8ygvlp8p8zuppc 
 0.27272636 => bc1qw9hery5rjcujuf3f09djlxepepx6luen7jq9t0hfsu44dv3t6x3s4k4aw5 
 0.27272636 => 3Ld1TUaWQouRRGGAc8PSzvqtgjfyxdM3Vr 
 0.27272636 => 1ABmPHMdqK4MqF9BkACv8PHHYL7McmbYAq 
 0.27272636 => 15mkVohf2A1g9nVo9tn2KtN2f4eBHQCche  (change back)
 0.00001000 => miners fee