1. 08 Dec, 2015 1 commit
  2. 27 Nov, 2015 1 commit
  3. 15 Nov, 2015 1 commit
  4. 13 Nov, 2015 1 commit
  5. 10 Nov, 2015 2 commits
    • Wladimir J. van der Laan's avatar
      net: Automatically create hidden service, listen on Tor · 3025e796
      Wladimir J. van der Laan authored
      Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
      API, to create and destroy 'ephemeral' hidden services programmatically.
      https://stem.torproject.org/api/control.html#stem.control.Controller.create_ephemeral_hidden_service
      
      This means that if Tor is running (and proper authorization is available),
      bitcoin automatically creates a hidden service to listen on, without user
      manual configuration. This will positively affect the number of available
      .onion nodes.
      
      - When the node is started, connect to Tor through control socket
      - Send `ADD_ONION` command
      - First time:
          - Make it create a hidden service key
          - Save the key in the data directory for later usage
      - Make it redirect port 8333 to the local port 8333 (or whatever port we're listening on).
      - Keep control socket connection open for as long node is running. The hidden service will
        (by default) automatically go away when the connection is closed.
      3025e796
    • Cory Fields's avatar
      build: Split hardening/fPIE options out · 58de617b
      Cory Fields authored
      This allows for fPIE to be used selectively.
      58de617b
  6. 23 Oct, 2015 2 commits
  7. 13 Oct, 2015 1 commit
  8. 09 Oct, 2015 1 commit
  9. 08 Oct, 2015 1 commit
  10. 01 Oct, 2015 2 commits
  11. 30 Sep, 2015 1 commit
    • Gavin Andresen's avatar
      Simple benchmarking framework · 37113135
      Gavin Andresen authored
      Benchmarking framework, loosely based on google's micro-benchmarking
      library (https://github.com/google/benchmark)
      
      Wny not use the Google Benchmark framework? Because adding Even More Dependencies
      isn't worth it. If we get a dozen or three benchmarks and need nanosecond-accurate
      timings of threaded code then switching to the full-blown Google Benchmark library
      should be considered.
      
      The benchmark framework is hard-coded to run each benchmark for one wall-clock second,
      and then spits out .csv-format timing information to stdout. It is left as an
      exercise for later (or maybe never) to add command-line arguments to specify which
      benchmark(s) to run, how long to run them for, how to format results, etc etc etc.
      Again, see the Google Benchmark framework for where that might end up.
      
      See src/bench/MilliSleep.cpp for a sanity-test benchmark that just benchmarks
      'sleep 100 milliseconds.'
      
      To compile and run benchmarks:
        cd src; make bench
      
      Sample output:
      
      Benchmark,count,min,max,average
      Sleep100ms,10,0.101854,0.105059,0.103881
      37113135
  12. 28 Sep, 2015 1 commit
  13. 16 Sep, 2015 1 commit
  14. 03 Sep, 2015 2 commits
    • Casey Rodarmor's avatar
      ffe73890
    • Wladimir J. van der Laan's avatar
      evhttpd implementation · 14e2a138
      Wladimir J. van der Laan authored
      - *Replace usage of boost::asio with [libevent2](http://libevent.org/)*.
      boost::asio is not part of C++11, so unlike other boost there is no
      forwards-compatibility reason to stick with it. Together with #4738 (convert
      json_spirit to UniValue), this rids Bitcoin Core of the worst offenders with
      regard to compile-time slowness.
      
      - *Replace spit-and-duct-tape http server with evhttp*. Front-end http handling
      is handled by libevent, a work queue (with configurable depth and parallelism)
      is used to handle application requests.
      
      - *Wrap HTTP request in C++ class*; this makes the application code mostly
      HTTP-server-neutral
      
      - *Refactor RPC to move all http-specific code to a separate file*.
      Theoreticaly this can allow building without HTTP server but with another RPC
      backend, e.g. Qt's debug console (currently not implemented) or future RPC
      mechanisms people may want to use.
      
      - *HTTP dispatch mechanism*; services (e.g., RPC, REST) register which URL
      paths they want to handle.
      
      By using a proven, high-performance asynchronous networking library (also used
      by Tor) and HTTP server, problems such as #5674, #5655, #344 should be avoided.
      
      What works? bitcoind, bitcoin-cli, bitcoin-qt. Unit tests and RPC/REST tests
      pass. The aim for now is everything but SSL support.
      
      Configuration options:
      
      - `-rpcthreads`: repurposed as "number of  work handler threads". Still
      defaults to 4.
      
      - `-rpcworkqueue`: maximum depth of work queue. When this is reached, new
      requests will return a 500 Internal Error.
      
      - `-rpctimeout`: inactivity time, in seconds, after which to disconnect a
      client.
      
      - `-debug=http`: low-level http activity logging
      14e2a138
  15. 02 Sep, 2015 1 commit
  16. 20 Jul, 2015 1 commit
  17. 26 Jun, 2015 2 commits
  18. 04 Jun, 2015 4 commits
  19. 22 May, 2015 1 commit
  20. 15 May, 2015 1 commit
  21. 14 May, 2015 2 commits
  22. 13 May, 2015 1 commit
    • Alex Morcos's avatar
      Create new BlockPolicyEstimator for fee estimates · 90be2748
      Alex Morcos authored
      This class groups transactions that have been confirmed in blocks into buckets, based on either their fee or their priority.  Then for each bucket, the class calculates what percentage of the transactions were confirmed within various numbers of blocks.  It does this by keeping an exponentially decaying moving history for each bucket and confirm block count of the percentage of transactions in that bucket that were confirmed within that number of blocks.
      
      -Eliminate txs which didn't have all inputs available at entry from fee/pri calcs
      
      -Add dynamic breakpoints and tracking of confirmation delays in mempool transactions
      
      -Remove old CMinerPolicyEstimator and CBlockAverage code
      
      -New smartfees.py
      
      -Pass a flag to the estimation code, using IsInitialBlockDownload as a proxy for when we are still catching up and we shouldn't be counting how many blocks it takes for transactions to be included.
      
      -Add a policyestimator unit test
      90be2748
  23. 12 May, 2015 1 commit
  24. 25 Apr, 2015 1 commit
  25. 20 Apr, 2015 1 commit
  26. 25 Mar, 2015 1 commit
  27. 24 Mar, 2015 1 commit
  28. 22 Mar, 2015 1 commit
  29. 20 Mar, 2015 1 commit
  30. 12 Mar, 2015 1 commit
  31. 06 Mar, 2015 1 commit
    • Wladimir J. van der Laan's avatar
      build: Endian compatibility · 8718bc73
      Wladimir J. van der Laan authored
      - Detect endian instead of stopping configure on big-endian
      - Add `byteswap.h` and `endian.h` header for compatibility with
        Windows and other operating systems that don't come with them
      - Update `crypto/common.h` functions to use compat
        endian header
      8718bc73