Commit graph

4717 commits

Author SHA1 Message Date
Gavin Andresen
e62f8d72f3 Merge pull request #2539 from gavinandresen/paymentrequest
Payment Protocol Work
2013-08-22 01:54:28 -07:00
Gavin Andresen
a41d5fe019 Payment Protocol: X509-validated payment requests
Add support for a Payment Protocol to Bitcoin-Qt.

Payment messages are protocol-buffer encoded and communicated over
http(s), so this adds a dependency on the Google protocol buffer
library, and requires Qt with OpenSSL support.
2013-08-22 16:18:25 +10:00
Wladimir J. van der Laan
e4348d2179 Merge pull request #2922 from Diapolo/translations
translations update for 0.8.4
2013-08-21 22:41:31 -07:00
Gavin Andresen
47d0534368 Route qDebug() messages to debug.log 2013-08-22 11:05:45 +10:00
Gavin Andresen
a73aa68b84 Rework when payment server is started 2013-08-22 11:05:45 +10:00
Philip Kaufmann
a2189fbaf6 update SelectParamsFromCommandLine() handling/order
- move SelectParamsFromCommandLine() from init.cpp to bitcoin.cpp to allow
  to use TestNet() for Bitcoin-Qt instead of GetBoolArg("-testnet", false)
- change order in bitcoind.cpp to match bitcoin.cpp functionality
- hamonize error message strings for missing datadir and failing
  SelectParamsFromCommandLine() in bitcoin.cpp and bitcoind.cpp
- use TestNet() call in splashscreen.cpp
2013-08-22 11:05:45 +10:00
Gavin Andresen
3624356e82 Refactor: Move GetAccountAddresses to CWallet 2013-08-22 11:05:45 +10:00
Gavin Andresen
618855133d Refactor: CAddressBookData for mapAddressBook
Straight refactor, so mapAddressBook stores a CAddressBookData
(which just contains a std::string) instead of a std::string.

Preparation for payment protocol work, which will add the notion
of refund addresses to the address book.
2013-08-22 11:05:45 +10:00
Gavin Andresen
b94595bb7f GetDataDir(): cache paths for each network separately 2013-08-22 11:05:44 +10:00
Gavin Andresen
57d80467f1 Reject dust amounts during validation
Replaces the validation check for "amount == 0" with an isDust check,
so very small output amounts are caught before the wallet
is unlocked, a transaction is created, etc.
2013-08-22 11:05:44 +10:00
Philip Kaufmann
88ff655987 translations update for 0.8.4
- update translation master files
- include current translations from Transifex
- add several new languages
- fix a bug in bitcoin.qrc, which prevents some languages from beeing used
  (wrong file extension .ts instead of .qm was used)
2013-08-21 15:35:50 +02:00
Gavin Andresen
b986663ccd Merge pull request #2919 from gmaxwell/bloom_faster
Update the bloom state on the real object, not the temporary one.
2013-08-20 20:12:51 -07:00
Gregory Maxwell
a7f533a972 Update the bloom state on the real object, not the temporary one.
This resulted in just passing all transactions to filtered wallets
which worked surprisingly well, except where it didn't.
2013-08-20 17:46:07 -07:00
Gavin Andresen
449fb40aa9 Merge pull request #2915 from petertodd/murmurhash-tests
Add MurmurHash3() unit test
2013-08-20 17:19:28 -07:00
Gavin Andresen
5250fdcc6c Merge pull request #2914 from gmaxwell/bloom_faster
Performance optimization for bloom filters.
2013-08-20 15:52:49 -07:00
Gavin Andresen
3337481a4b Merge pull request #2916 from sipa/leveldb-osxfsync
Import OSX fsync change from LevelDB subtree
2013-08-20 15:35:05 -07:00
Pieter Wuille
b28d8b423b Merge leveldb subtree change.
* On Mac OS X fsync does not guarantee write to disk. Use fcntl F_FULLFSYNC instead.
2013-08-20 15:13:34 +02:00
Pieter Wuille
1bb86d6f15 Squashed 'src/leveldb/' changes from a02ddf9..be1b0ff
be1b0ff On Mac OS X fsync does not guarantee write to disk. Use fcntl F_FULLFSYNC instead.

git-subtree-dir: src/leveldb
git-subtree-split: be1b0ff1fcd6ad820a7fd111ac671fb51cc68001
2013-08-20 15:11:55 +02:00
Peter Todd
4eecdcacaf
Add MurmurHash3() unit test
Useful as a source of test vectors to anyone re-implementing bloom
filters.
2013-08-20 07:30:39 -04:00
Jeff Garzik
af6a02a99b Merge pull request #2913 from gavinandresen/checkpoint_250k
Checkpoint at block 250,000
2013-08-20 03:59:50 -07:00
Gregory Maxwell
37c6389c5a Performance optimization for bloom filters.
This reduces a peer's ability to attack network resources by
 using a full bloom filter, but without reducing the usability
 of bloom filters.  It sets a default match everything filter
 for peers and it generalizes a prior optimization to
 cover more cases.
2013-08-20 02:27:26 -07:00
Gavin Andresen
bb237705d0 Checkpoint at block 250,000 2013-08-20 17:30:33 +10:00
Gavin Andresen
ffa5683da3 Merge pull request #2911 from phelixbtc/patch-4
makefile.mingw: Fix Win32 RPC Crashes.
2013-08-19 17:54:31 -07:00
phelixbtc
d1862bf309 makefile.mingw: Fix Win32 RPC Crashes.
8864019f6d
2013-08-19 17:19:08 +02:00
Gregory Maxwell
4bc9a19269 Merge pull request #2907 from sipa/leveldb-noripple
Switch to cleaned-up LevelDB 1.12 branch.
2013-08-17 17:05:19 -07:00
Pieter Wuille
84d6d69fc6 Squashed 'src/leveldb/' changes from ae6c262..a02ddf9
a02ddf9 Added GNU/kFreeBSD kernel name (TARGET_OS)
8487468 CondVar::SignalAll was broken, leading to deadlocks on Windows builds. http://code.google.com/p/leveldb/issues/detail?id=149
f6d84d1 Allow files to be opened for reading multiple times
cb8e3f7 Checking whether closing succeeds
d5317e8 Print actual Win32 error that occurred on file creation failure.
907f308 Port leveldb to MinGW32
9def2bf Mingw support for Windows LevelDB port
0a7b074 Pre-Vista leveldb::port::InitOnce implementation
31a2b09 Native Windows LevelDB port
058a035 Remove Snappy support
5bd76dc Release leveldb 1.12
7b094f1 Release leveldb 1.11
28dad91 Release leveldb 1.10
514c943 Make DB::Open fail if sst files are missing.
d84c825 Fix corruption bug found and analyzed by dhruba@gmail.com
ea2e919 added utility to dump leveldb files
REVERT: ae6c262 Merge branch 'leveldb' into ripple-fork
REVERT: 28fa222 Looks like a bit more delay is needed to smooth the latency.
REVERT: a18f3e6 Tidy up JobQueue, add ripple_core module
REVERT: ab82e57 Release leveldb 1.12
REVERT: 02c6259 Release leveldb 1.11
REVERT: 5bbb544 Rate limit compactions with a 25ms pause after each complete file.
REVERT: 8c29c47 LevelDB issue 178 fix: cannot resize a level 0 compaction set
REVERT: 18b245c Added GNU/kFreeBSD kernel name (TARGET_OS)
REVERT: 8be9d12 CondVar::SignalAll was broken, leading to deadlocks on Windows builds. http://code.google.com/p/leveldb/issues/detail?id=149
REVERT: c9fc070 Upgrade LevelDB to 1.10.0, mostly for better write stall logging.
REVERT: 8215b15 Tweak to variable name to support unity build
REVERT: aca1ffc Allow files to be opened for reading multiple times
REVERT: 693a70c Checking whether closing succeeds
REVERT: 0144d04 Print actual Win32 error that occurred on file creation failure.
REVERT: 43ed517 Fix corruption bug found and analyzed by dhruba@gmail.com
REVERT: 413c74c added utility to dump leveldb files
REVERT: 96eda85 Port leveldb to MinGW32
REVERT: 0967260 Mingw support for Windows LevelDB port
REVERT: ee3f9bd Pre-Vista leveldb::port::InitOnce implementation
REVERT: f5d0a41 Native Windows LevelDB port
REVERT: 28b35f1 Remove Snappy support

git-subtree-dir: src/leveldb
git-subtree-split: a02ddf9b14d145e88185ee209ab8b01d8826663a
2013-08-18 00:58:04 +02:00
Pieter Wuille
4a9a8f3f48 Merge commit '84d6d69fc69662b2709fffbeaf3c3b4f53c535b1' 2013-08-18 00:58:04 +02:00
Gavin Andresen
317f57ec87 Merge pull request #2903 from Michagogo/listsinceblock-help
Clarified the listsinceblock help test
2013-08-15 20:34:00 -07:00
Gavin Andresen
31b28082fe Merge pull request #2891 from gavinandresen/leveldb_printerror
Use HandleError() consistently to handle leveldb errors
2013-08-15 19:02:32 -07:00
Gavin Andresen
3f20f82209 Merge pull request #2880 from gavinandresen/test_numequal
More unit tests for OP_NUMEQUAL
2013-08-15 18:53:49 -07:00
Gavin Andresen
a0bb001431 Merge pull request #2886 from gavinandresen/rpctiming
Make RPC password resistant to timing attacks
2013-08-15 18:53:26 -07:00
Gavin Andresen
9be4cff5f6 Merge pull request #2876 from sipa/fixreorgcrash
Fix reorganization crash
2013-08-15 18:51:06 -07:00
Gregory Maxwell
47491a90b6 Merge pull request #2131 from sipa/evens
Only create signatures with even S, and verification mode to check.
2013-08-15 18:42:28 -07:00
Gavin Andresen
13d3b1c144 Merge pull request #2829 from sipa/bip32
BIP 32 derivation + test vectors
2013-08-15 16:40:03 -07:00
Pieter Wuille
a81cd96805 Only create signatures with even S, and verification mode to check.
To fix a minor malleability found by Sergio Lerner (reported here:
https://bitcointalk.org/index.php?topic=8392.msg1245898#msg1245898)

The problem is that if (R,S) is a valid ECDSA signature for a given
message and public key, (R,-S) is also valid. Modulo N (the order
of the secp256k1 curve), this means that both (R,S) and (R,N-S) are
valid. Given that N is odd, S and N-S have a different lowest bit.
We solve the problem by forcing signatures to have an even S value,
excluding one of the alternatives.

This commit just changes the signing code to always produce even S
values, and adds a verification mode to check it. This code is not
enabled anywhere yet. Existing tests in key_tests.cpp verify that
the produced signatures are still valid.
2013-08-16 00:17:50 +02:00
Pieter Wuille
2461aba1ac Mempool consistency check 2013-08-15 23:55:35 +02:00
Pieter Wuille
f0784ac470 Fix non-standard disconnected transactions causing mempool orphans 2013-08-15 23:53:55 +02:00
Micha
9afe5a2c32 Clarified the listsinceblock help test
Specifically, the fact that the command
relates to wallet transactions.
2013-08-16 00:15:39 +03:00
Gavin Andresen
4323bfeafd Merge pull request #2776 from jgarzik/keypoolsize
RPC: keypoolrefill now permits optional size parameter, to bump keypool
2013-08-14 22:01:22 -07:00
Gavin Andresen
5c28d820b6 Merge pull request #2877 from gavinandresen/qt_unittest_makefile
Compile into build_test when creating bitcoin-qt_test
2013-08-14 21:55:11 -07:00
Gavin Andresen
5738877bed Merge pull request #2899 from super3/master
Removed duplicate /doc files.
2013-08-14 21:53:31 -07:00
super3
c6cb40f04b Removed duplicate files.
Left behind after the change to Markdown.
2013-08-14 23:03:57 -04:00
Gavin Andresen
8fa9b5cc45 Merge pull request #2658 from TheBlueMatt/forkalert
Detect any sufficiently long fork and alert the user just like any other alert
2013-08-12 23:33:40 -07:00
Gavin Andresen
6fc537f490 Merge pull request #2892 from r000n/master
Add missing 0x prefix in chainparams.cpp
2013-08-12 16:37:14 -07:00
Roman Mindalev
2b6a8993fb Add missing 0x prefix in chainparams.cpp 2013-08-12 18:28:23 +04:00
Gavin Andresen
ac1bd701ba Merge pull request #2890 from cozz/cozz1
do not call BuildMerkleTree() unnecessarily twice
2013-08-12 04:11:00 -07:00
Gavin Andresen
b35e993200 Use HandleError() consistently to handle leveldb errors 2013-08-12 18:06:17 +10:00
Cozz Lovan
c7fa1a3586 do not call BuildMerkleTree() unnecessarily twice 2013-08-10 15:27:25 +02:00
Gavin Andresen
8dc206a1e2 Reject non-canonically-encoded sizes
The length of vectors, maps, sets, etc are serialized using
Write/ReadCompactSize -- which, unfortunately, do not use a
unique encoding.

So deserializing and then re-serializing a transaction (for example)
can give you different bits than you started with. That doesn't
cause any problems that we are aware of, but it is exactly the type
of subtle mismatch that can lead to exploits.

With this pull, reading a non-canonical CompactSize throws an
exception, which means nodes will ignore 'tx' or 'block' or
other messages that are not properly encoded.

Please check my logic... but this change is safe with respect to
causing a network split. Old clients that receive
non-canonically-encoded transactions or blocks deserialize
them into CTransaction/CBlock structures in memory, and then
re-serialize them before relaying them to peers.

And please check my logic with respect to causing a blockchain
split: there are no CompactSize fields in the block header, so
the block hash is always canonical. The merkle root in the block
header is computed on a vector<CTransaction>, so
any non-canonical encoding of the transactions in 'tx' or 'block'
messages is erased as they are read into memory by old clients,
and does not affect the block hash. And, as noted above, old
clients re-serialize (with canonical encoding) 'tx' and 'block'
messages before relaying to peers.
2013-08-09 10:01:35 +10:00
Gavin Andresen
42656ea2e5 Make RPC password resistant to timing attacks
Fixes issue#2838; this is a tweaked version of pull#2845 that
should not leak the length of the password and is more generic,
in case we run into other situations where we need
timing-attack-resistant comparisons.
2013-08-08 19:58:57 +10:00