Commit Graph

318 Commits

Author SHA1 Message Date
evan82
a9ff5617e9 Merge pull request #177 from UdjinM6/v0.11.1.x_fix_gui_performance_issues
V0.11.2.x Performance and UI Fixes Pack
2015-02-12 16:50:17 -07:00
UdjinM6
90b2a44045 wallet - fix locks / cleanup a bit 2015-02-12 16:26:32 +03:00
Evan Duffield
23ea75f737 Add maximum out value for IX via spork 2015-02-11 08:08:55 -07:00
Evan Duffield
9f91d3cd9e fixed possibility of IX getting a lack of fees 2015-02-08 22:38:22 -07:00
UdjinM6
c8c14effff use wallet db to save ds flag / debug 2015-02-08 17:03:39 +03:00
evan82
01356fca76 Merge pull request #167 from UdjinM6/v0.11.1.x_fix_SelectCoins_best_sub_loops
optimize SelectCoinsMinConf best subset loops
2015-02-07 13:12:30 -07:00
evan82
c187e8288c Merge pull request #164 from UdjinM6/v0.11.1.x_optimize_notifytxchanges_call
call NotifyTransactionChanged for the same prevout tx hash only once per tx commit
2015-02-07 13:01:34 -07:00
UdjinM6
ab28751bbe fix 2015-02-07 08:19:02 +03:00
UdjinM6
a30b439259 optimize SelectCoins best subset debug output 2015-02-07 07:39:25 +03:00
UdjinM6
dc19605ec7 call NotifyTransactionChanged for the same prevout tx hash only once per tx commit 2015-02-06 07:25:46 +03:00
UdjinM6
16f725961a - use only trusted coins to calculate anon balance/avg rounds
- use only non-conflicted coins to calculate denom balance
- move GetDepthInMainChain and some conditions out of loops
2015-02-06 04:53:28 +03:00
Evan Duffield
4064c2f5ef Improved IX security / quicker tx scanning 2015-02-04 14:59:19 -07:00
UdjinM6
1583469c49 use only completely anonymized denoms when sending ds tx 2015-02-04 20:37:30 +03:00
Evan Duffield
6faa140c49 reference node fix 2015-02-04 08:57:09 -07:00
Evan Duffield
65612697ca Added better error messages 2015-02-04 08:37:49 -07:00
Evan Duffield
454154c18f fixed min IX fee 2015-02-04 05:00:17 -07:00
Evan Duffield
b1c772a190 minimum fees for IX 2015-02-04 03:44:41 -07:00
UdjinM6
877405c8fb use more common syntax to make it clear that actually 6 confirmations are required for IX to work / +comments 2015-02-04 13:20:33 +03:00
Evan Duffield
f4b26d6f10 Enforcing IX locks
- Scan IX locks on new blocks to make sure no conflicting txes are present
- Upon completion of a IX lock, check for conflicts and remove blocks if needed
2015-02-03 15:40:00 -07:00
Evan Duffield
13175a3c52 Fixed minconfirmations for IX 2015-02-03 15:20:13 -07:00
evan82
62bdb540f3 Merge pull request #155 from UdjinM6/v0.11.1.x_fix_conflicted
clear vValue in SelectCoinsMinConf - should fix an issue with conflicted txes
2015-02-03 14:51:12 -07:00
UdjinM6
1d3e296613 clear vValue in SelectCoinsMinConf - should fix issue with conflicted txes 2015-02-04 00:00:54 +03:00
UdjinM6
0ca6b1c91c do not use IX coins until we have at least 1 blockchain confirmation 2015-02-03 23:25:00 +03:00
UdjinM6
a59e3ae3d3 every ds related function should ignore ix depth and use blockchain depth instead 2015-02-03 12:55:25 +03:00
Evan Duffield
2992907d91 Better DOS protection, fixed min confirmations 2015-02-02 10:33:52 -07:00
Evan Duffield
5b0d0146b0 only update when tx is found 2015-02-02 05:06:43 -07:00
Evan Duffield
1377b71347 ignore IX confirmations when forming new tx 2015-02-01 10:21:43 -07:00
Evan Duffield
b1d701275a only use inputs with 5 confirmations for IX 2015-02-01 09:30:58 -07:00
evan82
2158023d4c Merge pull request #139 from UdjinM6/fix_more_usage_of_IsDenominatedAmount
use IsDenominatedAmount instead of loops and GetInputDarksendRounds where applicable
2015-01-30 07:41:59 -07:00
evan82
366435253f Merge pull request #138 from UdjinM6/fix_AvailableCoins
always get only confirmed coins by AvailableCoins for every DS relative action
2015-01-30 07:40:13 -07:00
UdjinM6
52dabd1166 always get only confirmed coins by AvailableCoins 2015-01-30 01:15:04 +03:00
UdjinM6
84b0e6f587 use IsDenominatedAmount instead of loops and GetInputDarksendRounds where applicable 2015-01-29 13:36:18 +03:00
UdjinM6
6f7f19fdcc fix updateDarksendProgress / add isDenominatedAmount and GetNormalizedAnonymizedBalance 2015-01-28 10:35:17 +03:00
evan82
1598d8e7a6 Merge pull request #134 from UdjinM6/fix_creating_denominated
fixing pre-mix process of creation denominated amounts
2015-01-27 10:57:35 -07:00
Evan Duffield
de8a436363 fix overpaying for DSTX 2015-01-27 07:29:25 -07:00
UdjinM6
a07d637a48 don't use collateral amounts on CreateDenominated / make collateral inputs from all available coins and not only from non-denominated / IsCollateralAmount function 2015-01-27 07:13:34 +03:00
UdjinM6
144b24bee5 more fixes/cleanup/debug output to DS mixing 2015-01-26 00:18:26 +03:00
UdjinM6
9a4fac6bb6 fixing pre-mix process of creation denominated amounts 2015-01-25 02:57:55 +03:00
Evan Duffield
78fe35f06d Implemented DarkSend convertability
Darksend defaults to a new mode which enables inputs/outputs
of each session to be different. For example 10DRK can be input
and 1DRKx10 can be output. This strengthens the anonymity of
Darksend greatly, which also increasing the usability (Users who
run out of .1DRK denominations can simply turn on Darksend to
split up larger inputs).
2015-01-21 07:55:21 -07:00
Evan Duffield
bbd869589c Collateral issues / Exact denoms / Disabled denoms
- When attempting to connect to a masternode for submission into the pool a recursive call to DoAutoDenominate was used. This could possibly take more than 1 minute to complete if it found a string of bad masternodes, in which case the correct masternode was overwritten and replaced with an invalid one. Upon submission, the DS TX was given to the incorrect node causing collateral to be charged.
- To fix this I've removed the recursion and added a critical section to DoAutoDenominate.
- Exact input denominations are matched in PrepareDarksendDenominate to remove the possibility of having change in the pool
- Removed disabled denominations, not needed anymore
2015-01-20 10:33:52 -07:00
Evan Duffield
b40bfacb55 improved anonymity for smaller wallets 2015-01-20 02:42:15 -07:00
Evan Duffield
2737edbbf3 Removed non-denomational inputs (UdjinM6)
Exact amounts are now allocated directly to denominated
funds then submitted to the pool. This improves anonymity
by never having non-denomination inputs enter or exit the pool.
Randomness has also been added to the amount of each session to
improve anonymity.
2015-01-19 20:12:10 -07:00
Darkcoin
daab1083cf Merge pull request #116 from UdjinM6/110x_ds_fix2
110x ds fix2
2015-01-18 07:40:45 -07:00
UdjinM6
33a7c539ba another attempt to simplify ds and fix some issues 2015-01-15 17:41:56 +03:00
vertoe
b8e53a337c merge devel-0.9 2015-01-15 12:40:25 +01:00
vertoe
e6ce27defd Update copyright year 2015 2015-01-15 11:31:35 +01:00
Darkcoin
3dcdfc6ff2 Merge pull request #96 from freynder/keepass
Implemented KeePass Integration
2015-01-12 10:52:07 -07:00
Evan Duffield
6df70d30b1 Fixed progress bar / Improve GetDenominatedBalance
- Fixed a few issues when calculating progress including some variables that should be limited to 1 (a and b). GetDenominatedBalance also seemed to be giving bad results so I rewrote it to be cleaner, not sure if that was a part of the problem.
- Progress bar is only recalculated when all inputs in wallet have been confirmed (will stop the progress from jumping around)
2015-01-02 15:20:30 -07:00
Francis Reynders
bdb50539de Implemented KeePass Integration
More info regarding KeePass: http://keepass.info/

KeePass integration will use KeePassHttp (https://github.com/pfn/keepasshttp/) to facilitate communications between the client and KeePass. KeePassHttp is a plugin for KeePass 2.x and provides a secure means of exposing KeePass entries via HTTP for clients to consume.

The implementation is dependent on the following:
- crypter.h for AES encryption helper functions.
- rpcprotocol.h for handling RPC communications. Could only be used partially however due some static values in the code.
- OpenSSL for base64 encoding. regular util.h libraries were not used for base64 encoding/decoding since they do not use secure allocation.
- JSON Spirit for reading / writing RPC communications

The following changes were made:
- Added CLI options in help
- Added RPC commands: keepass <genkey|init|setpassphrase>
- Added keepass.h and keepass.cpp which hold the integration routines
- Modified rpcwallet.cpp to support RPC commands

The following new options are available for darkcoind and darkcoin-qt:
  -keepass               Use KeePass 2 integration using KeePassHttp plugin (default: 0)
  -keepassport=<port>    Connect to KeePassHttp on port <port> (default: 19455)
  -keepasskey=<key>      KeePassHttp key for AES encrypted communication with KeePass
  -keepassid=<name>      KeePassHttp id for the established association
  -keepassname=<name>    Name to construct url for KeePass entry that stores the wallet passphrase

The following rpc commands are available:
- keepass genkey: generates a base64 encoded 256 bit AES key that can be used for the communication with KeePassHttp. Only necessary for manual configuration. Use init for automatic configuration.
- keepass init: sets up the association between darkcoind and keepass by generating an AES key and sending an association message to KeePassHttp. This will trigger KeePass to ask for an Id for the association. Returns the association and the base64 encoded string for the AES key.
- keepass setpassphrase <passphrase>: updates the passphrase in KeePassHttp to a new value. This should match the passphrase you intend to use for the wallet. Please note that the standard RPC commands walletpassphrasechange and the wallet encrption from the QT GUI already send the updates to KeePassHttp, so this is only necessary for manual manipulation of the password.

Sample initialization flow from darkcoin-qt console (this needs to be done only once to set up the association):
- Have KeePass running with an open database
- Start darkcoin-qt
- Open console
- type: "keepass init" in darkcoin-qt console
- (keepass pops up and asks for an association id, fill that in). Example: mydrkwallet
- response: Association successful. Id: mydrkwalletdarkcoin - Key: AgQkcs6cI7v9tlSYKjG/+s8wJrGALHl3jLosJpPLzUE=
- Edit darkcoin.conf and fill in these values
    keepass=1
    keepasskey=AgQkcs6cI7v9tlSYKjG/+s8wJrGALHl3jLosJpPLzUE=
    keepassid=mydrkwallet
    keepassname=testwallet
- Restart darkcoin-qt

At this point, the association is made. The next action depends on your particular situation:
- current wallet is not yet encrypted. Encrypting the wallet will trigger the integration and stores the password in KeePass (Under the 'KeePassHttp Passwords' group, named after keepassname.
- current wallet is already encrypted: use "keepass setpassphrase <passphrase>" to store the passphrase in KeePass.

At this point, the passphrase is stored in KeePassHttp. When Unlocking the wallet, one can use keepass as the passphrase to trigger retrieval of the password. This works from the RPC commands as well as the GUI.
2015-01-01 20:06:24 +01:00
Evan Duffield
a290bc06f2 Further improvements to the matching engine 2014-12-30 15:42:50 -07:00