Commit Graph

7596 Commits

Author SHA1 Message Date
Gregory Maxwell 11cc143895 Adds an expiration time for orphan tx.
This prevents higher order orphans and other junk from
 holding positions in the orphan map.  Parents delayed
 twenty minutes are more are unlikely to ever arrive.

The freed space will improve the orphan matching success rate for
 other transactions.
2016-06-15 09:56:28 +00:00
Peter Todd d80efec327
Update petertodd's testnet seed
New seed with servicebit filtering support.
2016-06-15 00:11:39 -04:00
BtcDrak ab8be98fdb Remove bad chain alert partition check
As per meeting 2016-03-31
https://bitcoincore.org/en/meetings/2016/03/31/#bad-chain-alerts

The partition checker was producing huge number of false-positives
and was disabled in 0.12.1 on the understanding it would either be
fixed in 0.13 or removed entirely from master if not.
2016-06-14 12:26:59 +01:00
Jonas Schnelli fb0ac482ee
Merge #7636: Add bitcoin address label to request payment QR code
1c2a1ba Add address label to request payment QR Code (QT) (Francesco 'makevoid' Canessa)
2016-06-14 13:17:44 +02:00
Wladimir J. van der Laan b67a4726df
Merge #8035: [Wallet] Add simplest BIP32/deterministic key generation implementation
afcd77e Detect -usehd mismatches when wallet.dat already exists (Jonas Schnelli)
17c0131 [Docs] Add release notes and bip update for Bip32/HD wallets (Jonas Schnelli)
c022e5b [Wallet] use constant for bip32 hardened key limit (Jonas Schnelli)
f190251 [Wallet] Add simplest BIP32/deterministic key generation implementation (Jonas Schnelli)
2016-06-14 11:44:22 +02:00
Jonas Schnelli afcd77e179
Detect -usehd mismatches when wallet.dat already exists 2016-06-14 08:56:01 +02:00
Pieter Wuille 1a5a4e6488 Randomize name lookup result in ConnectSocketByName 2016-06-13 23:53:08 +02:00
Pieter Wuille f9f5cfc506 Prevent duplicate connections where one is by name and another by ip 2016-06-13 23:53:08 +02:00
Pieter Wuille 1111b80df8 Rework addnode behaviour
* Use CNode::addeName to track whether a connection to a name is already open
  * A new connection to a previously-connected by-name addednode is only opened when
    the previous one closes (even if the name starts resolving to something else)
  * At most one connection is opened per addednode (even if the name resolves to multiple)
* Unify the code between ThreadOpenAddedNodeConnections and getaddednodeinfo
  * Information about open connections is always returned, and the dns argument becomes a dummy
  * An IP address and inbound/outbound is only reported for the (at most 1) open connection
2016-06-13 23:53:06 +02:00
Pieter Wuille ecd7fd37c8 Introduce REQUIRED_SERVICES constant 2016-06-13 17:40:16 +02:00
Pieter Wuille ee06e04369 Introduce enum ServiceFlags for service flags 2016-06-13 17:40:16 +02:00
Pieter Wuille 15bf863219 Don't require services in -addnode 2016-06-13 17:40:16 +02:00
Pieter Wuille 5e7ab16d29 Only store and connect to NODE_NETWORK nodes 2016-06-13 17:40:16 +02:00
Pieter Wuille fc83f18153 Verify that outbound connections have expected services 2016-06-13 17:40:16 +02:00
Pieter Wuille 3764dec36c Keep addrman's nService bits consistent with outbound observations 2016-06-13 17:40:16 +02:00
Francesco 'makevoid' Canessa 1c2a1bac0a Add address label to request payment QR Code (QT)
In the Receive 'Tab' of the QT wallet, when 'Show'ing a previously requested payment, add a label underneath the QR Code showing the bitcoin address where the funds will go to.

This way the user can be sure that the QR code scanner app the user using is reading the correct bitcoin address, preventing funds to be stolen.

Includes fix for HiDPI screens by @jonasschnelli.
2016-06-13 16:09:14 +01:00
Wladimir J. van der Laan 44c1b1c9bb
Merge #8141: Continuing port of java comparison tool
ff2dcf2 Tests: Edit bloated varint test and add option for 'barely expensive' tests (mrbandrews)
12c5a16 Catch exceptions from non-canonical encoding and print only to log (mrbandrews)
291f8aa Continuing port of java comptool (mrbandrews)
8c9e681 Tests: Rework blockstore to avoid re-serialization. (mrbandrews)
2016-06-13 11:37:37 +02:00
Wladimir J. van der Laan e1486eb95c
Merge #7598: Refactor CreateNewBlock to be a method of the BlockAssembler class
c2dd5a3 FIX: correctly measure size of priority block (Alex Morcos)
a278764 FIX: Account for txs already added to block in addPriorityTxs (Alex Morcos)
4dc94d1 Refactor CreateNewBlock to be a method of the BlockAssembler class (Alex Morcos)
2016-06-13 11:35:55 +02:00
Gregory Maxwell db0ffe80a0 This eliminates the primary leak that causes the orphan map to
always grow to its maximum size.

This does not go so far as to attempt to connect orphans made
 connectable by a new block.

Keeping the orphan map less full helps improve the reliability
 of relaying chains of transactions.
2016-06-10 20:42:03 +00:00
Pieter Wuille 1b0bcc5f95 Track orphan by prev COutPoint rather than prev hash 2016-06-10 19:51:20 +00:00
instagibbs 657fc19d65 rename mapAddrCount to mapNetGroupNodes 2016-06-10 10:09:06 -04:00
Wladimir J. van der Laan 63151521fd Merge commit '60ab9b200654ef0914459711cf2b22be16be3dc2' 2016-06-10 15:19:51 +02:00
Wladimir J. van der Laan ac8d0418ed
qt: translations update 2016-06-10 10:12:00 +02:00
Wladimir J. van der Laan fde0ac403c
Merge #8133: build: Finish up out-of-tree changes
d1a3d57 bulid: fix "make translate" when out-of-tree (Cory Fields)
340012d build: add temporary fix for "bad magic number" error in out-of-tree builds (Cory Fields)
142ffc7 travis: use out-of-tree build (Cory Fields)
92e37a3 build: fix out-of-tree 'make deploy' for osx (Cory Fields)
ab95d5d build: a few ugly hacks to get the rpc tests working out-of-tree (Cory Fields)
fc4ad0c build: more out-of-tree fixups (Cory Fields)
0cb0f26 build: out-of-tree fixups (Cory Fields)
2016-06-10 10:05:57 +02:00
Wladimir J. van der Laan 9201ce8f2f
Merge #8181: build: Get rid of `CLIENT_DATE`
d096d22 build: Get rid of `CLIENT_DATE` (Wladimir J. van der Laan)
2016-06-10 09:51:34 +02:00
Cory Fields d1a3d570e5 bulid: fix "make translate" when out-of-tree 2016-06-09 17:49:16 -04:00
Pieter Wuille 7ce9ac5c83
Merge #7292: [RPC] Expose ancestor/descendant information over RPC
176e19b Mention new RPC's in release notes (Suhas Daftuar)
7f6eda8 Add ancestor statistics to mempool entry RPC output (Suhas Daftuar)
a9b8390 Add test coverage for new RPC calls (Suhas Daftuar)
b09b813 Add getmempoolentry RPC call (Suhas Daftuar)
0dfd869 Add getmempooldescendants RPC call (Suhas Daftuar)
8f7b5dc Add getmempoolancestors RPC call (Suhas Daftuar)
5ec0cde Refactor logic for converting mempool entries to JSON (Suhas Daftuar)
2016-06-09 16:32:37 +02:00
Suhas Daftuar 7f6eda8043 Add ancestor statistics to mempool entry RPC output 2016-06-09 09:56:27 -04:00
Suhas Daftuar b09b8135ae Add getmempoolentry RPC call 2016-06-09 09:56:27 -04:00
Suhas Daftuar 0dfd86956d Add getmempooldescendants RPC call 2016-06-09 09:56:27 -04:00
Wladimir J. van der Laan d096d22446 build: Get rid of `CLIENT_DATE`
Putting the build date in the executable is a practice that has no place
in these days, now that deterministic building is increasingly common.

Continues #7732 which did this for the GUI.
2016-06-09 13:34:09 +02:00
Wladimir J. van der Laan 0b5279f89c
Merge #8166: src/test: Do not shadow local variables
c2715d3 Do not shadow local variables (Pavel Janík)
2016-06-09 08:25:25 +02:00
Wladimir J. van der Laan 1445835bd3
Merge #8154: drop vAddrToSend after sending big addr message
d3d02d5 drop vAddrToSend after sending big addr message (Kaz Wesley)
2016-06-09 08:13:14 +02:00
Wladimir J. van der Laan d36618585d
Merge #8168: util: Add ParseUInt32 and ParseUInt64
e012f3c util: Add ParseUInt32 and ParseUInt64 (Wladimir J. van der Laan)
2016-06-09 07:37:07 +02:00
Wladimir J. van der Laan 7e6dd7bee4
Merge #8172: Fix two warnings for comparison between signed and unsigned
77f63a4 Fix two warnings for comparison between signed and unsigned (Pieter Wuille)
2016-06-09 07:29:09 +02:00
Pieter Wuille 4286f43025
Merge #8173: Use SipHash for node eviction (cont'd)
eebc232 test: Add more test vectors for siphash (Wladimir J. van der Laan)
8884830 Use C++11 thread-safe static initializers (Pieter Wuille)
c31b24f Use 64-bit SipHash of netgroups in eviction (Pieter Wuille)
9bf156b Support SipHash with arbitrary byte writes (Pieter Wuille)
053930f Avoid recalculating vchKeyedNetGroup in eviction logic. (Patrick Strateman)
2016-06-08 18:32:34 +02:00
Pieter Wuille cd0c5135ab
Merge #8083: Add support for dnsseeds with option to filter by servicebits
2d83013d Add support for dnsseeds with option to filter by servicebits (Jonas Schnelli)
2016-06-08 17:42:14 +02:00
Wladimir J. van der Laan eebc232187 test: Add more test vectors for siphash
Add full test vectors from spec, test per byte and per 8 bytes.

Builds on #8086.
2016-06-08 15:50:55 +02:00
Pieter Wuille 66ed450d77
Merge #7935: Versionbits: GBT support
12c708a getblocktemplate: Use version/force mutation to support pre-BIP9 clients (Luke Dashjr)
9879060 getblocktemplate: Explicitly handle the distinction between GBT-affecting softforks vs not (Luke Dashjr)
72cd6b2 qa/rpc-tests: bip9-softforks: Add tests for getblocktemplate versionbits updates (Luke Dashjr)
d3df40e Implement BIP 9 GBT changes (Luke Dashjr)
2016-06-08 15:44:07 +02:00
Jonas Schnelli 6fa950a573
[RPC] Fix createrawtx sequence number unsigned int parsing 2016-06-08 15:43:28 +02:00
Pieter Wuille 77f63a4fcd Fix two warnings for comparison between signed and unsigned 2016-06-08 15:34:18 +02:00
Wladimir J. van der Laan 75ec320a0d
Merge #8153: [rpc] fundrawtransaction feeRate: Use BTC/kB
fa7f4f5 [rpc] fundrawtransaction feeRate: Use BTC/kB (MarcoFalke)
faf82e8 [rpc] fundrawtransaction: Fix help text and interface (MarcoFalke)
2016-06-08 14:14:54 +02:00
Wladimir J. van der Laan a7c41f2de0
Merge #8126: std::shared_ptr based CTransaction storage in mempool
288d85d Get rid of CTxMempool::lookup() entirely (Pieter Wuille)
c2a4724 Optimization: use usec in expiration and reuse nNow (Pieter Wuille)
e9b4780 Optimization: don't check the mempool at all if no mempool req ever (Pieter Wuille)
dbfb426 Optimize the relay map to use shared_ptr's (Pieter Wuille)
8d39d7a Switch CTransaction storage in mempool to std::shared_ptr (Pieter Wuille)
1b9e6d3 Add support for unique_ptr and shared_ptr to memusage (Pieter Wuille)
2016-06-08 14:01:18 +02:00
Wladimir J. van der Laan 761cddb690
Merge #7703: tor: Change auth order to only use password auth if -torpassword
2e49448 tor: Change auth order to only use HASHEDPASSWORD if -torpassword (Wladimir J. van der Laan)
2016-06-08 13:09:41 +02:00
Wladimir J. van der Laan 67c91f8c4c
Merge #8065: Addrman offline attempts
6182d10 Do not increment nAttempts by more than one for every Good connection. (Gregory Maxwell)
c769c4a Avoid counting failed connect attempts when probably offline. (Gregory Maxwell)
2016-06-08 13:01:53 +02:00
Wladimir J. van der Laan 2156fa23b8
Merge #8078: Disable the mempool P2P command when bloom filters disabled
3d3602f Add RPC test for the p2p mempool command in conjunction with disabled bloomfilters (Jonas Schnelli)
beceac9 Disable the mempool P2P command when bloom filters disabled (Peter Todd)
2016-06-08 12:56:48 +02:00
Wladimir J. van der Laan e012f3cea0 util: Add ParseUInt32 and ParseUInt64
Add error and range-checking parsers for unsigned 32 and 64 bit numbers.
The 32-bit variant is required for parsing sequence numbers from the
command line in `bitcoin-tx` (see #8164 for discussion). I've thrown in
the 64-bit variant as a bonus, as I'm sure it will be needed at some
point.

Also adds tests, and updates `developer-notes.md`.
2016-06-08 10:28:51 +02:00
Pavel Janík c2715d3ab8 Do not shadow local variables 2016-06-07 21:22:48 +02:00
Jonas Schnelli 86efa30ae3
[Bitcoin-Tx] fix missing test fixtures, fix 32bit atoi issue 2016-06-07 21:07:47 +02:00
Wladimir J. van der Laan 79004d4ae6
Merge #7957: [RPC][Bitcoin-TX] Add support for sequence number
ae357d5 [Bitcoin-Tx] Add tests for sequence number support (Jonas Schnelli)
e59336f [bitcoin-tx] allow to set nSequence number over the in= command (Jonas Schnelli)
a946bb6 [RPC] createrawtransaction: add option to set the sequence number per input (Jonas Schnelli)
2016-06-07 18:25:13 +02:00
Jonas Schnelli ae357d5ab9
[Bitcoin-Tx] Add tests for sequence number support 2016-06-07 17:37:35 +02:00
Pieter Wuille 888483098e Use C++11 thread-safe static initializers 2016-06-07 16:29:03 +02:00
Pieter Wuille c31b24f745 Use 64-bit SipHash of netgroups in eviction 2016-06-07 16:20:40 +02:00
Pieter Wuille 9bf156bb9e Support SipHash with arbitrary byte writes 2016-06-07 16:20:40 +02:00
Patrick Strateman 053930ffc4 Avoid recalculating vchKeyedNetGroup in eviction logic.
Lazy calculate vchKeyedNetGroup in CNode::GetKeyedNetGroup.
2016-06-07 16:20:40 +02:00
Wladimir J. van der Laan 22e0b35676
Merge #8136: Log/report in 10% steps during VerifyDB
8b78486 Log/report in 10% steps during VerifyDB (Jonas Schnelli)
2016-06-07 15:25:41 +02:00
Wladimir J. van der Laan 9b6a48c2e9
Merge #8118: Reduce unnecessary hashing in signrawtransaction
bd0f413 Reduce unnecessary hashing in signrawtransaction (Jonas Nick)
2016-06-07 14:34:31 +02:00
Pieter Wuille 288d85ddf2 Get rid of CTxMempool::lookup() entirely 2016-06-07 13:44:56 +02:00
MarcoFalke fa7f4f577c [rpc] fundrawtransaction feeRate: Use BTC/kB
Also introduce UniValueType

UniValueType is a wrapper for UniValue::VType which allows setting
a typeAny flag. This flag indicates the type does not matter.

(Used by RPCTypeCheckObj)
2016-06-07 13:12:57 +02:00
Jonas Schnelli 8b78486d02
Log/report in 10% steps during VerifyDB 2016-06-07 11:04:01 +02:00
MarcoFalke fa51a1d2b7 [init] Make feefilter option debug option 2016-06-07 08:47:43 +02:00
Kaz Wesley d3d02d5145 drop vAddrToSend after sending big addr message
We send a newly-accepted peer a 1000-entry addr message, and then only use
vAddrToSend for small messages. Deallocate vAddrToSend after it's been used for
the big message to save about 40 kB per connected inbound peer.
2016-06-06 15:57:40 -07:00
MarcoFalke faf82e8fc8 [rpc] fundrawtransaction: Fix help text and interface 2016-06-06 19:40:35 +02:00
Luke Dashjr 12c708a4b3 getblocktemplate: Use version/force mutation to support pre-BIP9 clients 2016-06-06 17:10:23 +00:00
Luke Dashjr 98790608a4 getblocktemplate: Explicitly handle the distinction between GBT-affecting softforks vs not 2016-06-06 17:10:23 +00:00
Luke Dashjr d3df40e51a Implement BIP 9 GBT changes
- BIP9DeploymentInfo struct for static deployment info
- VersionBitsDeploymentInfo: Avoid C++11ism by commenting parameter names
- getblocktemplate: Make sure to set deployments in the version if it is LOCKED_IN
- In this commit, all rules are considered required for clients to support
2016-06-06 17:10:22 +00:00
Wladimir J. van der Laan 52c3f348be
Merge #8142: Improve CWallet API with new GetAccountPubkey function.
152ab23 Improve CWallet API  with new GetAccountPubkey function. (Patrick Strateman)
2016-06-06 16:28:41 +02:00
Patrick Strateman 152ab236ea Improve CWallet API with new GetAccountPubkey function.
Remove one more caller that is passing CWalletDB.
2016-06-06 07:02:05 -07:00
Wladimir J. van der Laan 6b781df74f
Merge #8007: Minor locking improvements
f0fdda0 IsInitialBlockDownload: usually avoid locking (Kaz Wesley)
2016-06-06 15:45:40 +02:00
Wladimir J. van der Laan 243ac0c75b
Merge #8137: Improve CWallet API with new AccountMove function.
9dfaa1c Improve CWallet API with new AccountMove function. (Patrick Strateman)
2016-06-06 14:59:10 +02:00
Wladimir J. van der Laan 2e494489c3 tor: Change auth order to only use HASHEDPASSWORD if -torpassword
Change authentication order to make it more clear (see #7700).

- If the `-torpassword` option is provided, force use of
  `HASHEDPASSWORD` auth.

- Give error message if `-torpassword` provided, but
  `HASHEDPASSWORD` auth is not available.

- Give error message if only `HASHEDPASSWORD` available, but
  `-torpassword` not given.
2016-06-06 10:38:54 +02:00
Wladimir J. van der Laan e6b141acf9
qt: translation strings update 2016-06-06 10:34:15 +02:00
Pieter Wuille c2a4724642 Optimization: use usec in expiration and reuse nNow 2016-06-06 02:02:24 +02:00
Pieter Wuille e9b4780b29 Optimization: don't check the mempool at all if no mempool req ever 2016-06-06 02:02:23 +02:00
Pieter Wuille dbfb426b96 Optimize the relay map to use shared_ptr's
* Switch mapRelay to use shared_ptr<CTransaction>
* Switch the relay code to copy mempool shared_ptr's, rather than copying
  the transaction itself.
* Change vRelayExpiration to store mapRelay iterators rather than hashes
  (smaller and faster).
2016-06-06 02:00:23 +02:00
Kaz Wesley f0fdda0181 IsInitialBlockDownload: usually avoid locking
Optimistically test the latch bool before taking the lock.
For all IsInitialBlockDownload calls after the first to return false,
this avoids the need to lock cs_main.
2016-06-04 22:18:59 -07:00
Pieter Wuille 8d39d7a2cf Switch CTransaction storage in mempool to std::shared_ptr 2016-06-05 00:31:43 +02:00
Pieter Wuille 1b9e6d3c1a Add support for unique_ptr and shared_ptr to memusage 2016-06-05 00:31:35 +02:00
Cory Fields 340012d9c9 build: add temporary fix for "bad magic number" error in out-of-tree builds
This was caused by an pyc files hanging around from previous
python2 invocations, when the matching .py missing from that path.

This should not be a problem with python3's tagged caches.
2016-06-03 14:48:21 -04:00
instagibbs e39dc698ad comment nit: miners don't vote 2016-06-03 10:07:14 -04:00
Wladimir J. van der Laan 8c1e49ba13
Merge #7967: [RPC] add feerate option to fundrawtransaction
04eaa90 Add more clear interface for CoinControl.h regarding individual feerate (Jonas Schnelli)
3b35e48 [RPC] add feerate option to fundrawtransaction (Jonas Schnelli)
2016-06-03 15:47:48 +02:00
Wladimir J. van der Laan c141c14c9f
Merge #7942: locking for Misbehave() and other cs_main locking fixes
719de56 lock cs_main for chainActive (Kaz Wesley)
efb54ba lock cs_main for State/Misbehaving (Kaz Wesley)
2016-06-03 15:29:28 +02:00
Pieter Wuille a82f03393a
Merge #7997: replace mapNextTx with slimmer setSpends
9805f4a mapNextTx: use pointer as key, simplify value (Kaz Wesley)
2016-06-03 01:26:50 +02:00
Pieter Wuille f972b04d63
Merge #7825: Prevent multiple calls to ExtractDestination
0bf6f30 Prevent multiple calls to ExtractDestination (Pedro Branco)
2016-06-03 00:45:22 +02:00
Kaz Wesley 9805f4af7e mapNextTx: use pointer as key, simplify value
Saves about 10% of application memory usage once the mempool warms up. Since the
mempool is DynamicUsage-regulated, this will translate to a larger mempool in
the same amount of space.

Map value type: eliminate the vin index; no users of the map need to know which
input of the transaction is spending the prevout.

Map key type: replace the COutPoint with a pointer to a COutPoint. A COutPoint
is 36 bytes, but each COutPoint is accessible from the same map entry's value.
A trivial DereferencingComparator functor allows indirect map keys, but the
resulting syntax is misleading: `map.find(&outpoint)`. Implement an indirectmap
that acts as a wrapper to a map that uses a DereferencingComparator, supporting
a syntax that accurately reflect the container's semantics: inserts and
iterators use pointers since they store pointers and need them to remain
constant and dereferenceable, but lookup functions take const references.
2016-06-02 12:31:51 -07:00
mrbandrews 12c5a16c4e Catch exceptions from non-canonical encoding and print only to log 2016-06-02 14:43:18 -04:00
Pieter Wuille ec45cc5e27
Merge #7992: Extend #7956 with one more test.
269a440 Add test for dbwrapper iterators with same-prefix keys. (Matt Corallo)
6030625 test: Add more thorough test for dbwrapper iterators (Wladimir J. van der Laan)
84c13e7 chain: Add assertion in case of missing records in index db (Wladimir J. van der Laan)
2016-06-02 19:14:34 +02:00
Pieter Wuille 595b22e5c0 Stop treating importaddress'ed scripts as change
Before this, if someone imported a scriptPubKey directly (in hex form) using
importaddress, outputs sending to it would be treated as change, as the
corresponding CTxDestination was not added to the address book.

Fix this by trying to detect scriptPubKeys that are in fact convertible to a
CTxDestination and add them anyway. Add a warning to the RPC help to warn
against importing raw non-standard scripts.
2016-06-02 15:53:04 +02:00
Patrick Strateman 9dfaa1cb70 Improve CWallet API with new AccountMove function. 2016-06-02 06:00:59 -07:00
Jonas Schnelli ee1533e262
Merge #8129: Fix RPC console auto completer
16698cb PR #7772 is not enough to fix the issue with QCompleter, use event filter instead of `connect` (UdjinM6)
2016-06-02 11:11:38 +02:00
Cory Fields fc4ad0c7fc build: more out-of-tree fixups
- clear the __pycache__ during 'make clean'
- Copy the qrc locale file to a temp location and remove it when finished
  (rcc expects everything to be in the same path)
2016-06-01 20:31:55 -04:00
Cory Fields 0cb0f2626e build: out-of-tree fixups
Don't glob the leveldb for dist. That means we need to enumerate the headers.
2016-06-01 20:31:55 -04:00
Pieter Wuille 715e9fd745
Merge #8077: Consensus: Decouple from chainparams.o and timedata.o
ee9f4a5 Consensus: Decouple from chainparams.o and timedata.o (Jorge Timón)
2016-06-01 20:52:27 +02:00
Jonas Schnelli c022e5b15d
[Wallet] use constant for bip32 hardened key limit 2016-06-01 20:29:39 +02:00
Pieter Wuille a886dbf8e7 Use std::atomic for fRequestShutdown and fReopenDebugLog 2016-06-01 19:18:25 +02:00
Pieter Wuille 16cf85fa2c Revert "Include signal.h for sig_atomic_t in WIN32"
This reverts commit 88f14b999c.
2016-06-01 19:18:06 +02:00
Pieter Wuille 7fa8d75859
Merge #8112: Include signal.h for sig_atomic_t in WIN32
88f14b9 Include signal.h for sig_atomic_t in WIN32 (Pieter Wuille)
2016-06-01 18:47:45 +02:00
Pieter Wuille 6a22373771
Merge #7960: Only use AddInventoryKnown for transactions
383fc10 Only use AddInventoryKnown for transactions (Suhas Daftuar)
2016-06-01 18:36:11 +02:00
Alex Morcos c2dd5a3c39 FIX: correctly measure size of priority block 2016-06-01 12:29:03 -04:00
Pieter Wuille b89ef13114
Merge #7689: Replace OpenSSL AES with ctaes-based version
723779c build: Enumerate ctaes rather than globbing (Cory Fields)
34ed64a crypter: add tests for crypter (Cory Fields)
0a36b9a crypter: shuffle Makefile so that crypto can be used by the wallet (Cory Fields)
976f9ec crypter: add a BytesToKey clone to replace the use of openssl (Cory Fields)
9049cde crypter: hook up the new aes cbc classes (Cory Fields)
fb96831 crypter: constify encrypt/decrypt (Cory Fields)
1c391a5 crypter: fix the stored initialization vector size (Cory Fields)
daa3841 crypto: add aes cbc tests (Cory Fields)
27a212d crypto: add AES 128/256 CBC classes (Cory Fields)
6bec172 Add ctaes-based constant time AES implementation (Pieter Wuille)
a545127 Squashed 'src/crypto/ctaes/' content from commit cd3c3ac (Pieter Wuille)
2016-06-01 18:22:34 +02:00
Gregory Maxwell 4d8993b346 Defer inserting into maprelay until just before relaying.
This reduces the rate of not founds by better matching the far
 end expectations, it also improves privacy by removing the
 ability to use getdata to probe for a node having a txn before
 it has been relayed.
2016-05-31 15:35:45 +00:00
Wladimir J. van der Laan 862fd24b40
Merge #8080: Do not use mempool for GETDATA for tx accepted after the last mempool req.
7e908c7 Do not use mempool for GETDATA for tx accepted after the last mempool req. (Gregory Maxwell)
2016-05-31 15:47:32 +02:00
Wladimir J. van der Laan a2df115249
Merge #8090: Adding P2SH(p2pkh) script test case
b682960 Adding P2SH(p2pkh) script test case (Chris Stewart)
2016-05-31 15:27:14 +02:00
Wladimir J. van der Laan 0026e0ef34
Merge #8115: Avoid integer division in the benchmark inner-most loop.
63ff57d Avoid integer division in the benchmark inner-most loop. (Gregory Maxwell)
2016-05-31 15:10:03 +02:00
Jonas Schnelli f19025106d
[Wallet] Add simplest BIP32/deterministic key generation implementation 2016-05-31 14:47:00 +02:00
UdjinM6 16698cb77e PR #7772 is not enough to fix the issue with QCompleter, use event filter instead of `connect` 2016-05-31 06:33:34 +03:00
Gregory Maxwell 63ff57db4b Avoid integer division in the benchmark inner-most loop.
Previously the benchmark code used an integer division (%) with
 a non-constant in the inner-loop.  This is quite slow on many
 processors, especially ones like ARM that lack a hardware divide.

Even on fairly recent x86_64 like haswell an integer division can
 take something like 100 cycles-- making it comparable to the
 runtime of siphash.

This change avoids the division by using bitmasking instead. This
 was especially easy since the count was only increased by doubling.

This change also restarts the timing when the execution time was
 very low this avoids mintimes of zero in cases where one execution
 ends up below the timer resolution. It also reduces the impact of
 the overhead on the final result.

The formatting of the prints is changed to not use scientific
 notation make it more machine readable (in particular, gnuplot
 croaks on the non-fixedpoint, and it doesn't sort correctly).

This also hoists out all the floating point divisions out of the
 semi-hot path because it was easy to do so.

It might be prudent to break out the critical test into a macro
 just to guarantee that it gets inlined.  It might also make sense
 to just save out the intermediate counts and times and get the
 floating point completely out of the timing loop (because e.g.
 on hardware without a fast hardware FPU like some ARM it will
 still be slow enough to distort the results). I haven't done
 either of these in this commit.
2016-05-30 22:07:56 +00:00
Pieter Wuille 950be19727
Merge #7891: Always require OS randomness when generating secret keys
628cf14 Don't use assert for catching randomness failures (Pieter Wuille)
fa2637a Always require OS randomness when generating secret keys (Pieter Wuille)
2016-05-30 15:59:52 +02:00
Chris Stewart b682960a28 Adding P2SH(p2pkh) script test case
Fixing formatting

Adding test case into automatically generated test case set

Clean up commits

removing extra whitespace from eol

Removing extra whitespace on macro line
2016-05-30 08:51:37 -05:00
Wladimir J. van der Laan 52b803e09b
Merge #8107: bench: Added base58 encoding/decoding benchmarks
5fac1f3 bench: Added base58 encoding/decoding benchmarks (Yuri Zhykin)
2016-05-30 13:05:57 +02:00
Wladimir J. van der Laan 989df7ecf3
Merge #7896: fix typo in help text
fc95f6e fix typo in help text (Chris Moore)
2016-05-30 12:39:56 +02:00
Wladimir J. van der Laan 61b86848b1
Merge #8111: Benchmark SipHash
619d569 Benchmark SipHash (Pieter Wuille)
2016-05-30 12:39:23 +02:00
Jonas Nick bd0f413877 Reduce unnecessary hashing in signrawtransaction 2016-05-30 11:43:53 +02:00
Pieter Wuille 628cf1440a Don't use assert for catching randomness failures 2016-05-29 01:52:25 +02:00
Pieter Wuille fa2637a3be Always require OS randomness when generating secret keys 2016-05-29 01:52:17 +02:00
Pieter Wuille 619d5691c2 Benchmark SipHash 2016-05-28 20:04:32 +02:00
Cory Fields 723779c650 build: Enumerate ctaes rather than globbing 2016-05-27 14:14:44 -04:00
Pieter Wuille 88f14b999c Include signal.h for sig_atomic_t in WIN32 2016-05-27 13:31:04 +02:00
MarcoFalke a80de15113
Merge #8108: Trivial: Remove unused local variable shadowing upper local
13c4558 Remove unused local variable shadowing upper local (Pavel Janík)
2016-05-27 08:49:00 +02:00
Pavel Janík 13c455823f Remove unused local variable shadowing upper local 2016-05-27 07:46:36 +02:00
Yuri Zhykin 5fac1f33fb bench: Added base58 encoding/decoding benchmarks 2016-05-27 05:32:58 +03:00
Pieter Wuille 52b02ecd6d Use global ::fRelayTxes instead of CNode one 2016-05-26 20:04:43 +02:00
Pieter Wuille c028c7b755
Merge #8049: Expose information on whether transaction relay is enabled in `getnetwork`
1ab1dc3 rpc: Add `relaytxes` flag to `getnetworkinfo` (Wladimir J. van der Laan)
581ddff net: Add fRelayTxes flag (Wladimir J. van der Laan)
2016-05-26 15:02:16 +02:00
Gregory Maxwell 6182d10503 Do not increment nAttempts by more than one for every Good connection.
This slows the increase of the nAttempts in addrman while partitioned,
 even if the node hasn't yet noticed the partitioning.
2016-05-26 12:56:32 +00:00
Gregory Maxwell c769c4af11 Avoid counting failed connect attempts when probably offline.
If a node is offline failed outbound connection attempts will crank up
 the addrman counter and effectively blow away our state.

This change reduces the problem by only counting attempts made while
 the node believes it has outbound connections to at least two
 netgroups.

Connect and addnode connections are also not counted, as there is no
 reason to unequally penalize them for their more frequent
 connections -- though there should be no real effect from this
 unless their addnode configureation is later removed.

Wasteful repeated connection attempts while only a few connections are
 up are avoided via nLastTry.

This is still somewhat incomplete protection because our outbound
 peers could be down but not timed out or might all be on 'local'
 networks (although the requirement for multiple netgroups helps).
2016-05-26 12:56:27 +00:00
Wladimir J. van der Laan 6fc6325f77
Merge #8015: CCoinsViewErrorCatcher raison-d-etre
a4d5855 CCoinsViewErrorCatcher raison-d-etre (21E14)
2016-05-26 07:32:50 +02:00
Wladimir J. van der Laan eb2f6f72db
Merge #8073: qt: askpassphrasedialog: Clear pass fields on accept
02ce2a3 qt: askpassphrasedialog: Clear pass fields on accept (Pavel Vasin)
2016-05-26 07:22:48 +02:00
Gregory Maxwell 7e908c7b82 Do not use mempool for GETDATA for tx accepted after the last mempool req.
The ability to GETDATA a transaction which has not (yet) been relayed
 is a privacy loss vector.

The use of the mempool for this was added as part of the mempool p2p
 message and is only needed to fetch transactions returned by it.
2016-05-25 18:05:58 +00:00
Pieter Wuille 47a7cfb0aa
Merge #7795: UpdateTip: log only one line at most per block
f20d42e UpdateTip: log only one line at most per block (Wladimir J. van der Laan)
2016-05-25 18:18:56 +02:00
Pieter Wuille f6b7df3155
Merge #8061: [Wallet] Improve Wallet encapsulation
380498a Move BackupWallet to CWallet::BackupWallet (Patrick Strateman)
ecb9741 Move GetAccountBalance from rpcwallet.cpp into CWallet::GetAccountBalance (Patrick Strateman)
2016-05-25 18:08:06 +02:00
Pieter Wuille d72098038f
Merge #8076: VerifyDB: don't check blocks that have been pruned
bd477f4 VerifyDB: don't check blocks that have been pruned (Suhas Daftuar)
2016-05-25 16:28:22 +02:00
Pieter Wuille c49c825bd9
Merge #8063: Acquire lock to check for genesis block.
46b0c3b Acquire lock to check for genesis block. (Patrick Strateman)
2016-05-25 16:12:20 +02:00
Jonas Schnelli 2d83013dc5
Add support for dnsseeds with option to filter by servicebits 2016-05-25 14:57:24 +02:00
Alex Morcos a278764748 FIX: Account for txs already added to block in addPriorityTxs 2016-05-24 15:01:14 -04:00
Jonas Schnelli 77b49acc85
Merge #8014: Qt: Sort transactions by date
2d5603c Qt: Sort transactions by date (Tyler Hardin)
2016-05-23 21:50:38 +02:00
Jonas Schnelli 692971193a
Merge #8042: [Qt] Don't allow to open the debug window during splashscreen & verification state
276ce84 [Qt] Disable some menu items during splashscreen/verification state (Jonas Schnelli)
2016-05-23 21:49:46 +02:00
Suhas Daftuar bd477f4e8b VerifyDB: don't check blocks that have been pruned 2016-05-22 09:15:21 -04:00
Peter Todd beceac9bbf
Disable the mempool P2P command when bloom filters disabled
Only useful to SPV peers, and attackers... like bloom is a DoS vector as far
more data is sent than received.
2016-05-20 16:40:37 +02:00
Jorge Timón ee9f4a5b15 Consensus: Decouple from chainparams.o and timedata.o
Do it for the consensus-critical functions:

- CheckBlockHeader
- CheckBlock
- ContextualCheckBlockHeader
2016-05-20 14:53:03 +02:00
Pavel Vasin 02ce2a3ca7 qt: askpassphrasedialog: Clear pass fields on accept
This is usability improvement in a case if user gets re-asked
passphrase. (e.g. made a typo)
2016-05-19 14:52:08 +03:00
Wladimir J. van der Laan 7771aa57bd
Merge #8070: Remove non-determinism which is breaking net_tests #8069
2a8b358 Fix typo adddrman to addrman as requested in #8070 (Ethan Heilman)
f4119c6 Remove non-determinism which is breaking net_tests #8069 (EthanHeilman)
2016-05-19 09:56:05 +02:00
Wladimir J. van der Laan 18436d8896
Merge #8033: Fix Socks5() connect failures to be less noisy and less unnecessarily scary
bf9266e Use Socks5ErrorString() to decode error responses from socks proxy. (Warren Togami)
94fd1d8 Make Socks5() InterruptibleRecv() timeout/failures informative. (Warren Togami)
0d9af79 SOCKS5 connecting and connected messages with -debug=net. (Warren Togami)
00678bd Make failures to connect via Socks5() more informative and less unnecessarily scary. (Warren Togami)
2016-05-19 08:45:58 +02:00
Warren Togami bf9266e017 Use Socks5ErrorString() to decode error responses from socks proxy. 2016-05-19 14:21:22 +09:00
Ethan Heilman 2a8b3589b5 Fix typo adddrman to addrman as requested in #8070 2016-05-18 20:14:26 -04:00
Alex Morcos 4dc94d1036 Refactor CreateNewBlock to be a method of the BlockAssembler class 2016-05-18 14:11:12 -04:00
EthanHeilman f4119c6c98 Remove non-determinism which is breaking net_tests #8069 2016-05-18 12:26:41 -04:00
Wladimir J. van der Laan 239d419864
Merge #7917: Optimize reindex
b4d24e1 Report reindexing progress in GUI (Pieter Wuille)
d3d7547 Add -reindex-chainstate that does not rebuild block index (Pieter Wuille)
fb8fad1 Optimize ActivateBestChain for long chains (Pieter Wuille)
316623f Switch reindexing to AcceptBlock in-loop and ActivateBestChain afterwards (Pieter Wuille)
d253ec4 Make ProcessNewBlock dbp const and update comment (Pieter Wuille)
2016-05-18 12:31:32 +02:00
Wladimir J. van der Laan 8e8bebc040
Merge #8054: net: Avoid duplicate getheaders requests.
f93c2a1 net: Avoid duplicate getheaders requests. (Daniel Kraft)
2016-05-18 12:28:19 +02:00
Wladimir J. van der Laan 83121cca75
Merge #7906: net: prerequisites for p2p encapsulation changes
5d5e7a0 net: No need to export ConnectNode (Cory Fields)
e9ed620 net: No need to export DumpBanlist (Cory Fields)
8b8f877 net: make Ban/Unban/ClearBan functionality consistent (Cory Fields)
cca221f net: Drop CNodeRef for AttemptToEvictConnection (Cory Fields)
563f375 net: use the exposed GetNodeSignals() rather than g_signals directly (Cory Fields)
9faa490 net: remove unused set (Cory Fields)
52cbce2 net: don't import std namespace (Cory Fields)
2016-05-18 12:13:05 +02:00
Wladimir J. van der Laan ed749bdb64
Merge #7932: CAddrMan::Deserialize handle corrupt serializations better.
fb26bf0 CAddrMan::Deserialize handle corrupt serializations better. (Patrick Strateman)
2016-05-18 11:53:48 +02:00
Wladimir J. van der Laan 5e374f7306
Merge #8020: Use SipHash-2-4 for various non-cryptographic hashes
a68ec21 Use SipHash-2-4 for address relay selection (Pieter Wuille)
8cc9cfe Switch CTxMempool::mapTx to use a hash index for txids (Pieter Wuille)
382c871 Use SipHash-2-4 for CCoinsCache index (Pieter Wuille)
0b1295b Add SipHash-2-4 primitives to hash (Pieter Wuille)
2016-05-18 11:01:42 +02:00
Matt Corallo 269a4402a8 Add test for dbwrapper iterators with same-prefix keys. 2016-05-17 19:44:58 -07:00
Pieter Wuille a68ec21f7e Use SipHash-2-4 for address relay selection 2016-05-17 20:04:46 +02:00
Pieter Wuille 8cc9cfe160 Switch CTxMempool::mapTx to use a hash index for txids 2016-05-17 20:04:46 +02:00
Pieter Wuille 382c871d28 Use SipHash-2-4 for CCoinsCache index
This is ~1.7x slower than the Lookup3-of-Xor-with-salt construct we were
using before, but it is a primitive designed for exactly this.
2016-05-17 20:04:46 +02:00
Pieter Wuille 0b1295b066 Add SipHash-2-4 primitives to hash 2016-05-17 20:04:42 +02:00
Suhas Daftuar 8f7b5dc4af Add getmempoolancestors RPC call 2016-05-17 13:12:11 -04:00
Suhas Daftuar 5ec0cde371 Refactor logic for converting mempool entries to JSON 2016-05-17 08:06:37 -04:00
Pieter Wuille 5c3f8ddcaa
Merge #7696: Fix de-serialization bug where AddrMan is left corrupted
1475ecf Fix de-serialization bug where AddrMan is corrupted after exception * CAddrDB modified so that when de-serialization code throws an exception Addrman is reset to a clean state * CAddrDB modified to make unit tests possible * Regression test created to ensure bug is fixed * StartNode modifed to clear adrman if CAddrDB::Read returns an error code. (EthanHeilman)
2016-05-17 10:53:00 +02:00
Warren Togami 94fd1d8d53 Make Socks5() InterruptibleRecv() timeout/failures informative.
Before:
2016-05-16 06:10:45 ERROR: Error reading proxy response

After:
2016-05-16 06:10:45 Socks5() connect to k7s5d6jqig4ej4v4.onion:18333 failed: InterruptibleRecv() timeout or other failure
2016-05-17 16:43:23 +09:00
MarcoFalke e2bf830bb6
Merge #8038: [qa, doc] Various minor fixes
fa83a5d [qa] wallet: Temporarily disable salvagewallet test (MarcoFalke)
fadd048 [doc] Link to clang-format in the developer notes (MarcoFalke)
fa72f7d [doc] Remove outdated line from listunspent RPC help, fix typo (MarcoFalke)
ac40ed7 Increase timeout waiting for pruned blk00000.dat (error10)
2016-05-17 09:27:25 +02:00
Patrick Strateman 46b0c3b688 Acquire lock to check for genesis block. 2016-05-16 20:33:32 -07:00
Patrick Strateman 380498aba4 Move BackupWallet to CWallet::BackupWallet 2016-05-16 17:48:25 -07:00
Patrick Strateman ecb9741ec3 Move GetAccountBalance from rpcwallet.cpp into CWallet::GetAccountBalance 2016-05-16 17:48:25 -07:00
Pieter Wuille 1f01443567
Merge #7994: Add op csv tests to script_tests.json
10e83d7 Adding basic tests for OP_CSV inside of script_tests.json (Chris Stewart)
2016-05-17 01:32:35 +02:00
Pieter Wuille b4d24e142e Report reindexing progress in GUI 2016-05-17 00:45:58 +02:00
Pieter Wuille d3d7547911 Add -reindex-chainstate that does not rebuild block index 2016-05-17 00:45:57 +02:00
Pieter Wuille fb8fad1586 Optimize ActivateBestChain for long chains 2016-05-17 00:45:57 +02:00
Pieter Wuille 316623f2c1 Switch reindexing to AcceptBlock in-loop and ActivateBestChain afterwards 2016-05-17 00:45:49 +02:00
Pieter Wuille d253ec4baa Make ProcessNewBlock dbp const and update comment 2016-05-17 00:40:55 +02:00
Gregory Maxwell d87b198b73 Remove unneeded feerate param from RelayTransaction/AcceptToMemoryPool. 2016-05-16 04:10:06 +00:00
Daniel Kraft f93c2a1b7e net: Avoid duplicate getheaders requests.
The current logic for syncing headers may lead to lots of duplicate
getheaders requests being sent:  If a new block arrives while the node
is in headers sync, it will send getheaders in response to the block
announcement.  When the headers arrive, the message will be of maximum
size and so a follow-up request will be sent---all of that in addition
to the existing headers syncing.  This will create a second "chain" of
getheaders requests.  If more blocks arrive, this may even lead to
arbitrarily many parallel chains of redundant requests.

This patch changes the behaviour to only request more headers after a
maximum-sized message when it contained at least one unknown header.
This avoids sustaining parallel chains of redundant requests.

Note that this patch avoids the issues raised in the discussion of
https://github.com/bitcoin/bitcoin/pull/6821:  There is no risk of the
node being permanently blocked.  At the latest when a new block arrives
this will trigger a new getheaders request and restart syncing.
2016-05-15 20:15:02 +02:00
Cory Fields 34ed64a404 crypter: add tests for crypter
Verify that results correct (match known values), consistent (encrypt->decrypt
matches the original), and compatible with the previous openssl implementation.

Also check that failed encrypts/decrypts fail the exact same way as openssl.
2016-05-13 10:23:04 +02:00
Cory Fields 0a36b9af28 crypter: shuffle Makefile so that crypto can be used by the wallet
Wallet must come before crypto, otherwise linking fails on some platforms.

Includes a tangentially-related general cleanup rather than making the Makefile
sloppier.
2016-05-13 10:23:04 +02:00
Cory Fields 976f9ec264 crypter: add a BytesToKey clone to replace the use of openssl
BytesToKeySHA512AES should be functionally identical to EVP_BytesToKey, but
drops the dependency on openssl.
2016-05-13 10:23:04 +02:00
Cory Fields 9049cde4d9 crypter: hook up the new aes cbc classes 2016-05-13 10:23:04 +02:00
Cory Fields fb96831c1f crypter: constify encrypt/decrypt
This makes CCrypter easier to pass aroundf for tests
2016-05-13 10:23:04 +02:00
Cory Fields 1c391a5866 crypter: fix the stored initialization vector size
AES IV's are 16bytes, not 32. This was harmless but confusing.

Add WALLET_CRYPTO_IV_SIZE to make its usage explicit.
2016-05-13 10:23:03 +02:00
Cory Fields daa384120a crypto: add aes cbc tests 2016-05-13 10:23:03 +02:00
Cory Fields 27a212dcb4 crypto: add AES 128/256 CBC classes
The output should always match openssl's, even for failed operations. Even for
a decrypt with broken padding, the output is always deterministic (and attemtps
to be constant-time).
2016-05-13 10:23:03 +02:00
Pieter Wuille 6bec172eb9 Add ctaes-based constant time AES implementation 2016-05-13 10:22:54 +02:00
Wladimir J. van der Laan 1ab1dc3140 rpc: Add `relaytxes` flag to `getnetworkinfo`
Re-work of PR #7841 by dragongem45.
Closes #7771.
2016-05-12 14:26:49 +02:00
Wladimir J. van der Laan 581ddff05c net: Add fRelayTxes flag
Add a fRelayTxes to keep track of the relay transaction flag
we send to other peers.
2016-05-12 14:12:46 +02:00
Jonas Schnelli 169d379c98
Merge #8046: [Qt][OSX] Fix Cmd-Q / Menu Quit shutdown on OSX
34ebceb [Qt][OSX] Fix Cmd-Q / Menu Quit shutdown on OSX (Jonas Schnelli)
2016-05-12 13:15:39 +02:00
Wladimir J. van der Laan 7c8558da36
Merge #8006: Qt: Add option to disable the system tray icon
8b0e497 Qt: Add option to hide the system tray icon (Tyler Hardin)
2016-05-12 11:56:21 +02:00
Wladimir J. van der Laan 2efe38b832
Merge #8004: signal handling: fReopenDebugLog and fRequestShutdown should be type sig_atomic_t
3262316 fReopenDebugLog and fRequestShutdown should be type sig_atomic_t (Chirag Davé)
2016-05-12 11:46:10 +02:00
Jonas Schnelli 34ebceb25a
[Qt][OSX] Fix Cmd-Q / Menu Quit shutdown on OSX 2016-05-12 11:42:31 +02:00
Jonas Schnelli 276ce84fd3
[Qt] Disable some menu items during splashscreen/verification state 2016-05-12 10:45:03 +02:00
Tyler Hardin 8b0e497028 Qt: Add option to hide the system tray icon
My changes leave all tray icon and menu creation/initialization logic
untouched. It only shows or hides the icon according to the setting.

A new checkbox was added to the OptionsDialog under the Window tab. A
bool option named "hideTrayIcon" was added to OptionsModel. This
checkbox was mapped like other all options to the OptionsModel.

A signal was added to the OptionsModel for broadcasting changes the the
hideTrayIcon option. This signal was connected to a new slot added to
BitcoinGUI named setTrayIconVisible(bool). The slot simply hides or
shows the trayIcon in BitcoinGUI according to the parameter recieved.
2016-05-11 22:28:02 -04:00
Wladimir J. van der Laan 32114dd634 bench: Add crypto hash benchmarks
Add benchmarks for the cryptographic hash algorithms:

- RIPEMD160
- SHA1
- SHA256
- SHA512

Continues work on #7883.
2016-05-11 19:47:25 +02:00
Pieter Wuille cd2be4419e
Merge commit 'a545127fbccef4ee674d18d43732ce00ba97f782' as 'src/crypto/ctaes' 2016-05-11 19:37:02 +02:00
Chris Stewart 10e83d7956 Adding basic tests for OP_CSV inside of script_tests.json
Changing NOP3 op name to OP_CHECKSEQUENCEVERIFY, renaming instances of OP_NOP3 in script_tests.json to CHECKSEQUENCEVERIFY

Cleaning up NOP3 comment

Re-adding test cases that were accidentally deleted, removing dupicated test case, fixing formatting

Removing re-labeling of OP_NOP3 to OP_CSV

Fixing whitespace issues
2016-05-11 08:00:48 -05:00
Cory Fields 5d5e7a097a net: No need to export ConnectNode 2016-05-10 12:28:23 -04:00
Cory Fields e9ed6206b3 net: No need to export DumpBanlist 2016-05-10 12:28:22 -04:00
Cory Fields 8b8f87714d net: make Ban/Unban/ClearBan functionality consistent
- Ban/Unban/ClearBan call uiInterface.BannedListChanged() as necessary
- Ban/Unban/ClearBan sync to disk if the operation is user-invoked
- Mark node for disconnection automatically when banning
- Lock cs_vNodes while setting disconnected
- Don't spin in a tight loop while setting disconnected
2016-05-10 12:28:22 -04:00
MarcoFalke fa72f7d99d [doc] Remove outdated line from listunspent RPC help, fix typo 2016-05-10 17:59:02 +02:00
Wladimir J. van der Laan 373b50deba
Merge #8028: Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDisk
0fd5997 Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDisk (Patrick Strateman)
2016-05-10 15:51:34 +02:00
Wladimir J. van der Laan 3e2c946cfd init: Move berkeleydb version reporting to wallet
Move the version reporting to Wallet::Verify, before starting
verification of the wallet.

This removes the dependency of init on a specific wallet database
library.

A further, trivial step towards resolving #7965.
2016-05-10 12:57:07 +02:00
Wladimir J. van der Laan f7a21dae5d
Merge #8019: Remove state arg from ReconsiderBlock, rename to ResetBlockFailureFlags
657e07e Rename ReconsiderBlock func to reflect real behavior (instagibbs)
addb9d2 Remove state arg from ReconsiderBlock (instagibbs)
2016-05-10 12:43:22 +02:00
Wladimir J. van der Laan 5767e80dda
Merge #8016: Fix multithread CScheduler and reenable test
166e4b0 Notify other serviceQueue thread we are finished to prevent deadlocks. (Pavel Janík)
db18ab2 Reenable multithread scheduler test. (Pavel Janík)
2016-05-10 12:08:08 +02:00
Jonas Schnelli b33824b76c
Merge #8012: Qt: Delay user confirmation of send
3902a29 Qt: Delay user confirmation of send (Tyler Hardin)
2016-05-10 10:33:21 +02:00
Tyler Hardin 2d5603c7e8 Qt: Sort transactions by date
Conflicted transactions can get stuck at the top. This fixes that.
2016-05-09 22:46:33 -04:00
Tyler Hardin 3902a291ab Qt: Delay user confirmation of send
I made a subclass of QMessageBox that disables the send button in
exec() and starts a timer that calls a slot to re-enable it after a
configurable delay.

It also has a countdown in the send/yes button while it is disabled
to hint to the user why the send button is disabled (and that it is
actually supposed to be disabled).
2016-05-09 22:26:57 -04:00
Warren Togami 0d9af79e50 SOCKS5 connecting and connected messages with -debug=net.
They were too noisy and not necessary for normal operation.
2016-05-09 18:13:55 -07:00
Warren Togami 00678bdb0a Make failures to connect via Socks5() more informative and less unnecessarily scary.
* The "ERROR" was printed far too often during normal operation for what was not an error.
* Makes the Socks5() connect failure similar to the IP connect failure in debug.log.

Before:
`2016-05-09 00:15:00 ERROR: Proxy error: host unreachable`

After:
`2016-05-09 00:15:00 Socks5() connect to t6xj6wilh4ytvcs7.onion:18333 failed: host unreachable"`
2016-05-09 18:13:55 -07:00
instagibbs 657e07efa3 Rename ReconsiderBlock func to reflect real behavior 2016-05-09 11:26:37 -04:00
Chirag Davé 326231611b fReopenDebugLog and fRequestShutdown should be type sig_atomic_t
This allows access as an atomic variable in the presence
of async interrupts.

See issue #7433 for more details
fixes: #7433
2016-05-09 08:20:58 -07:00
Wladimir J. van der Laan a68f56e727
Merge #7958: Remove useless argument to AlertNotify.
b02119e Remove useless argument to AlertNotify. (Pavel Janík)
2016-05-09 13:34:00 +02:00
Wladimir J. van der Laan e29cfc48fc
Merge #7976: Remove obsolete reference to CValidationState from UpdateCoins.
c8b9248 Remove obsolete reference to CValidationState from UpdateCoins. (21E14)
2016-05-09 11:59:03 +02:00
Patrick Strateman 0fd599767d Fix insanity of CWalletDB::WriteTx and CWalletTx::WriteToDisk 2016-05-09 00:20:17 -07:00
Wladimir J. van der Laan f17032f703
Merge #7934: Improve rolling bloom filter performance and benchmark
1953c40 More efficient bitsliced rolling Bloom filter (Pieter Wuille)
aa62b68 Benchmark rolling bloom filter (Pieter Wuille)
2016-05-09 08:52:31 +02:00
Pavel Janík 166e4b0dfa Notify other serviceQueue thread we are finished to prevent deadlocks. 2016-05-06 20:44:40 +02:00
Pavel Janík db18ab28c7 Reenable multithread scheduler test. 2016-05-06 20:44:39 +02:00
instagibbs addb9d2a09 Remove state arg from ReconsiderBlock 2016-05-06 12:53:23 -04:00
Pedro Branco 0bf6f30262 Prevent multiple calls to ExtractDestination 2016-05-06 10:50:02 +01:00
Jonas Schnelli 04eaa90958
Add more clear interface for CoinControl.h regarding individual feerate 2016-05-06 11:01:50 +02:00
Wladimir J. van der Laan 65aecda52d
Merge #8011: don't run ThreadMessageHandler at lowered priority
e53e7c5 don't run ThreadMessageHandler at lowered priority (Kaz Wesley)
2016-05-06 10:04:09 +02:00
Wladimir J. van der Laan efee32f381
Merge #7815: Break circular dependency main ↔ txdb
99e7075 Break circular dependency main ↔ txdb (Wladimir J. van der Laan)
2016-05-06 10:03:09 +02:00
21E14 a4d5855a25 CCoinsViewErrorCatcher raison-d-etre 2016-05-06 00:10:49 -04:00
Kaz Wesley e53e7c5473 don't run ThreadMessageHandler at lowered priority
There's no clear reason ThreadMessageHandler should be low priority.
Fixes #8010 (priority inversion).
2016-05-05 13:25:35 -07:00
Cory Fields cca221fd21 net: Drop CNodeRef for AttemptToEvictConnection
Locking for each operation here is unnecessary, and solves the wrong problem.
Additionally, it introduces a problem when cs_vNodes is held in an owning
class, to which invididual CNodeRefs won't have access.

These should be weak pointers anyway, once vNodes contain shared pointers.

Rather than using a refcounting class, use a 3-step process instead.

1. Lock vNodes long enough to snapshot the fields necessary for comparing
2. Unlock and do the comparison
3. Re-lock and mark the resulting node for disconnection if it still exists
2016-05-05 13:22:25 -04:00
Cory Fields 563f375cde net: use the exposed GetNodeSignals() rather than g_signals directly 2016-05-05 13:22:25 -04:00
Cory Fields 9faa4902cd net: remove unused set 2016-05-05 13:22:24 -04:00
Cory Fields 52cbce287a net: don't import std namespace
This file is about to be broken up into chunks and moved around. Drop the
namespace now rather than requiring other files to use it.
2016-05-05 13:22:24 -04:00
Wladimir J. van der Laan 006cdf64dc
Merge #7907: Optimize and Cleanup CScript::FindAndDelete
d1d7775 Improve worst-case behavior of CScript::FindAndDelete (Patrick Strateman)
e2a30bc Unit test for CScript::FindAndDelete (Gavin Andresen)
c0f660c Replace c-style cast with c++ style static_cast. (Patrick Strateman)
ec9ad5f Replace memcmp with std::equal in CScript::FindAndDelete (Patrick Strateman)
2016-05-05 19:01:32 +02:00
Wladimir J. van der Laan 3b9a0bf41f
Merge #7840: Several performance and privacy improvements to inv/mempool handling
b559914 Move bloom and feerate filtering to just prior to tx sending. (Gregory Maxwell)
4578215 Return mempool queries in dependency order (Pieter Wuille)
ed70683 Handle mempool requests in send loop, subject to trickle (Pieter Wuille)
dc13dcd Split up and optimize transaction and block inv queues (Pieter Wuille)
f2d3ba7 Eliminate TX trickle bypass, sort TX invs for privacy and priority. (Gregory Maxwell)
2016-05-05 13:14:40 +02:00
Wladimir J. van der Laan d51618e481
Merge #7966: http: Do a pending c++11 simplification handling work items
f0188f9 http: use std::move to move HTTPRequest into HTTPWorkItem (Wladimir J. van der Laan)
37b2137 http: Change boost::scoped_ptr to std::unique_ptr in HTTPRequest (Wladimir J. van der Laan)
f97b410 http: Add log message when work queue is full (Wladimir J. van der Laan)
091d6e0 http: Do a pending c++11 simplification (Wladimir J. van der Laan)
2016-05-05 12:57:31 +02:00
Wladimir J. van der Laan 0630353323
Merge #7953: Create signmessagewithprivkey rpc
7db0ecb Test for signing messages (Andrew Chow)
f90efbf Create signmessagewithprivkey rpc (Andrew)
2016-05-05 12:54:14 +02:00
Wladimir J. van der Laan e8d917591f
Merge #7977: [trivial] Add missing const qualifiers.
f7c4f79 [trivial] Add missing const qualifiers. (Daniel Kraft)
2016-05-05 12:52:34 +02:00
Wladimir J. van der Laan f0188f9178 http: use std::move to move HTTPRequest into HTTPWorkItem
Thanks to Cory Fields for the idea.
2016-05-05 08:27:12 +02:00
Wladimir J. van der Laan 37b21372a0 http: Change boost::scoped_ptr to std::unique_ptr in HTTPRequest
No need for boost here.
2016-05-05 08:27:12 +02:00
Wladimir J. van der Laan f97b410fdd http: Add log message when work queue is full
More useful error reporting.
2016-05-05 08:27:12 +02:00
Wladimir J. van der Laan 091d6e0499 http: Do a pending c++11 simplification
Use std::unique_ptr for handling work items.

This makes the code more RAII and, as mentioned in the comment, is what
I planned when I wrote the code in the first place.
2016-05-05 08:27:12 +02:00
Wladimir J. van der Laan 42a6753382
Merge #8000: tinyformat: force USE_VARIADIC_TEMPLATES
08d7b56 util: switch LogPrint and error to variadic templates (Wladimir J. van der Laan)
9eaa0af tinyformat: force USE_VARIADIC_TEMPLATES (Wladimir J. van der Laan)
2016-05-05 08:20:03 +02:00
EthanHeilman 1475ecf611 Fix de-serialization bug where AddrMan is corrupted after exception
* CAddrDB modified so that when de-serialization code throws an exception Addrman is reset to a clean state
* CAddrDB modified to make unit tests possible
* Regression test created to ensure bug is fixed
* StartNode modifed to clear adrman if CAddrDB::Read returns an error code.
2016-05-04 18:55:01 -04:00
Wladimir J. van der Laan 8206835cc1
Merge #7974: More comments on the design of AttemptToEvictConnection.
d90351f More comments on the design of AttemptToEvictConnection. (Gregory Maxwell)
2016-05-04 15:52:13 +02:00
Wladimir J. van der Laan 08d7b563e9 util: switch LogPrint and error to variadic templates 2016-05-04 14:21:04 +02:00
Wladimir J. van der Laan 9eaa0afa6e tinyformat: force USE_VARIADIC_TEMPLATES
Now that we started using c++11, force use of variadic templates.

The autodetection may be wonky on some compilers, see discussion
[here](https://github.com/bitcoin/bitcoin/pull/7982#issuecomment-216222357)
and is unnecessary for us anyhow.
2016-05-04 11:37:10 +02:00
Wladimir J. van der Laan 559fbae8c6
Merge #7982: build: No need to check for leveldb atomics
de98290 build: No need to check for leveldb atomics (Cory Fields)
2016-05-04 11:34:42 +02:00
Puru 9a8a7d0115 bitcoin-cli.cpp: Use symbolic constant for exit code 2016-05-02 22:33:04 +05:45
Wladimir J. van der Laan 03cf6e8675
Merge #7959: fix race that could fail to persist a ban
f4ac02e fix race that could fail to persist a ban (Kaz Wesley)
2016-05-02 14:48:50 +02:00
Wladimir J. van der Laan 86b800c6a2
Merge #7964: Minor changes for c++11 consistency
07e4edb auto_ptr → unique_ptr (Wladimir J. van der Laan)
073225c chain: define enum used as bit field as uint32_t (Wladimir J. van der Laan)
2016-05-02 13:08:02 +02:00
Cory Fields de98290155 build: No need to check for leveldb atomics
They're guaranteed with c++11
2016-04-30 17:46:35 -04:00
21E14 c8b92486c4 Remove obsolete reference to CValidationState from UpdateCoins. 2016-04-30 15:14:22 -04:00
Daniel Kraft f7c4f79f07 [trivial] Add missing const qualifiers.
Add some const qualifiers to references that are not modified and should
be marked as const.
2016-04-30 19:25:00 +02:00
Gregory Maxwell d90351f050 More comments on the design of AttemptToEvictConnection.
Some developers clearly don't get this and have been posting
 "improvements" that create clear vulnerabilities.  It should
 have been better explained in the code, since the design
 is somewhat subtle and getting it right is important.
2016-04-29 23:15:23 +00:00
MarcoFalke 0ad1041904
Merge #7807: Fixed miner test values, gave constants for less error-prone values.
f8536a6 Corrected values (instagibbs)
617deeb Gave miner test values constants for less error-prone values. (instagibbs)
2016-04-29 22:02:59 +02:00
Jonas Schnelli 3b35e4896b
[RPC] add feerate option to fundrawtransaction 2016-04-28 22:04:07 +02:00
Wladimir J. van der Laan 20f9ecd343
Merge #7962: CalculateNextWorkRequired Cleanup
c7aac2d Deprecating the remaining LogPrintf dependencies that were made obsolete in PR #7459. (21E14)
2016-04-28 15:33:28 +02:00
Pieter Wuille 1953c40aa9 More efficient bitsliced rolling Bloom filter
This patch changes the implementation from one that stores 16 2-bit integers
in one uint32_t's, to one that stores the first bit of 64 2-bit integers in
one uint64_t and the second bit in another. This allows for 450x faster
refreshing and 2.2x faster average speed.
2016-04-28 14:56:32 +02:00