Commit Graph

85 Commits

Author SHA1 Message Date
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
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 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