Commit Graph

100 Commits

Author SHA1 Message Date
tomFlowee 7ea2f634b7 Ensure internally consistent state on wallet-load. 2021-05-03 12:58:58 +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 b752103acc Make receive pane work more sane 2021-04-21 17:48:08 +02:00
tomFlowee f96a51eb89 Improve initial-wallet creation 2021-04-21 15:17:08 +02:00
tomFlowee 1d88637e06 Follow API fixes in flowee-libs 2021-04-19 15:52:50 +02:00
tomFlowee 73a83dac6b Make unit tests more stable: don't pull in unit test
The wallet calls the singleton for notification purposes, lets simply
ifdef that out for unit tests.
2021-03-31 12:24:11 +02:00
tomFlowee 00d3248d05 Take suggestions from static analizer. 2021-02-05 17:47:17 +01: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 6c3366428b Minor nits 2021-01-29 19:19:30 +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 68b5fdc228 Working on paymentRequests.
Allow detected transactions to be seen by the PaymentRequest.
Allow PaymentRequests to be deleted.
2021-01-13 17:43:10 +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 062be17ff1 Show all outputs if we created the tx 2020-12-26 16:51:54 +01:00
tomFlowee 95000536f0 Cleanups and fixes 2020-12-25 23:27:14 +01:00
tomFlowee 30a5f3a255 Make display of tx-details look better. 2020-12-25 23:02:28 +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 abc9239fff Avoid calling rebuildBloom twice.
Remove the one at the end of loading, it makes more sense to do it
in the constructor since the bloom is about both the private keys
as well as for the utxo
2020-11-07 15:25:38 +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 5e80cc3990 Fix TODO wrt locked 2020-11-06 18:41:12 +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 a59cf26c37 Avoid updating the height multiple times.
There are some listeners connected to this which may make it more
expensive than expected.
2020-11-05 22:18:32 +01:00
TomZ 5f4c8ed268 Fixlets 2020-11-05 22:16:26 +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 781999d99d Bugfixes 2020-11-04 18:59:24 +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 63902d2730 Add support for testnet addresses 2020-10-30 18:06:58 +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 ca9845ae4f Handle user trying to send more than we have. 2020-10-23 20:20:42 +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 2c8954eafa Fix reorg-tx algo and add unit test for it.
The code to re-org all transactions in a block so transactions that
depend on others are processed after those they depend on had a silly
bug (missing line), fixed that but also made it unit-testable to
demonstrate the bug.
2020-10-17 16:38:37 +02:00
TomZ 1cb913c3e6 Make debugging the wallet easier. 2020-10-16 19:25:52 +02:00
TomZ 202ea2439a Add way to create new wallets
Including the import of an existing private key.
2020-10-16 18:28:33 +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
TomZ bbf1daf155 fix typo 2020-06-13 19:27:12 +02:00
TomZ d0bf8c63ee Add wallet boolean 2020-06-13 11:04:34 +02:00
TomZ 35246ffbc3 Implement first steps of paying.
This provides code for creating the transaction, selecting the UTXOs and
signing the transaction.
Essentially everything except the handling of final tx (like sending it
to a peer).
2020-06-08 14:37:29 +02:00
TomZ 9e9d8b1a32 Factor low-level behaviour out to class
For maintainability the pair of tx-index/output-index are now stored in
a simple class.

Additionally the calls to the privacyFilter have been upgraded to follow
the API fix in Flowee the Hub.
2020-06-08 14:31:45 +02:00
TomZ 32a193acbd Don't assume, flush! 2020-05-27 18:35:37 +02:00
TomZ d6d823ecd2 Introducing the new Flowee Pay solution
This is clearly beta-level quality, it won't lose your money, but
kittens can be killed if you use this in production! Don't do that!

This payment client uses the proper P2P client and does not require
any additional indexing services and therefor is very much geared
towards the most private it can be with SPV, while staying scalable and
nible.

The only GUI available right now is for the desktop, it should be pretty
simple to re-do a nice GUI for some mobile or similar form-factors.
That is one area that QML simply rocks in.
2020-05-24 19:29:32 +02:00