Commit Graph

541 Commits

Author SHA1 Message Date
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
Alex Morcos
15ba08c3b5 Implement SequenceLocks functions
SequenceLocks functions are used to evaluate sequence lock times or heights per BIP 68.

The majority of this code is copied from maaku in #6312
Further credit: btcdrak, sipa, NicolasDorier
2016-03-18 09:14:52 +00:00
Wladimir J. van der Laan
c76bfff11e Merge #7440: [0.12] Rename permitrbf to mempoolreplacement and provide minimal string-list forward compatibility
af9f564 release-notes: Update for replacebyfee->mempoolreplacement rename (Luke Dashjr)
4ad418b Rename replacebyfee=opt-in to mempoolreplacement=fee (Luke Dashjr)
b2287a7 release-notes: Update for permitrbf->replacebyfee rename (Luke Dashjr)
5f456a6 Simplify check for replacebyfee=opt-in (Luke Dashjr)
e8d19ab Accept replacebyfee=opt-in for turning on opt-in RBF (Luke Dashjr)
1205f87 Rename permitrbf to replacebyfee (Luke Dashjr)
2016-02-03 10:30:10 +01:00
Luke Dashjr
4ad418bc9b Rename replacebyfee=opt-in to mempoolreplacement=fee 2016-02-01 19:31:36 +00:00
Gregory Maxwell
86755bc85a Add whitelistforcerelay to control forced relaying. [#7099 redux]
- Add whitelistforcerelay to control forced relaying.

Also renames whitelistalwaysrelay.

Nodes relay all transactions from whitelisted peers, this
 gets in the way of some useful reasons for whitelisting
 peers-- for example, bypassing bandwidth limitations.

The purpose of this forced relaying is for specialized gateway
 applications where a node is being used as a P2P connection
 filter and multiplexer, but where you don't want it getting
 in the way of (re-)broadcast.

This change makes it configurable with whitelistforcerelay.

- Blacklist -whitelistalwaysrelay; replaced by -whitelistrelay.

Github-Pull: #7439
Rebased-From: 325c725fb6 89d113e02a
2016-02-01 14:15:40 +01:00
Luke Dashjr
1205f87d36 Rename permitrbf to replacebyfee
"permit" is currently used to configure transaction filtering, whereas replacement is more to do with the memory pool state than the transaction itself.
2016-01-29 01:31:33 +00:00
Wladimir J. van der Laan
da83ecd454 Add option -permitrbf to set transaction replacement policy
Add a configuration option `-permitrbf` to set transaction replacement policy
for the mempool.

Enabling it will enable (opt-in) RBF, disabling it will refuse all
conflicting transactions.

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

Github-Pull: #7386
Rebased-From: b768108d9c
2016-01-21 12:38:52 +01:00
Luke Dashjr
5b144b7113 Merge branch bytespersigop 2016-01-09 17:02:35 +00:00
MarcoFalke
333e1eaeea Bump copyright headers to 2015
- Bump copyright headers to 2015
- [devtools] Rewrite fix-copyright-headers.py
- [devtools] Use git pretty-format for year parsing

Github-Pull: #7205
Rebased-From: fa6ad855e9 fa24439ff3 fa71669452
2016-01-05 14:13:33 +01:00
Suhas Daftuar
12c469b236 [Mempool] Fix mempool limiting and replace-by-fee for PrioritiseTransaction
1) Fix mempool limiting for PrioritiseTransaction

Redo the feerate index to be based on mining score, rather than fee.

Update mempool_packages.py to test prioritisetransaction's effect on
package scores.

2) Update replace-by-fee logic to use fee deltas

3) Use fee deltas for determining mempool acceptance

4) Remove GetMinRelayFee

One test in AcceptToMemoryPool was to compare a transaction's fee
agains the value returned by GetMinRelayFee. This value was zero for
all small transactions.  For larger transactions (between
DEFAULT_BLOCK_PRIORITY_SIZE and MAX_STANDARD_TX_SIZE), this function
was preventing low fee transactions from ever being accepted.

With this function removed, we will now allow transactions in that range
with fees (including modifications via PrioritiseTransaction) below
the minRelayTxFee, provided that they have sufficient priority.

Github-Pull: #7062
Rebased-From: eb306664e7 9ef2a25603 27fae3484c 901b01d674
2015-12-21 17:19:53 +01:00
Pieter Wuille
10b88be798 Replace trickle nodes with per-node/message Poisson delays
We used to have a trickle node, a node which was chosen in each iteration of
the send loop that was privileged and allowed to send out queued up non-time
critical messages. Since the removal of the fixed sleeps in the network code,
this resulted in fast and attackable treatment of such broadcasts.

This pull request changes the 3 remaining trickle use cases by random delays:
* Local address broadcast (while also removing the the wiping of the seen filter)
* Address relay
* Inv relay (for transactions; blocks are always relayed immediately)

The code is based on older commits by Patrick Strateman.

Github-Pull: #7125
Rebased-From: 5400ef6bcb
2015-12-14 13:43:53 +01:00
Luke Dashjr
45b8e278fb -bytespersigop option to additionally limit sigops in transactions we relay and mine 2015-12-01 20:57:08 +00:00
Alex Morcos
5f12263302 Expose FormatStateMessage 2015-12-01 10:10:25 -05:00
Wladimir J. van der Laan
c0c08c7c68 Merge pull request #7141
aabc897 rpc: Don't translate warning messages (Wladimir J. van der Laan)
2015-12-01 13:21:16 +01:00
Wladimir J. van der Laan
aabc897801 rpc: Don't translate warning messages
But keep translating them in the GUI.
This - necessarily - requires duplication of a few messages.
Alternative take on #7134, that keeps the translations from being wiped.

Also document GetWarnings() input argument.

Fixes #5895.
2015-12-01 10:07:22 +01:00
Matt Corallo
bb8ea1f630 removeForReorg calls once-per-disconnect-> once-per-reorg 2015-11-30 13:03:57 -05:00
Wladimir J. van der Laan
74b5ce24c6 Merge pull request #7116
cb491e7 Trivial: Fix warning introduced by #7053 by casting to uint64_t (Jorge Timón)
2015-11-30 10:18:46 +01:00
Jorge Timón
cb491e7788 Trivial: Fix warning introduced by #7053 by casting to uint64_t 2015-11-29 21:19:37 +01:00
Suhas Daftuar
50262d8953 Allow block announcements with headers
This replaces using inv messages to announce new blocks, when a peer requests
(via the new "sendheaders" message) that blocks be announced with headers
instead of inv's.

Since headers-first was introduced, peers send getheaders messages in response
to an inv, which requires generating a block locator that is large compared to
the size of the header being requested, and requires an extra round-trip before
a reorg can be relayed.  Save time by tracking headers that a peer is likely to
know about, and send a headers chain that would connect to a peer's known
headers, unless the chain would be too big, in which case we revert to sending
an inv instead.

Based off of @sipa's commit to announce all blocks in a reorg via inv,
which has been squashed into this commit.

Rebased-by: Pieter Wuille
2015-11-29 11:59:23 +01:00
MarcoFalke
faf93f37fe [trivial] Reuse translation and cleanup DEFAULT_* values
* DEFAULT_DISABLE_SAFEMODE = false
* Use DEFAULT_* constants for extern bools
2015-11-28 19:01:11 +01:00
Luke Dashjr
b966aa836a Constrain constant values to a single location in code 2015-11-28 18:47:29 +01:00
Wladimir J. van der Laan
5ca149a3db Merge pull request #7053
2e29e7e Globals: Remove a bunch of Params() calls from main.cpp: (Jorge Timón)
2015-11-27 13:29:54 +01:00