Commit Graph

54 Commits

Author SHA1 Message Date
tomFlowee ee50b65e66 Detect CashFusion transactions 2021-11-16 15:08:22 +01:00
tomFlowee ea8758c03d UX fixlets
- extend clearing of 'new' icon timeout.
- make unconfirmed transactions also 'new'
- put a timer on the datetime item of the transaction to allow
timestamps like "now" and "an hour ago" to be updated as time passes.
2021-11-09 20:49:37 +01:00
tomFlowee 7079b2c4a4 Make HD wallets put change on change addresses. 2021-11-09 10:37:31 +01:00
tomFlowee 5edfbe7ca4 Add test for rejected transactions 2021-11-08 19:36:47 +01:00
tomFlowee 06b02db4dc Add new unittest and code for output locking 2021-11-08 15:24:48 +01:00
tomFlowee d70eb30db4 Add API docs. 2021-11-08 15:23:29 +01:00
tomFlowee 351283e6bf Fix typo in methodname. 2021-11-08 15:21:53 +01:00
tomFlowee cfcbdede36 Add wallet-upgrade (version 1 -> version 2)
We introduced for secret keys the signature-type field, which is required
to avoid signing with one key as both Schnorr and ecdsa as
that can cause leakage making recovering the private key much easier.

So, we now store this data but old wallets didn't fetch that from
the incoming transactions. So this conversion fetches the data from the
transactions (which are on the device) and stores the sigtype with the
keys.
2021-11-02 14:54:59 +01:00
tomFlowee 27feaef5c4 Follow upstream refactor 2021-11-02 11:09:56 +01:00
tomFlowee 3696499d9f Split HD key managent into created and bloom-asked
The bloom filter didn't include all created keys and thus we didn't send
the bloom in some cases.

Now we keep track of exactly which keys were sent and we re-send a bloom
filter if half of those have been used in order to not miss out on any
transactions.
2021-11-01 13:33:33 +01:00
tomFlowee 35bd66297d Find in the transactions the signature type used.
As transactions are found on the blockchain we remember the signature
type used in order to avoid one private key to be used for both types of
signatures, which can cause compromised keys.
2021-10-31 16:56:03 +01:00
tomFlowee 32d2142ab0 Show dates nicer
This adds the feature that we show a "last receive" field on a wallet,
and we also change the date format to have "yesterday" style dates
for recent ones.
2021-10-31 15:30:38 +01:00
tomFlowee d50b0c169c Make wallet details pane more complete. 2021-10-30 15:23:43 +02:00
tomFlowee 6057d589b1 Working on a new AccountDetails view. 2021-10-29 18:20:42 +02:00
tomFlowee 80d7456898 Make new-wallet pane functional.
This changes the default generated wallet to be a HD wallet.
We also add a helper class to configure newly created wallets from QML.
This finishes up the new wallet panel to have all the visible features
actually do something.
2021-10-27 19:11:00 +02:00
tomFlowee da8b883116 Add 'startHeight' advanced property to import wallet.
This also fixes a bunch of bugs which makes HD wallets in principle work
(tested with big test wallet).
2021-10-21 20:54:34 +02:00
tomFlowee 80f731b8b4 Show more details about HD wallet in UI 2021-10-21 17:04:20 +02:00
tomFlowee d839e18ed2 Add to wallet ability to sync a HD path 2021-10-21 14:57:20 +02:00
tomFlowee 1106937648 Make wallet able to be hierarchically deterministic 2021-10-14 14:42:27 +02:00
tomFlowee 87e6516052 Fix minor warning. 2021-10-13 18:11:49 +02:00
tomFlowee c03fbed5e2 Add functionality to export privkeys. 2021-07-31 17:19:34 +02:00
tomFlowee 7a4c3d6f93 Ensure we save whenever a new tx is found for a wallet.
This saves the wallet data at most once a second whenever new
transactions were found for a certain wallet.
2021-07-30 15:56:52 +02:00
tomFlowee 2973dcbe24 Make first startup much faster
We store a blockheight at which point a private key is created, allowing
us to skip merkle checks before that time.
This was was tricky for a not yet synched wallet because its blockchain
was stuck at height zero.
Causing us to sync everything anyway.

Now we store the timestamp of wallet create instead, until the time that
the blockchain is synched. After that we resolve the block that we need
to start sync from based on that timestamp.
2021-05-28 18:13:50 +02:00
tomFlowee dc48600ff4 Make Schnorr signing default. 2021-05-04 17:41:49 +02:00
tomFlowee 82b0c9bed4 Merge branch 'walletAmounts' 2021-05-03 12:43:13 +02:00
tomFlowee 1b5235a84b Make loading work for user-locked outputs.
This generally makes the locking of outputs in our wallet much more sane
with some renames and fixes.
2021-05-03 12:42:44 +02:00
tomFlowee f96a51eb89 Improve initial-wallet creation 2021-04-21 15:17:08 +02:00
tomFlowee fb598c8c8f Add notification manager. 2021-02-05 16:56:02 +01:00
tomFlowee b893d0b36a Keep compatible with older Qt
Make sure we can compile on older platforms.
2021-02-01 22:03:10 +01:00
tomFlowee 0e34e308db Add unit test for Wallet::findInputsFor() 2021-01-31 22:51:55 +01:00
tomFlowee 8f14780ecd Add some API docs 2021-01-28 22:57:27 +01:00
tomFlowee 6e6ddb467e When a tx gets confirmed, show this in our model. 2021-01-27 20:03:53 +01:00
tomFlowee 8e62c36b3b Save various more properties of the PaymentRequest 2021-01-15 17:23:08 +01:00
tomFlowee e6844fe1a7 Add payment requests overview 2021-01-07 20:10:09 +01:00
tomFlowee 5726849a91 Make remembering a payment request possible
Should a user want to move to other tasks they can store the payment
request backgrounding the processing of said incoming request.
2021-01-06 23:15:54 +01:00
tomFlowee 1262733154 Make bip21 payment request minimal functional 2021-01-06 15:26:46 +01:00
tomFlowee 20690a24ce Update email 2021-01-05 14:04:10 +01:00
tomFlowee 95000536f0 Cleanups and fixes 2020-12-25 23:27:14 +01:00
tomFlowee 3b20226fce Expose details of a transaction for QML
For each transaction allow to click on it and show lots of further
details about it.

This also fixes various bugs and adds some basic helper methods in
various places.

The QML is barely functional, getting the right data exposed was the
only goal today.
2020-12-17 23:12:39 +01:00
TomZ cb2b147096 Split 'balance' into 3 variables.
* confirmed
* unconfirmed
* immature
2020-11-06 22:54:39 +01:00
TomZ f5ca55b587 Educate the Wallet about coinbase maturity
Now we wait for coinbases to mature before we show them in balance and
before we use them in transactions.
2020-11-06 20:20:41 +01:00
TomZ 0dbf1010af Split the growing Wallet.cpp into multiple files. 2020-11-06 18:25:48 +01:00
TomZ c8ae3817c5 Make sending transactions on startup work better.
We wait until the chain is synched and then we check for and broadcast
unconfirmed transactions.

This essentially means that every single block we receive will trigger
this code. In BCH I think that is just fine since all we really do is
send an INV.
2020-11-05 22:21:50 +01:00
TomZ fce7f1a955 Make wallet send all unconfirmed transactions again
We make sure to broadcast our transactions repeatedly if they are not
yet confirmed.
For instance if the last time we made it we were offline.
2020-11-04 22:00:34 +01:00
TomZ f24a6e0f84 Implement replacing transaction
When a unconfirmed transaction gets made invalid by a mined one spending
the same output, this updates the wallet balance and UTXO state
properly.
2020-11-03 20:16:36 +01:00
TomZ ae0c395d50 Make the wallet process mempool transactions
When a transaction is received by the p2pnet layer via a simple INV/
GetData we now process this and properly lock the outputs it spent to
avoid creating double spending transactions.

One task is left: properly recognize when a mined transaction
invalidates another transaction (like an unconfirmed one) and update the
datastructures.
2020-11-02 21:49:06 +01:00
TomZ 005c241344 Make backend able to accept a 'max' payment
The idea is that the user can empty out a wallet using the 'max' button.
2020-10-23 22:34:34 +02:00
TomZ 0cd48d8809 Version 2 of UTXO selection algo
This avoids the far to CPU intensive perfect solution and instead does a
best effort comparisn between various semi-random selections of inputs.
2020-10-23 19:45:08 +02:00
TomZ 19e941ce14 Show the sync-height of a wallet. 2020-10-17 17:34:40 +02:00
TomZ 99f5b728f5 Re-create the send page
This brings back a new GUI for sending payments.
2020-10-15 19:18:54 +02:00