Commit graph

428 commits

Author SHA1 Message Date
Craig Raw
f4730f7147 add message sign test for low r grinding (verified signatures against electrum 4.1.2) 2021-04-25 13:25:04 +02:00
Craig Raw
173743ba0d ensure grinding for low R is done in the same way as libsecp256k1 so signatures match 2021-04-25 12:22:38 +02:00
Craig Raw
db05e09fe5 verify segwit psbt partial signatures with only non-witness utxo provided 2021-04-24 08:55:33 +02:00
Craig Raw
0a43f9f6a8 dont increment fee if user set 2021-04-21 13:08:22 +02:00
Craig Raw
b0d37fe8fe include all utxos when sending max amount 2021-04-21 09:53:53 +02:00
Craig Raw
efaa6a066d improve variable naming for utxo selection criteria 2021-04-21 09:37:01 +02:00
Craig Raw
a25dfa5c76 allow external unconfirmed utxos to be spent 2021-04-20 11:08:13 +02:00
Craig Raw
85e8b97a8c support extended master private key keystores 2021-04-20 08:27:26 +02:00
Craig Raw
1aeaacaf59 preserve capitalization in keystore naming in policy script 2021-04-19 08:56:05 +02:00
Craig Raw
891499aff0 safer istransaction test 2021-04-16 12:30:22 +02:00
Craig Raw
a56f8971c0 support blockchain ordering of txes a separate method 2021-04-12 15:46:44 +02:00
Craig Raw
b7038b19f9 add option to strip sensitive info from psbt serialization 2021-04-12 13:42:11 +02:00
Craig Raw
428054d375 fix p2sh-p2wpkh description 2021-04-12 09:33:52 +02:00
Craig Raw
49654b7c82 ensure safe psbt testing 2021-04-01 09:51:43 +02:00
Craig Raw
e974c3f422 sort descriptor xpubs lexicographically when child derivation paths are supplied 2021-03-10 11:28:59 +02:00
Craig Raw
533791edcf use fractional tx virtual size 2021-03-08 16:20:35 +02:00
Craig Raw
5b2e21b3d7 provide framework for application logging 2021-03-08 09:16:28 +02:00
Craig Raw
c084a0de7e dont allow negative values to enter tx when send max true 2021-03-04 12:59:49 +02:00
Craig Raw
b84aa2e7cb set log level dynamically 2021-03-01 16:30:12 +02:00
Craig Raw
faa8f71313 return boolean if labels have changed 2021-03-01 15:26:55 +02:00
Craig Raw
08acfe5ba1 add signet support 2021-02-24 13:38:47 +02:00
Craig Raw
fe91063e8f add system property to disable script type derivation validation 2021-02-22 16:04:34 +02:00
Craig Raw
79216fac91 add descriptions to script types 2021-02-17 10:23:49 +02:00
Craig Raw
3882a4b4bd support wallet labels copying from past wallets 2021-02-09 17:31:26 +02:00
Craig Raw
44b29b2b7b add blue wallet 2021-02-08 18:17:11 +02:00
Craig Raw
4d61585e4c rbf: remove unnecessary locktime = 0 check 2021-02-08 11:04:57 +02:00
Craig Raw
a38206f17c add passport hww single and multisig importing 2021-01-28 10:39:25 +02:00
Craig Raw
4b682fb3e7 dont add non-witness utxo when keystores are exclusively coldcard or cobovault 2021-01-26 12:18:27 +02:00
Craig Raw
93d494fcde export max keystore label length 2021-01-18 13:38:34 +02:00
Craig Raw
3e91bdb46c find signing nodes and keystores from transaction 2021-01-11 12:26:28 +02:00
Craig Raw
4da2c024d4 fail when single public keys are detected 2021-01-01 15:45:21 +02:00
Craig Raw
962253beaa look for user defined application home 2021-01-01 10:39:06 +02:00
Craig Raw
6ad3f53731 add wallet birth date and network default ports 2020-12-19 13:54:24 +02:00
Craig Raw
68f7c6850e add child key support to from wallet creation, add option to hide key origin 2020-12-17 08:33:48 +02:00
Craig Raw
0567409742 add specter diy wallet model 2020-12-09 17:16:12 +02:00
Craig Raw
deb45687c0 add support for freezing utxos 2020-12-01 12:44:47 +02:00
Craig Raw
6b20c6558a handle inclusion of rbf mempool inputs in new wallet txes 2020-11-24 20:34:13 +02:00
Craig Raw
49799fc0c8 allow creation of deterministic pubkey without access to bc 2020-11-11 09:41:24 +02:00
Craig Raw
f3e1fe6df4 further payjoin tweaks 2020-11-04 16:32:17 +02:00
Craig Raw
3433c5f205 improve invalid wallet error messaging, fix public psbt 2020-11-04 12:09:17 +02:00
Craig Raw
9c9836147a support partially finalized psbts 2020-11-03 13:52:55 +02:00
Craig Raw
8541348b5b support payjoin uris 2020-11-03 13:51:36 +02:00
Craig Raw
67c76c3b28 avoid casting to int when comparing longs 2020-10-27 11:11:15 +02:00
Craig Raw
401d3b8bfb change default derivation path to match bip45 2020-10-26 15:10:14 +02:00
Craig Raw
c4f5218f29 calculate dust threshold for multiple outputs 2020-10-20 10:55:25 +02:00
Craig Raw
8b07336d71 add support for multiple payments in a tx 2020-10-19 11:06:30 +02:00
Craig Raw
661e88447f add bitbox02 2020-10-08 11:24:59 +02:00
Craig Raw
4b6c477030 rename xPub to xpub 2020-10-07 13:11:26 +02:00
Craig Raw
290fbabb54 add cobo vault 2020-10-07 12:31:01 +02:00
Craig Raw
3642ddc958 add convenience method 2020-10-05 17:28:17 +02:00
Craig Raw
fee0426799 fix case sensitive legacy addresses 2020-10-02 16:01:31 +02:00
Craig Raw
e912e8a512 add convenience method to get consolidation wallet node 2020-10-02 15:16:01 +02:00
Craig Raw
32b0af7381 samourai bitcoin uri compatibility 2020-10-02 10:51:50 +02:00
Craig Raw
9c6d3ec94b handle longer signature with min relay fee set 2020-10-01 09:06:02 +02:00
Craig Raw
b877e94cd0 testnet support followup changes 2020-09-29 15:43:54 +02:00
Craig Raw
747bfa915f add support for alternative (non-mainnet) networks 2020-09-28 14:31:25 +02:00
Craig Raw
e8d8fa6126 add utxo filters 2020-09-26 12:29:25 +02:00
Craig Raw
b2297a8d02 add fee rate support 2020-09-25 15:36:40 +02:00
Craig Raw
79eb8b002d add default min fee rate 2020-09-25 15:21:13 +02:00
Craig Raw
2650dafa66 handle invalid/incomplete output descriptors better 2020-09-25 13:43:02 +02:00
Craig Raw
5e281982cb allow updating with partial tx set 2020-09-17 15:09:12 +02:00
Craig Raw
db8ef9e4a1 fix keepkey hww 2020-09-10 11:40:02 +02:00
Craig Raw
9faacb055c support configurable wallet gap limit 2020-09-09 14:56:28 +02:00
Craig Raw
488752c142 handle keystore default label deduping better, validate 1of1 wallets 2020-09-09 11:17:08 +02:00
Craig Raw
08c159ebad add output descriptor checksum support 2020-09-08 12:03:18 +02:00
Craig Raw
794cde7250 descriptor change multi to sortedmulti 2020-09-08 08:31:15 +02:00
Craig Raw
70fdecf919 wallet <-> output descriptor 2020-09-07 17:22:37 +02:00
Craig Raw
0516426dc0 refactor and update outputdescriptor to use script type 2020-09-07 15:07:29 +02:00
Craig Raw
3115669c46 support better script descriptors in wallet policy 2020-09-07 09:30:40 +02:00
Craig Raw
10ebfe463d support bip 137 for message signing, but handle electrum approach as well when verifying 2020-09-03 19:27:18 +02:00
Craig Raw
ee49ddd94b support for message signing and verifying 2020-09-03 13:36:03 +02:00
Craig Raw
6b4b2529c8 correct wallet model names 2020-09-03 09:37:25 +02:00
Craig Raw
c7e16a29e3 support detection of consolidation sends 2020-09-01 08:58:06 +02:00
Craig Raw
59d610f539 support retreiving output scripts for different key purposes 2020-08-31 11:21:29 +02:00
Craig Raw
1003527854 deduplicate signed keystores on signature 2020-08-31 10:14:28 +02:00
Craig Raw
55717c31bf copy stored height 2020-08-30 11:14:48 +02:00
Craig Raw
bd964e9bd2 platform specific log file location support case fix 2020-08-25 19:29:28 +02:00
Craig Raw
274fb9afc3 platform specific log file location support 2020-08-25 19:28:26 +02:00
Craig Raw
ea5101dff7 better xpub header type support 2020-08-24 10:11:33 +02:00
Craig Raw
0fbce035a3 dont consider height when selecting 2020-08-23 15:46:30 +02:00
Craig Raw
e8bb733ea8 make allinputsfromwallet public 2020-08-22 17:19:12 +02:00
Craig Raw
5d456a10df add bitcoin uri support 2020-08-20 15:26:26 +02:00
Craig Raw
9663629e34 match coldcard fee percent calc 2020-08-20 12:29:50 +02:00
Craig Raw
b1299f6abf make gson use treesets 2020-08-20 11:44:12 +02:00
Craig Raw
b9ef670e61 improve blocktx ordering behaviour 2020-08-19 08:39:33 +02:00
Craig Raw
0639f408db reduce min change amount 2020-08-18 13:20:14 +02:00
Craig Raw
f0aa949174 fix compareTo bug with unconfirmed parents 2020-08-17 16:47:55 +02:00
Craig Raw
6a2af38b8a remove logging 2020-08-10 13:20:21 +02:00
Craig Raw
1a38b8e662 fix transaction signature ordering bug 2020-08-10 13:19:24 +02:00
Craig Raw
fff658a3ab move confirmation logic to blocktransactionhash 2020-08-09 14:12:40 +02:00
Craig Raw
d2582c0414 add non witness utxo to witness types for trezor and ledger 2020-08-09 12:23:19 +02:00
Craig Raw
1f7be6c7d5 store passphrase in memory as securestring 2020-08-06 10:28:20 +02:00
Craig Raw
eb07a7ffa3 handle zero length derivation paths 2020-08-05 16:54:09 +02:00
Craig Raw
04576bddff logging updates 2020-08-05 10:24:53 +02:00
Craig Raw
97cf49276a add for qr decoding 2020-08-04 12:45:54 +02:00
Craig Raw
958d9c5274 handle finalized psbts 2020-07-31 11:48:13 +02:00
Craig Raw
72a2a8bd1b better canSign protection 2020-07-31 10:36:21 +02:00
Craig Raw
4c5166a6ea signing fixes 2020-07-30 15:57:50 +02:00
Craig Raw
4b4a980a9b support for better combining and finalising psbts 2020-07-30 09:59:32 +02:00
Craig Raw
3ce2394813 finalize psbt with tx input outpoint 2020-07-28 08:30:42 +02:00
Craig Raw
15beeefcb6 various fixes to psbt serialisation and wallet tx creation 2020-07-26 14:02:47 +02:00
Craig Raw
0466755883 handle adding non witness inputs to segwit transactions 2020-07-24 10:09:24 +02:00
Craig Raw
70d0b7afcd add creator, combiner, extractor psbt tests and fix issues 2020-07-24 09:59:52 +02:00
Craig Raw
5cd203d366 fix for clear witness 2020-07-23 14:13:57 +02:00
Craig Raw
8bc4e3b3dc combiner, finaliser and extractor for psbts 2020-07-23 13:39:01 +02:00
Craig Raw
0cfe954463 refactor psbt classes and add serialization 2020-07-23 12:00:22 +02:00
Craig Raw
f2ee57cc4d grind for low r, for psbt ensure if a witness UTXO is provided, no non-witness signature may be created 2020-07-23 10:06:00 +02:00
Craig Raw
af562dad10 sign psbt inputs 2020-07-22 14:56:41 +02:00
Craig Raw
9e6cdf74f4 sighash int to byte, sign psbt input 2020-07-22 08:27:06 +02:00
Craig Raw
f6dcdb6d26 determine signing status from psbt 2020-07-20 17:04:39 +02:00
Craig Raw
dcd4218ba1 move sighash to top level, psbt signing status tests 2020-07-17 17:24:15 +02:00
Craig Raw
a56684240a default segwit version 2020-07-17 09:16:31 +02:00
Craig Raw
9b117cd7f9 programmatic psbt creation 2020-07-16 14:59:01 +02:00
Craig Raw
f00754b157 utxo grouping, filtering and zero conf handling 2020-07-15 09:15:27 +02:00
Craig Raw
832ca8f257 calculate no inputs fee 2020-07-14 13:36:12 +02:00
Craig Raw
9d272c0eb2 refactor outputgroup, add knapsackselector 2020-07-14 09:21:13 +02:00
Craig Raw
0a6e247163 support more accurate virtual size calculations 2020-07-13 14:27:54 +02:00
Craig Raw
b86887838f update dust fee rate to bitcoin core 0.19 DUST_RELAY_TX_FEE 2020-07-11 11:39:43 +02:00
Craig Raw
49a4b548b4 wallet auto bitcoin unit 2020-07-09 14:34:13 +02:00
Craig Raw
4e7f0611c4 move bitcoinunit to drongo 2020-07-09 10:25:28 +02:00
Craig Raw
687e235c94 show only addressable script types 2020-07-08 15:56:23 +02:00
Craig Raw
6135338df2 wallettx understand if coin control present 2020-07-07 13:58:29 +02:00
Craig Raw
5d14be5c9c send all utxos support 2020-07-07 07:42:36 +02:00
Craig Raw
2ff9c94c62 handle user set fee 2020-07-05 15:01:12 +02:00
Craig Raw
ccf7de9f62 tx creation algorithm 2020-07-04 12:51:31 +02:00
Craig Raw
3ee7cd11eb tx input construction from script type 2020-07-03 11:00:27 +02:00
Craig Raw
c4dd1cb9dd address parsing support 2020-06-30 09:22:23 +02:00
Craig Raw
24cde9d073 improve multithreaded behaviour 2020-06-26 13:34:07 +02:00
Craig Raw
2e1012da8b fix off by one bug 2020-06-25 16:44:25 +02:00
Craig Raw
66d4e11bf6 index fill fixes 2020-06-25 11:27:20 +02:00
Craig Raw
18036268e5 compare txes better, clear nodes functionality 2020-06-21 17:14:56 +02:00
Craig Raw
81378b28b2 various improvements 2020-06-19 15:35:29 +02:00
Craig Raw
601c11bd50 make isScript check a little safer 2020-06-14 13:59:19 +02:00
Craig Raw
75701c725d keep block hash 2020-06-11 16:59:24 +02:00
Craig Raw
728b6ce5ef save block height for current stored transactions 2020-06-10 16:14:57 +02:00
Craig Raw
0d56692784 look at used transactions for fresh nodes 2020-06-10 14:15:15 +02:00
Craig Raw
fa30f37e23 get dates from block header, better equality 2020-06-02 15:15:16 +02:00
Craig Raw
cb18f7c4c3 blockchain to block rename for transaction in block 2020-06-02 11:05:02 +02:00
Craig Raw
9820491cd5 add block header 2020-06-02 10:59:50 +02:00
Craig Raw
2bd81b7044 refactor transactionpart to message and childmessage 2020-06-02 09:51:42 +02:00
Craig Raw
a25d020e54 refactor transaction history storage 2020-06-02 09:20:59 +02:00
Craig Raw
f88e3d4423 parse transactions by wallet node 2020-06-01 10:31:41 +02:00
Craig Raw
d0a75fd268 highest used index 2020-05-30 13:15:28 +02:00
Craig Raw
60a0d450e0 refactor wallet node to non inner class 2020-05-30 11:57:40 +02:00
Craig Raw
cc4f70002f make wallet node static inner class 2020-05-30 11:47:05 +02:00
Craig Raw
a32410b538 transaction history support 2020-05-30 11:22:17 +02:00
Craig Raw
11978e1f48 output descriptor support and node fixes 2020-05-28 11:42:02 +02:00
Craig Raw
7871413573 generate fresh address nodes 2020-05-26 17:55:11 +02:00
Craig Raw
eabcf4e8f4 wallet receiving and change support 2020-05-26 10:18:52 +02:00
Craig Raw
c871bf829a refactor to parametrize with keypurpose 2020-05-23 18:10:04 +02:00
Craig Raw
de70f44535 address and output script derivation support 2020-05-23 16:52:54 +02:00
Craig Raw
785040898b naming improvements 2020-05-21 11:01:20 +02:00
Craig Raw
06de1d7e14 more clearing private bits 2020-05-19 16:41:37 +02:00
Craig Raw
d2bd335e76 securely handle mnemonic seed in memory 2020-05-19 14:02:29 +02:00
Craig Raw
9f5f5689bb use charsequence and securestring instead of string 2020-05-19 12:36:39 +02:00
Craig Raw
aa60e6b92e no fingerprint labels and tests 2020-05-18 17:19:17 +02:00
Craig Raw
8ffd225007 wallet encryption with argon2 key derivation 2020-05-18 15:50:25 +02:00
Craig Raw
7cb2f043a1 add argon2 key deriver 2020-05-17 13:38:20 +02:00
Craig Raw
e20501d954 refactor keycrypters 2020-05-17 12:51:56 +02:00
Craig Raw
312143cb61 rework deterministicseed, keycrypter 2020-05-16 15:09:15 +02:00
Craig Raw
9e5a7d0e8d electrum seed version system support 2020-05-15 17:56:14 +02:00
Craig Raw
6b1f7d0174 complete wallet validation 2020-05-15 13:42:58 +02:00
Craig Raw
f6414a4475 wallet export, settings fixes 2020-05-15 12:56:15 +02:00
Craig Raw
0c9a100c6d get account from derivation path 2020-05-14 13:36:19 +02:00
Craig Raw
766a986abb wallet encryption and decryption 2020-05-13 12:46:43 +02:00
Craig Raw
b951f79cfd minor refactoring 2020-05-12 14:16:13 +02:00
Craig Raw
ba2004c9fb followup to prev 2020-05-12 12:24:22 +02:00
Craig Raw
242c83735a refactor keycrypter hierarchy, add ECIESKeyCrypter #2 2020-05-11 17:39:39 +02:00
Craig Raw
492f447c28 refactor keycrypter hierarchy, add ECIESKeyCrypter 2020-05-11 17:39:23 +02:00
Craig Raw
c675e395db keystore source display 2020-05-11 11:37:25 +02:00
Craig Raw
0f008b8985 store mnemonic in determininistic seed 2020-05-10 15:30:40 +02:00
Craig Raw
dc569979e1 encryptableitem and bip39 from bitcoinj 2020-05-10 13:28:16 +02:00
Craig Raw
be0c4d1176 minor bip39 fixes 2020-05-08 14:36:29 +02:00
Craig Raw
d394c25a3c private key derivation 2020-05-07 14:36:03 +02:00
Craig Raw
c5042cf130 handle master private keys 2020-05-06 17:13:07 +02:00
Craig Raw
27dda91576 add bip39 seed calculator 2020-05-05 09:26:29 +02:00
Craig Raw
019a3cf34f handle casing on types 2020-04-29 16:50:52 +02:00
Craig Raw
cbffaf3e41 ensure keystore source and wallet model is always filled in 2020-04-29 15:43:57 +02:00
Craig Raw
d740895bd6 ability to display type of wallet model 2020-04-29 15:04:09 +02:00
Craig Raw
ed056bc49f keystore importing 2020-04-29 12:03:09 +02:00
Craig Raw
294649de66 wallet import and export needs 2020-04-25 11:38:46 +02:00
Craig Raw
282628e455 add ecies encrypt and decrypt 2020-04-21 16:58:00 +02:00
Craig Raw
7d69fafc3e add private key support to eckey #2 2020-04-20 16:30:40 +02:00
Craig Raw
06b46e0a02 add private key support to eckey 2020-04-20 16:16:17 +02:00
Craig Raw
813781902b wallet copying 2020-04-19 19:07:06 +02:00
Craig Raw
97cdd62173 move child derivation paths into outputdescriptor #2 2020-04-18 12:38:33 +02:00
Craig Raw
f7f15cebc7 move child derivation paths into outputdescriptor 2020-04-18 12:38:05 +02:00
Craig Raw
075707f1ad refactor extendedpublickey and keyderivation 2020-04-18 10:42:51 +02:00
Craig Raw
764841635c cleanup script type and patterns 2020-04-17 10:12:59 +02:00
Craig Raw
08e8df0807 wallet implementation first commit 2020-04-17 10:02:30 +02:00
Craig Raw
0cebee3d22 transaction and script parsing improvements 2020-04-11 15:04:46 +02:00
Craig Raw
14767c3250 helper methods for working with addresses 2020-04-10 16:59:23 +02:00
Craig Raw
2f5655708d minor refactoring 2020-04-09 15:07:38 +02:00
Craig Raw
c8226ea947 psbt and scripting improvments 2020-04-09 14:35:50 +02:00
Craig Raw
9d15c27bfd relative time locking improvements 2020-04-06 14:53:16 +02:00
Craig Raw
130fea0937 sequence number handling improvements 2020-04-05 16:01:24 +02:00
Craig Raw
d28186f8c9 script convenience methods 2020-04-04 15:13:13 +02:00
Craig Raw
4d875f5ad0 witness as display string 2020-04-03 17:14:10 +02:00
Craig Raw
e574a2bfd3 changes for input pane 2020-04-03 16:07:03 +02:00
Craig Raw
1a0880dde7 is locktime enabled check 2020-04-02 14:00:47 +02:00
Craig Raw
e0a4b29ed4 rename tld 2020-04-01 13:20:36 +02:00
Craig Raw
520aa89baf more detailed console logging 2020-04-01 12:39:31 +02:00
Craig Raw
53f0268445 upgrade bc, export packages, switch logging 2020-04-01 12:35:47 +02:00
Craig Raw
4f15cd48aa move module-info 2020-03-31 15:48:39 +02:00
Craig Raw
6614170d85 Merge branch 'master' of github.com:craigraw/drongo 2020-03-31 15:44:02 +02:00
Craig Raw
7fa50bc215 upgrade to java 9 and gradle 6 2020-03-31 15:43:34 +02:00
Craig Raw
314ee075c2 test for psbt in bytes form 2020-03-30 16:50:28 +02:00
Craig Raw
3d292b9dcc add checked PSBTParseException to replace IllegalStateException 2020-03-30 15:56:19 +02:00
Craig Raw
a1696ec2e8 update to refactor signature verification 2020-03-30 11:41:02 +02:00
Craig Raw
fd94e885b8 refactor partial signature verification 2020-03-30 11:39:39 +02:00
Craig Raw
7fb5601de3 transaction headers retrieval and edit 2020-03-28 10:44:50 +02:00
Craig Raw
566aa2e953 Tx inputs and outputs can find their index 2020-03-22 10:21:32 +02:00
Craig Raw
0340f06de4 partial signature verification 2020-03-06 15:21:05 +02:00
Craig Raw
061440b422 add additional checks and tests 2020-02-27 13:39:08 +02:00
Craig Raw
e5d2ad427c refactor and initial tests 2020-02-23 18:04:43 +02:00
Craig Raw
ce2b0648a6 psbt initial draft 2020-02-21 16:27:08 +02:00
Craig Raw
89e7892d7c change fingerprint storage from int to byte array 2020-02-13 10:40:32 +02:00
Craig Raw
d3d5fd4a80 detect p2wsh addresses properly 2019-09-06 18:11:57 +02:00
Craig Raw
3406ec2f15 fix transactions spending old p2pk coinbase utxos 2019-09-06 15:11:20 +02:00
Craig Raw
45154359e9 add multisig output descriptors 2019-09-06 14:47:38 +02:00
Craig Raw
e8f9e329a7 Fix address hashing 2019-03-29 15:06:23 +02:00
Craig Raw
82e01f4c13 initialise wallet addresses 2019-03-18 17:25:49 +02:00
Craig Raw
65e288b6de log all transactions 2019-03-18 17:21:44 +02:00
Craig Raw
4f2c055d1d check wallets #2 2019-03-18 17:21:11 +02:00
Craig Raw
1d925f63ae check wallets 2019-03-18 17:08:57 +02:00
Craig Raw
db2486ba97 log file name 2019-03-18 16:21:17 +02:00
Craig Raw
cdf608807f prepare address matching 2019-03-18 16:18:24 +02:00
Craig Raw
911a54347d Initial commit 2019-03-15 20:15:28 +02:00