ab0f789be6
* wallet: Remove unused vecTxDSInTmp in CWallet::CreateTransaction * wallet: Calculate fees earlier and respect them in change determination * wallet: Cleanup obsolete code in CreateTransaction This parts were needed before when the fee was calculated after the change was assigned. But now with the previous commit the fee is calculated upfront and respected properly from the begining. So there is no longer a need of increasing or decreasing the change depending on the fee as it has the correct value directly after its added. * wallet: Try to pick other inputs if the selected ones are too small If nChange is negative in this cases it means that the selected inputs can't cover the amount to send and the required transaction fee. So we just add the missing amount to nFeeRet. This leads to the algo trying to pick larger inputs in the next loop (with nFeeRet more duffs than in the previous loop). This process gets repeated until the selected amount is enough to cover all the costs or until the requested amount can't be selected anymore (not enough utxos to cover it). * wallet: Break the loop if the transaction is ready * wallet: Respect additional amount from previous cycles * wallet: Respect available in coin selection, try all coins in last round * wallet: Avoid potential infinite loop, just in case.. * wallet: Fix signing in CreateTransaction Prior it was messed because of 60d96a1a28b55f071c6144f248e136679c44337e. Set coins isn't sorted the same way as txNew.vin is so it sometimes may pick wrong coins for signing the input. * wallet: Fix change calculation if "subtract fee from amount" is enabled * wallet: Return after fee calc if no or not enough amount available Return the proper fail reason. Prior to this commit it run into "Exceeded max tried". Note: Only return if not enough amount is available if we can't subtract fee from amount. * wallet: Fix break logic if available amount is not enough * Revert "wallet: Fix signing in CreateTransaction" This reverts commit 5fcdc0f00e7b961ebb62c94d17d585537e911309. * Use a vector of coins instead of a set in CreateTransaction and sort it in a BIP69 compliant way when needed * wallet: Adjust comment * Cleaner usage of nChangePosRequest/InOut * Simplify some fail/try-again conditions (fixed) * Loop through outputs to update change output position only when outputs are sorted for BIP69 No need to do this for non-bip69 cases (i.e. when a specific change output position was requested and assigned) * Avoid implicit conversions of int-s into bool-s * Move `nAmountLeft == nFeeRet` check higher, tweak comments * wallet: Fix some formatting * wallet: Improve CTxIn creation in CreateTransaction Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com> |
||
---|---|---|
.github | ||
.tx | ||
build-aux/m4 | ||
ci | ||
contrib | ||
depends | ||
doc | ||
docker | ||
share | ||
src | ||
test | ||
.gitattributes | ||
.gitignore | ||
.gitlab-ci.yml | ||
.travis.yml | ||
autogen.sh | ||
CMakeLists.txt | ||
configure.ac | ||
CONTRIBUTING.md | ||
COPYING | ||
INSTALL.md | ||
libdashconsensus.pc.in | ||
Makefile.am | ||
README.md |
Dash Core staging tree 0.16
What is Dash?
Dash is an experimental digital currency that enables instant, private payments to anyone, anywhere in the world. Dash uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Dash Core is the name of the open source software which enables the use of this currency.
For more information, as well as an immediately useable, binary version of the Dash Core software, see https://www.dash.org/get-dash/.
License
Dash Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
Development Process
The master
branch is meant to be stable. Development is normally done in separate branches.
Tags are created to indicate new official,
stable release versions of Dash Core.
The contribution workflow is described in CONTRIBUTING.md.
Testing
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people's pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.
Automated Testing
Developers are strongly encouraged to write unit tests for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run
(assuming they weren't disabled in configure) with: make check
. Further details on running
and extending unit tests can be found in /src/test/README.md.
There are also regression and integration tests, written
in Python, that are run automatically on the build server.
These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py
The Travis CI system makes sure that every pull request is built for Windows, Linux, and OS X, and that unit/sanity tests are run automatically.
Manual Quality Assurance (QA) Testing
Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.
Translations
Changes to translations as well as new translations can be submitted to Dash Core's Transifex page.
Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.
Translators should also follow the forum.