Commit graph

1049 commits

Author SHA1 Message Date
Wladimir J. van der Laan de6bdfd78f
Merge #12692: Add configure options for various -fsanitize flags
6feb46c Add --with-sanitizers option to configure (Evan Klitzke)

Pull request description:

  This adds configure options for `-fsanitize=address`, `-fsanitize=thread`, and `-fsanitize=undefined` which are all disabled by default. These flags are useful for developers who wish to do additional safety checking. Note that some of these are mutually incompatible, and these may have a large performance overhead.

  There's some kind of strange logic required to properly check for the availability of these flags in a way that works on both GCC and Clang, hopefully the comments make it clear what's going on.

Tree-SHA512: 2d6fe402799110e59ee452dddf37f7ca2d26a7fecec50be25c8a134e4a20beb31f1e8f438dffd443641562418075896d1eeb450623425b272d80e05e3027a587
2018-03-29 22:57:58 +02:00
Wladimir J. van der Laan d3908e2cee
Merge #12759: [Docs] Improve formatting of developer notes
0bd2ec5 Improve formatting of developer notes (Evan Klitzke)

Pull request description:

  The developer notes file has gotten pretty large and unwieldly. This reorganizes some content, most notably by adding a TOC to the page. Compare how the page looks in [my branch](https://github.com/eklitzke/bitcoin/blob/developer-notes/doc/developer-notes.md) vs [master](https://github.com/eklitzke/bitcoin/blob/master/doc/developer-notes.md).

  I know there's long-term interest in moving a lot of this content to the bitcoin-core/docs repo on GitHub, but this makes things better now.

  The TOC format here is a semi-standard extension to Markdown files that you may have seen on GitHub pages in other projects. The `<!-- markdown-toc -->` comments used by these tools to know where the TOC starts/ends. The following tools all understand this format:

   * [Sphinx](http://www.sphinx-doc.org/en/master/)
   * [Pandoc](https://pandoc.org/)
   * [markdown-toc.el](https://github.com/ardumont/markdown-toc) (what I used)
   * various plugins for [vim](https://github.com/mzlogin/vim-markdown-toc) and other editors

  I used this TOC extension at a previous job, and my observation is that it's fine if people just edit the TOC manually. It's just text and it's not a huge deal if it gets a little out of sync. It can also be regenerated at any time by anyone with any of these tools.

Tree-SHA512: 298d1605ea5e8bfc0f75e70570c23ebd6891e4ffcdedd24fefadc23edd6e4b96509d8d102209868468a1b3ddbe2c3b8462698cdda8b9421348b5bc6f7b8d0cb8
2018-03-29 15:45:31 +02:00
Evan Klitzke ccedbafd73
Increase LevelDB max_open_files unless on 32-bit Unix.
This change significantly increases IBD performance by increasing the
amount of the UTXO index that can remain in memory. To ensure this
doesn't cause problems in the future, a static_assert on the LevelDB
version has been added, which must be updated by anyone upgrading
LevelDB.
2018-03-28 22:34:37 -07:00
Evan Klitzke 6feb46c372
Add --with-sanitizers option to configure
This enables the use of different compiler sanitizers, coresponding to
the -fsanitize option in GCC and Clang.
2018-03-28 12:33:04 -07:00
Evan Klitzke 0bd2ec5484
Improve formatting of developer notes
Summary of changes:

 * Add a TOC to the page
 * Make tips and tricks section use h3 headings
 * Reformat and clarify some sections
2018-03-28 12:11:25 -07:00
Wladimir J. van der Laan 624bee9659
Merge #11881: Remove Python2 support
1874058 Make base58 python contrib code work with python3 (Evan Klitzke)
bc6fdf2 Change all python files to use Python3 (John Newbery)

Pull request description:

  Following discussion here: https://github.com/bitcoin/bitcoin/pull/11843#issuecomment-351033742

  It's easier for maintainers if all python tools/scripts support only a single version of Python. There are only a few scripts that aren't explicitly python3 at this point, so this PR changes those remaining scripts to explicitly require python3.

Tree-SHA512: 5d38eef6e0fc7d8515e23a1f4c75e8b4160fd0fe23cba52a1f41689b114e54a9e503e0724829e8b41982ef98f2d113df80d9e238213b74f09ceaed0344a19e24
2018-03-28 16:10:19 +02:00
Wladimir J. van der Laan e49ba2e23b
Merge #12762: Make CKeyStore an interface
f381299 Move CKeyStore::cs_KeyStore to CBasicKeyStore (João Barbosa)
25eb9f5 Inline CKeyStore::AddKey(const CKey &) in CBasicKeyStore (João Barbosa)

Pull request description:

  Made these simplifications while reviewing #12714. This aims to make `CKeyStore` a *pure* interface:
   - no variable members - the mutex is moved to `CBasicKeyStore` which is where it is used;
   - no method implementations - `AddKey(const CKey &)` is moved to `CBasicKeyStore` which is where it is needed.

Tree-SHA512: 84e44f4390c59600e5cefa599b5464e1771c31dd4abc678ef50db8e06ffac778d692860a352918444f8bcd66430634637b6277a818a658721ffc4f381c1c6a90
2018-03-27 20:42:49 +02:00
practicalswift 0fee2b4180 doc: Add note about our preference for scoped enumerations ("enum class") 2018-03-27 17:18:32 +02:00
John Newbery bc6fdf2d15 Change all python files to use Python3 2018-03-26 16:49:33 -04:00
Wladimir J. van der Laan ec7dbaa37c
Merge #12756: [config] Remove blockmaxsize option
4757c04 [config] Remove blockmaxsize option (John Newbery)

Pull request description:

  The blockmaxsize option was marked as deprecated in V0.15.1, and code
  was added to convert provided blockmaxsize into blockmaxweight. However,
  this code was incorrectly implemented, and blockmaxsize was silently
  ignored.

  No users have complained about blockmaxsize being ignored, so just
  remove it in V0.17.

  Fixes #12640

  cc @ajtowns

Tree-SHA512: 968d71d37bf175c5a02539ddec289a12586f886e1dfe64c1d9aa5e39db48d06d21665153824fac3b11503a55f0812d2f1115a2d726aafd37b76ed629ec0aa671
2018-03-26 15:30:27 +02:00
João Barbosa f381299d64 Move CKeyStore::cs_KeyStore to CBasicKeyStore 2018-03-24 12:15:53 +00:00
Gregory Sanders 6acb02d635 add release note for sendmany output shuffling 2018-03-23 08:56:58 -04:00
Wladimir J. van der Laan cead84b72d
Merge #11536: Rename account to label where appropriate
d2527bd Rename wallet_accounts.py test (Russell Yanofsky)
045eeb8 Rename account to label where appropriate (Russell Yanofsky)

Pull request description:

  Rename account to label where appropriate

  This change only updates strings and adds RPC aliases, but should simplify the implementation of address labels in https://github.com/bitcoin/bitcoin/pull/7729, by getting renaming out of the way and letting that change focus on semantics.

  The difference between accounts and labels is that labels apply only to addresses, while accounts apply to both addresses and transactions (transactions have "from" and "to" accounts). The code associating accounts with transactions is clumsy and unreliable so we would like get rid of it.

  ---

  There is a rebased version of #7729 atop this PR at https://github.com/ryanofsky/bitcoin/commits/pr/label, see https://github.com/bitcoin/bitcoin/pull/7729#issuecomment-338417139.

Tree-SHA512: b3f934e612922d6290f50137f8ba71ddfaea4485713c7d97e89400a8b73b09b254f9186dffa462c77f5847721f5af9852b5572ade5443d8ee95dd150b3edb7ff
2018-03-22 21:27:53 +01:00
John Newbery 4757c04cb9 [config] Remove blockmaxsize option
The blockmaxsize option was marked as deprecated in V0.15.1, and code
was added to convert provided blockmaxsize into blockmaxweight. However,
this code was incorrectly implemented, and blockmaxsize was silently
ignored.

No users have complained about blockmaxsize being ignored, so just
remove it in V0.17.
2018-03-22 10:28:56 -04:00
Russell Yanofsky 045eeb8870 Rename account to label where appropriate
This change only updates strings and adds RPC aliases, but should simplify the
implementation of address labels in
https://github.com/bitcoin/bitcoin/pull/7729, by getting renaming out of the
way and letting it focus on semantics.

The difference between accounts and labels is that labels apply only to
addresses, while accounts apply to both addresses and transactions
(transactions have "from" and "to" accounts). The code associating accounts
with transactions is clumsy and unreliable so we would like get rid of it.
2018-03-19 12:05:35 -04:00
Russell Yanofsky 4c317d89e9 Document RPC method aliasing
Suggested by Sjors Provoost <sjors@sprovoost.nl> in
https://github.com/bitcoin/bitcoin/pull/11536#issuecomment-372820660
2018-03-15 16:37:57 -04:00
Wladimir J. van der Laan e7721e6672
Merge #12586: docs: Update osx brew install instruction
59f47959b docs: Update osx brew install instruction (fanquake)

Pull request description:

  Python 3.x is now the default python formula in [homebrew](https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb).
  https://brew.sh/2018/01/19/homebrew-1.5.0/ has some more info.

Tree-SHA512: f684019126d38debe897287b4bd9803b1ced2c32f66230a8a5eb468759cbec170b9367648bd7ba6dc4ea9489aa85a1b2f0445c384bbc5bf76d18073564f80b59
2018-03-14 17:28:30 +01:00
Wladimir J. van der Laan de2fcaa89a
Merge #12668: Doc: do update before fetching packages in WSL build guide
e29c6c8 Ubuntu xenial first dependencies (Nick Vercammen)

Pull request description:

  Add update and upgrade commands to enable the installation of the first dependencies on ubuntu xenial. If those are not executed some packages can not be found.

Tree-SHA512: ad15f8f053703f5b785c307a39b28bd3584fb1f9c32cc166e53955733f03ea3df445959577d65ac8c95c3619a0417894121603f8e656421d30992f4fdd6055f9
2018-03-14 16:30:29 +01:00
Wladimir J. van der Laan 702e8b70bd
Merge #11872: [rpc] createrawtransaction: Accept sorted outputs
fac70134a rpc: Update createrawtransaction examples (MarcoFalke)
fa06dfce0 [rpc] createrawtransaction: Accept sorted outputs (MarcoFalke)
8acd25d85 rpc: Allow typeAny in RPCTypeCheck (MarcoFalke)

Pull request description:

  The second parameter of the `createrawtransaction` is a dictionary of the outputs. This comes with at least two drawbacks:

  * In case of duplicate keys, either of them might silently disappear, with no user feedback at all. A user needs to make other mistakes, but this could eventually lead to abnormal tx fees.
  * A dictionary does not guarantee that keys are sorted. Again, a user needs to keep this in mind, as it could eventually lead to excessive tx fees.

  Even though my scenario of loss-of-funds is unlikely to happen, I see it as a inconvenience that should be fixed.

Tree-SHA512: cd562f34f7f9f79c7d3433805971325c388c2035611be283980f4049066a622df4f0afdc11d7ac96662260ec0115147cb65e1ab5268f5a1b063242f3fe425f77
2018-03-13 18:00:06 +01:00
Nick Vercammen e29c6c8c61
Ubuntu xenial first dependencies
Add update and upgrade commands to enable the installation of the first dependencies on ubuntu xenial. If those are not executed some packages can not be found.
2018-03-11 15:11:07 +01:00
practicalswift a7324bd799 Format timestamps using ISO 8601 formatting (e.g. "2018-02-28T12:34:56Z")
* Z is the zone designator for the zero UTC offset.
* T is the delimiter used to separate date and time.

This makes it clear for the end-user that the date/time logged is
specified in UTC and not in the local time zone.
2018-03-09 15:02:01 +01:00
MarcoFalke 29fad97c32
Merge #12607: depends: Remove ccache
cc879675e1 depends: Remove ccache (fanquake)

Pull request description:

  After discussion with @theuni, we can possibly just remove ccache from depends entirely.

  Related to #12606

Tree-SHA512: ae0a60c8d97467fa41d617daa48ed22159cf32613808634a983304901dd5ed27124e77868d2314004e5144f7b35ba1333f720bb12daec4c5ca03aaf29d593ef2
2018-03-07 21:12:47 -05:00
MarcoFalke fa06dfce0f
[rpc] createrawtransaction: Accept sorted outputs 2018-03-07 12:58:14 -05:00
Wladimir J. van der Laan 98bc27fb59
Merge #11687: External wallet files
be8ab7d08 Create new wallet databases as directories rather than files (Russell Yanofsky)
26c06f24e Allow wallet files not in -walletdir directory (Russell Yanofsky)
d8a99f65e Allow wallet files in multiple directories (Russell Yanofsky)

Pull request description:

  This change consists of three commits:

  * The first commit is a pure refactoring that removes the restriction that two wallets can only be opened at the same time if they are contained in the same directory.
  * The second commit removes the restriction that `-wallet` filenames can only refer to files in the `-walletdir` directory.
  * The third commit makes second commit a little safer by changing bitcoin to create wallet databases as directories rather than files, so they can be safely backed up.

  All three commits should be straightforward:

  *  The first commit adds around 20 lines of new code and then updates a bunch of function signatures (generally updating them to take plain fs::path parameters, instead of combinations of strings, fs::paths, and objects like CDBEnv and CWalletDBWrapper).
  * The second commit removes two `-wallet` filename checks and adds some test cases to the multiwallet unit test.
  * The third commit just changes the mapping from specified wallet paths to bdb environment & data paths.

    ---

  **Note:** For anybody looking at this PR for the first time, I think you can skip the comments before _20 Nov_ and start reading at https://github.com/bitcoin/bitcoin/pull/11687#issuecomment-345625565. Comments before  _20 Nov_ were about an earlier version of the PR that didn't include the third commit, and then confusion from not seeing the first commit.

Tree-SHA512: 00bbb120fe0df847cf57014f75f1f7f1f58b0b62fa0b3adab4560163ebdfe06ccdfff33b4231693f03c5dc23601cb41954a07bcea9a4919c8d42f7d62bcf6024
2018-03-07 17:11:54 +01:00
Wladimir J. van der Laan 8a709fba9b
Merge #12619: doc: Give hint about gitian not able to download
08e0855b9 Give hint about gitian not able to download (kallewoof)

Pull request description:

  Gitian fails to perform downloads right now on my set up. This can be circumvented by first checking out the tag being built and then doing the depends download step before running `gbuild`.

  This should of course be fixed in gitian, but having this note until it's fixed is definitely useful.

Tree-SHA512: ae9d0eb44ecfdae44d35aecc6e5fd6db7d9e95b8e0badc76a1d9aaf8fe70bc00a2914dfcb4f516d030560835af411515ca13736ebf8b49b7040b340457882779
2018-03-07 14:36:24 +01:00
kallewoof 08e0855b96
Give hint about gitian not able to download
Gitian fails to perform downloads right now on my set up. This can be circumvented by first checking out the tag being built and then doing the depends download step before running `gbuild`.
2018-03-06 17:14:29 -05:00
Dan Bolser c5be37e2c6 doc: Mention configure without wallet in FreeBSD instructions
The wallet part is described as optional, but apparently isn't
2018-03-06 22:07:20 +01:00
Wladimir J. van der Laan f13d756cdd
Merge #12373: Build: Add build support for profiling.
cfaac2a60 Add build support for 'gprof' profiling. (murrayn)

Pull request description:

  Support for profiling build: `./configure --enable-profiling`

Tree-SHA512: ea983cfce385f1893bb4ab7f94ac141b7d620951dc430da3bbc92ae1357fb05521eac689216e66dc87040171a8a57e76dd7ad98036e12a2896cfe5ab544347f0
2018-03-06 20:21:44 +01:00
Wladimir J. van der Laan 765a3ebb02
Merge #11986: [depends] zeromq 4.2.3
13a399a46 depends: patch pthread_set_name_np out of zeromq (Cory Fields)
8f7922636 depends: zeromq 4.2.3 (fanquake)

Pull request description:

  This is a followup to #9254 and #11981. Zeromq 4.2.3 was released just after #9254 was merged, and contains a years worth of improvements/bug fixes. See the release notes [here](https://github.com/zeromq/libzmq/releases/tag/v4.2.3).

  Todo:
  - [ ] Add zeromq-4.2.3.tar.gz to /depends-sources on bitcoincore.org
  - [ ] Verify gitian builds are still OK
  - [ ] Check: https://github.com/zeromq/libzmq/pull/2787

Tree-SHA512: 85e06f47be3e1fdedcee50ce90e3391d69df2ea1c167472ffc3126d8970d418eb75141b970e422eb2fda9a8cad00e6ba5b36afa53565171a9ebaa152a9dc9b60
2018-03-06 19:51:07 +01:00
fanquake cc879675e1 depends: Remove ccache 2018-03-06 10:37:42 -05:00
Ken Lee e2b2e48b63
doc: SIGNER can contains space inside now.
SIGNER can contains space inside now. mentioned in https://github.com/bitcoin/bitcoin/pull/12527#issuecomment-370506416
2018-03-06 22:55:16 +08:00
fanquake 8f79226361 depends: zeromq 4.2.3 2018-03-05 15:08:24 -05:00
Wladimir J. van der Laan 9d49dcf9fa
Merge #12260: [Trivial] link mentioned scripted-diff-commit (developer-doc)
7eb665fc8 [Trivial] link mentioned scripted-diff-commit (Felix Wolfsteller)

Pull request description:

  Make it easier for people who do not operate on a cloned repository to access the example mentioned.

Tree-SHA512: 1c06e551c68cad03e6bd541bf0e0076cdf0b48ef9b8b4e4a61435367c3435e2e4ccb934112e8dc29d3d70217d8834924704aaf839e25d1133312df86848ca1a1
2018-03-05 17:41:49 +01:00
Wladimir J. van der Laan 71f56da384
Merge #12452: docs: clarified systemd installation instructions in init.md for Ubuntu users.
4d14d06fc docs: clarified systemd installation instructions in init.md for Ubuntu users. (DaveFromBinary)

Pull request description:

  Added a note to init.md to clarify the .service copy path for Ubuntu because it differs from the described copy path.

  Also noted which version of Ubuntu switched to systemd for the default system init to clarify when the systemd installation steps should be used instead of the upstart installation steps for Ubuntu users.

Tree-SHA512: 1ac6143a177d0f3782ff641029d71eb1f3b3be0c1482e266154d3ca093251b58a10a5f037d1cc82dbfaeae058df2bb8e904833ccb88b032f1a59a151724f95e2
2018-03-05 17:40:08 +01:00
Wladimir J. van der Laan 21e2670de3
Merge #12434: [doc] dev-notes: Members should be initialized
fa9461473 [doc] dev-notes: Members should be initialized (MarcoFalke)

Pull request description:

  Also, remove mention of threads that were removed long ago.

  Motivation:
  Make it easier to spot bugs such as #11654 and  #12426

Tree-SHA512: 8ca1cb54e830e9368803bd98a8b08c39bf2d46f079094ed7e070b32ae15a6e611ce98d7a614f897803309f4728575e6bc9357fab1157c53d2536417eb8271653
2018-03-05 17:38:59 +01:00
MarcoFalke 480f42630c
Merge #12543: Fix typos
d918eb7864 Fix typos (practicalswift)

Pull request description:

  Fix typos.

Tree-SHA512: c790e49be6e01c8d70ebd872ef61cc210c1de15c4a1e5a98280169f32dc8a14cd68f4dd1c23afc76758b28ef355ab12ded2ff7504562dc9b69a11839ad3cd7e3
2018-03-05 08:41:25 -05:00
Russell Yanofsky be8ab7d082 Create new wallet databases as directories rather than files
This change should make it easier for users to make complete backups of wallets
because they can now just back up the specified `-wallet=<path>` path directly,
instead of having to back up the specified path as well as the transaction log
directory (for incompletely flushed wallets).

Another advantage of this change is that if two wallets are located in the same
directory, they will now use their own BerkeleyDB environments instead using a
shared environment. Using a shared environment makes it difficult to manage and
back up wallets separately because transaction log files will contain a mix of
data from all wallets in the environment.
2018-03-03 10:26:55 -05:00
Russell Yanofsky 26c06f24e5 Allow wallet files not in -walletdir directory
Remove restriction that -wallet filenames can only refer to files in the
-walletdir directory.
2018-03-03 10:26:55 -05:00
fanquake 59f47959bf
docs: Update osx brew install instruction 2018-03-03 12:44:25 +08:00
Dimitris Apostolou a9761cae1c
Fix typos and cleanup
[ci-skip]
2018-03-02 23:00:25 +02:00
murrayn cfaac2a60f Add build support for 'gprof' profiling. 2018-02-26 20:54:16 -08:00
Randolf Richardson b22c289ae6 [docs] Minor improvements to Compatibility Notes
Progressed from Windows Vista to Windows 7 for OS testing statement.
2018-02-27 01:42:23 +00:00
practicalswift d918eb7864 Fix typos 2018-02-26 20:19:29 +01:00
Wladimir J. van der Laan d3f4dd313e
doc: Add historical release notes for 0.16.0
Tree-SHA512: 4c33c9c85bf31aa7c73b09ba9f2295eec477adc90934e51323ed50228be0dde9341a2d99ccf7adb184060fe2293533436bccfdbdfe5a30efcd61127ebb5359b8
2018-02-26 12:25:01 +01:00
DaveFromBinary 4d14d06fcb docs: clarified systemd installation instructions in init.md for Ubuntu users.
Added a note to init.md to clarify the .service copy path for newer versions of Ubuntu because it differs from the described copy path.

Also noted what version of Ubuntu switched to systemd for the default system init.
2018-02-17 17:23:06 -07:00
Jonas Schnelli daa84b3354
Merge #12029: Build: Add a makefile target for Doxygen documentation
a777244e4 Build: Add a makefile target for Doxygen documentation (Andrea Comand)

Pull request description:

  You can now build the doxygen documentation with `make docs` and clean it with `make clean-docs`.

  Fixes: #11949

Tree-SHA512: f2361ec7f771227367dd04bba1a444b44e59f13901463a678a5f2f579a10a56d67db2e29552e754e312a1c472a31593b6af189cbaac5cd351a428c57baf5ace7
2018-02-17 18:49:24 +11:00
MarcoFalke fa94614738
[doc] dev-notes: Members should be initialized
Also, remove mention of threads that were removed long ago
2018-02-16 14:21:52 -05:00
fanquake 41550d6d13
[depends] miniupnpc 2.0.20180203 2018-02-15 18:44:44 +08:00
fanquake 61647a4b86
[depends] ccache 3.4.1 2018-02-15 18:44:44 +08:00
fanquake 5a10859a80
[depends] expat 2.2.5 2018-02-15 18:44:43 +08:00