Dash - Reinventing Cryptocurrency
Go to file
gladcow 5454bea377 Automatic InstantSend locks for "simple" transactions (#2140)
* add locktransaction rpc call

* Remove special instantsend fee for simple transactions

* Function to check if trx is simple enough to be autolocked

* Automatic lock for all received from peers simple trxes

If we get a new transaction with CInv message and it is "simple" and
is accepted in mempool, we initiate its lock. We don't lock orphan trxes
that accepted in mempool after this trx because they are locked by other
peers.

* Automatically lock simple trxes in wallet

* protocol bump for InstantSend without special fee

* Add function to detect used mempool share

* Mempool threshold for auto IX locks

* Add SPORK_16_INSTANTSEND_AUTOLOCKS spork

* Make autolocks active only when spork SPORK_16_INSTANTSEND_AUTOLOCKS is active

* BIP9 autolocks activation

* revert increasing min peer protocol version for mn rank

* move IsTrxSimple check to CTxLockRequest class

* make MAX_INPUTS_FOR_AUTO_IX private member of CTxLockRequest class

* make AUTO_IX_MEMPOOL_THRESHOLD private member of CInstantSend class

* remove locktransaction RPC call

* tests for automatic IS locks

* fix mempool threshod calculation

* bump mocktime in activate_autoix_bip9

* set node times

* no need to spam the node with gettransaction rpc requests that often

* use `spork active` instead of leaking spork logic into tests

* codestyle fixes

* add test description in comments

* fix typo

* sync test nodes more often during BIP9 activation

* Use 4th bit in BIP9 activation

* Fix comments according codestyle guide

* Call AcceptLockRequest and Vote at the first node creating autoix lock

* fix mempool used memory calculation

* rallback not necessary change in CWallet::CreateTransaction

* test for stopping autolocks for full mempool

* Inject "simple autolockable" txes into txlockrequest logic
2018-09-26 17:17:47 +03:00
.github Use "Dash Core" instead of "dash-core" in some places and Dashify 2018-01-16 08:30:14 +01:00
.tx Merge remote-tracking branch 'bitcoin/0.12' into HEAD 2016-02-06 16:48:04 +03:00
build-aux/m4 Merge #9705: build: Add options to override BDB cflags/libs 2018-01-23 09:24:28 +01:00
ci Move to in-docker CI builds and add Jenkins support (#2178) 2018-07-12 16:28:59 +03:00
contrib [ZMQ] Notify when an IS double spend is attempted (#2262) 2018-09-12 14:12:44 +03:00
dash-docs Update protocol-documentation.md (#1964) 2018-03-02 16:13:47 +03:00
depends Use ccache in gitian builds (#2185) 2018-07-20 16:33:02 +03:00
doc [ZMQ] Notify when an IS double spend is attempted (#2262) 2018-09-12 14:12:44 +03:00
docker Automatically build and push docker image to docker.io/dashpay/dashd-develop (#1809) 2018-01-10 12:17:43 +03:00
qa Automatic InstantSend locks for "simple" transactions (#2140) 2018-09-26 17:17:47 +03:00
share Backport Bitcoin #11881: Remove Python2 support (#2224) 2018-08-13 19:07:52 +03:00
src Automatic InstantSend locks for "simple" transactions (#2140) 2018-09-26 17:17:47 +03:00
.gitattributes Separate protocol versioning from clientversion 2014-10-29 00:24:40 -04:00
.gitignore Add dummy CMakeLists.txt file to make development with CLion easier (#1978) 2018-03-09 15:41:28 +03:00
.travis.yml Move to in-docker CI builds and add Jenkins support (#2178) 2018-07-12 16:28:59 +03:00
autogen.sh Merge #8784: Copyright headers for build scripts 2018-01-12 08:02:45 +01:00
CMakeLists.txt Add dummy CMakeLists.txt file to make development with CLion easier (#1978) 2018-03-09 15:41:28 +03:00
configure.ac Use C++14 standard when building (#2209) 2018-08-11 01:29:28 +03:00
CONTRIBUTING.md add link for developer-notes in contributing (#2260) 2018-09-05 15:05:27 +03:00
COPYING Merge #9617: [Trivial] Update license year range to 2017 2018-01-21 12:48:33 +01:00
INSTALL.md Dashify INSTALL.md and build-unix.md 2018-01-12 16:12:54 +01:00
Jenkinsfile Perform Jenkins builds in /dash-src all the time to fix caching issues (#2242) 2018-08-29 13:03:18 +03:00
Jenkinsfile.gitian Build bionic base image in Jenkinsfile.gitian & update docs (#2226) 2018-08-14 22:36:15 +03:00
libdashconsensus.pc.in Merge #7192: Unify product name to as few places as possible 2017-12-11 08:30:26 +01:00
Makefile.am Merge #10228: build: regenerate bitcoin-config.h as necessary 2018-01-26 12:59:29 +01:00
README.md Docs - Update Core version number in readme files (#2267) 2018-09-10 13:23:22 +03:00

Dash Core staging tree 0.12.4

master: Build Status develop: Build Status

https://www.dash.org

What is Dash?

Dash is an experimental digital currency that enables anonymous, instant 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 of the RPC interface, written in Python, that are run automatically on the build server. These tests can be run (if the test dependencies are installed) with: qa/pull-tester/rpc-tests.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.