Commit Graph

562 Commits

Author SHA1 Message Date
leijurv
e0e706c9cf various typos 2018-10-18 23:30:54 +03:00
Gregory Maxwell
35c0e679b7 Add recently accepted blocks and txn to AttemptToEvictConnection.
This protects any not-already-protected peers who were the most
 recent four to relay transactions and most recent four to send
 blocks to us.
2018-10-18 22:35:51 +03:00
Pieter Wuille
c043d2fedc Introduce enum ServiceFlags for service flags 2018-10-18 22:32:23 +03:00
Gregory Maxwell
89655c3a1e Remove unneeded feerate param from RelayTransaction/AcceptToMemoryPool. 2018-10-17 20:22:44 +03:00
Gregory Maxwell
05c3d2e290 Eliminate TX trickle bypass, sort TX invs for privacy and priority.
Previously Bitcoin would send 1/4 of transactions out to all peers
 instantly.  This causes high overhead because it makes >80% of
 INVs size 1.  Doing so harms privacy, because it limits the
 amount of source obscurity a transaction can receive.

These randomized broadcasts also disobeyed transaction dependencies
 and required use of the orphan pool.  Because the orphan pool is
 so small this leads to poor propagation for dependent transactions.

When the bypass wasn't in effect, transactions were sent in the
 order they were received.  This avoided creating orphans but
 undermines privacy fairly significantly.

This commit:
 Eliminates the bypass. The bypass is replaced by halving the
  average delay for outbound peers.

 Sorts candidate transactions for INV by their topological
  depth then by their feerate (then hash); removing the
  information leakage and providing priority service to
  higher fee transactions.

 Limits the amount of transactions sent in a single INV to
  7tx/sec (and twice that for outbound); this limits the
  harm of low fee transaction floods, gives faster relay
  service to higher fee transactions. The 7 sounds lower
  than it really is because received advertisements need
  not be sent, and because the aggregate rate is multipled
  by the number of peers.
2018-10-17 19:44:11 +03:00
lateminer
eb242178e1 Attempt to fix testnet 2018-10-17 00:40:44 +03:00
Pieter Wuille
00cb4673b2 Predeclare PrecomputedTransactionData as struct 2018-10-13 17:59:39 +03:00
Pieter Wuille
cd30f2becb Rename to PrecomputedTransactionData 2018-10-13 17:57:50 +03:00
Pieter Wuille
d8d19c532f Precompute sighashes 2018-10-13 17:39:41 +03:00
Pieter Wuille
81e04cabfe Refactor script validation to observe amounts 2018-10-13 17:05:24 +03:00
lateminer
c6238629b3 Remove drivechain support using OP_COUNT_ACKS 2018-10-13 16:30:31 +03:00
Alex Morcos
b821da64ef Implement "feefilter" P2P message. 2018-10-13 15:44:02 +03:00
Suhas Daftuar
75e463decf Improve handling of unconnecting headers 2018-10-13 14:05:45 +03:00
Luke Dashjr
116f49d390 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
2018-10-13 02:42:30 +03:00
lateminer
d452787a2c Completely remove coinage 2018-10-12 00:04:41 +03:00
lateminer
b1bb30cb3a Remove address indexes 2018-10-11 22:02:52 +03:00
lateminer
3a29ae6903 Some code refactoring and cleanup 2018-10-02 01:04:31 +03:00
BtcDrak
556187e3f8 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.
2018-09-30 18:14:12 +03:00
BtcDrak
8fb8ada384 Remove -alerts option 2018-09-30 18:06:51 +03:00
Pieter Wuille
722169b74d Make ProcessNewBlock dbp const and update comment 2018-01-13 12:38:06 +03:00
lateminer
3d26f43eb0 mempool: Replace maxFeeRate of 10000*minRelayTxFee with maxTxFee
fa331db68b
2018-01-13 01:30:21 +03:00
lateminer
72875a2116 Relay double-spends, subject to anti-DOS
cef3711500 (diff-7ec3c68a81efff79b6ca22ac1f1eabbaL929)
2018-01-10 21:52:38 +03:00
lateminer
b808896d4c [Wallet] refactor wallet/init interaction
25340b7cd5
2018-01-07 15:29:36 +03:00
janko33bd
92bc14233f Implementation of OP_COUNT_ACK 2018-01-05 22:06:35 +01:00
janko33bd@gmail.com
0730bc5745 Lieutenant Dan got me invested in some kind of fruit company.
So then I got a call from him, saying we don't have to worry about money
no more. And I said, that's good! One less thing.
2017-06-09 21:13:08 +02:00
janko33bd
2fdd12b2ea Blackcoin Lore 2017-05-30 21:33:31 +02:00
Braydon Fuller
de6f29ec43 Merge pull request #29 from danjurious/logicalts
logical timestamp indexing of block hashes
2016-08-18 12:27:37 -04:00
Chethan Krishna
c8458bf963 logical timestamp indexing of block hashes 2016-08-17 10:14:46 -04:00
Braydon Fuller
de05c9ecbb db: add options to configure block index database
There was a previous assumption that blockindex would be quite small. With addressindex
and spentindex enabled the blockindex is much larger and the amount of cache allocated for
it should also increase. Furthermore, enabling compression should decrease the amount of
disk space required and less data to write/read. The default leveldb max_open_files is set to
1000, for the blockindex the default is set to 1000 with compression. The 64 value that is
current is kept for the utxo database and does not enable compression. Two additional options
are added here to be able to configure the values for leveldb and the block index:

- `-dbmaxopenfiles` A number of files for leveldb to keep open
- `-dbcompression` Boolean 0 or 1 to enable snappy leveldb compression
2016-07-14 13:56:17 -04:00
Braydon Fuller
55fa4798eb main: spentindex for the mempool 2016-06-02 12:15:59 -04:00
Braydon Fuller
16d35eb228 main: add amount and address to spentindex value 2016-06-02 12:15:38 -04:00
Braydon Fuller
94ea69a4d5 rpc: fix issue with querying txids by block heights 2016-06-02 12:15:37 -04:00
Braydon Fuller
e3d9207e5a main: add spentindex option 2016-06-02 12:15:37 -04:00
Braydon Fuller
1bd65a5c4b main: sort address index utxos by height 2016-06-02 12:15:14 -04:00
Braydon Fuller
d0483c9aa0 main: remove spent address utxo indexes 2016-06-02 12:15:14 -04:00
Braydon Fuller
0b42ba227a main: index unspent outputs by address 2016-06-02 12:15:14 -04:00
Braydon Fuller
cad092aebb main: get address deltas between range of block heights 2016-06-02 12:15:14 -04:00
Braydon Fuller
206882cd4b main: fixed bug with overlapping address index keys
There was a bug where the spending address index could have the same key
as the receiving address index if the input and output indexes matched. This lead
to the output always overwriting the input index leading to incorrect balances
with missing spent amounts. This patch separates the two so that they have unique
keys so balances will be correctly calculated.
2016-06-02 12:15:14 -04:00
Braydon Fuller
935ca8f832 main: add block timestamp index 2016-06-02 12:15:13 -04:00
Braydon Fuller
7959a19085 main: serialize height in BE for address index key
fixes a sorting issue when iterating over keys
2016-06-02 12:15:13 -04:00
Braydon Fuller
18ea599a71 main: index address index sorted by height 2016-06-02 12:15:13 -04:00
Braydon Fuller
9babc7ff9f main: start of address index
Adds a configuration option for addressindex to search for txids by address. Includes
an additional rpc method for getting the txids for an address.
2016-06-02 12:15:13 -04:00
Wladimir J. van der Laan
4c3a00d35c Reduce block timeout to 10 minutes
Now that #7804 fixed the timeout handling, reduce the block timeout from
20 minutes to 10 minutes. 20 minutes is overkill.

Conflicts:
	src/main.h

Github-Pull: #7832
Rebased-From: 62b9a557fc
2016-04-07 13:53:48 +02:00
Pieter Wuille
90f1d246d3 Track block download times per individual block
Currently, we're keeping a timeout for each requested block, starting
from when it is requested, with a correction factor for the number of
blocks in the queue.

That's unnecessarily complicated and inaccurate.

As peers process block requests in order, we can make the timeout for each
block start counting only when all previous ones have been received, and
have a correction based on the number of peers, rather than the total number
of blocks.

Conflicts:
	src/main.cpp
	src/main.h

Self check after the last peer is removed

Github-Pull: #7804
Rebased-From: 2d1d6581ec 0e24bbf679
2016-04-07 13:16:16 +02:00
Wladimir J. van der Laan
834aaef7bd Merge #7543: [0.12] Backport BIP9, BIP68 and BIP112 with softfork
640666b [qa] rpc-tests: Properly use integers, floats (BtcDrak)
c270b62 Fix comments in tests (BtcDrak)
caf1381 Add bip68-sequence.py to extended rpc tests (BtcDrak)
26e9a05 Test of BIP9 fork activation of mtp, csv, sequence_lock (NicolasDorier)
3a99feb Add RPC test for BIP 68/112/113 soft fork. (Alex Morcos)
159ee3d Policy: allow transaction version 2 relay policy. (BtcDrak)
9713ed3 Soft fork logic for BIP68 (BtcDrak)
648be9b Soft fork logic for BIP113 (BtcDrak)
ee40924 Add CHECKSEQUENCEVERIFY softfork through BIP9 (Pieter Wuille)
6ff0b9f RPC test for BIP9 warning logic (Suhas Daftuar)
0710b30 Test versionbits deployments (Suhas Daftuar)
8ebc6f2 Add testing of ComputeBlockVersion (Suhas Daftuar)
0bdaacd Softfork status report in RPC (Pieter Wuille)
5f90d4e Versionbits tests (Pieter Wuille)
6f83cf2 BIP9 Implementation (Pieter Wuille)
ade85e1 Add LockPoints (Alex Morcos)
c8d309e Code style fix. (BtcDrak)
6170506 Separate CheckLockTime() and CheckSequence() logic (BtcDrak)
c0c5e09 BIP112: Implement CHECKSEQUENCEVERIFY (Mark Friedenbach)
197c376 fix sdaftuar's nits again (Alex Morcos)
0a79c04 Bug fix to RPC test (Alex Morcos)
0d09af7 Add RPC test exercising BIP68 (mempool only) (Suhas Daftuar)
15ba08c Implement SequenceLocks functions (Alex Morcos)
2016-04-04 13:08:29 +02:00
BtcDrak
c0fe2c9e03 Mark p2p alert system as deprecated.
Set default to off
This feature is removed entirely as of 0.13.0
2016-03-24 20:06:06 +00:00
Pieter Wuille
0bdaacd791 Softfork status report in RPC 2016-03-18 09:14:52 +00:00
Pieter Wuille
6f83cf2adb BIP9 Implementation
Inspired by former implementations by Eric Lombrozo and Rusty Russell, and
based on code by Jorge Timon.
2016-03-18 09:14:52 +00:00
Alex Morcos
ade85e126d Add LockPoints
Obtain LockPoints to store in CTxMemPoolEntry and during a reorg, evaluate whether they are still valid and if not, recalculate them.
2016-03-18 09:14:52 +00:00
Alex Morcos
197c3760ff fix sdaftuar's nits again
it boggles the mind why these nits can't be delivered on a more timely basis
2016-03-18 09:14:52 +00:00