1. 18 Apr, 2016 1 commit
  2. 04 Apr, 2016 1 commit
  3. 31 Mar, 2016 1 commit
    • Wladimir J. van der Laan's avatar
      rpc: Register calls where they are defined · e29edf96
      Wladimir J. van der Laan authored
      Split out methods to every module, apart from 'help' and 'stop' which
      are implemented in rpcserver.cpp itself.
      
      - This makes it easier to add or remove RPC commands - no longer everything that includes
          rpcserver.h has to be rebuilt when there's a change there.
      - Cleans up `rpc/server.h` by getting rid of the huge cluttered list of function definitions.
      - Removes most of the bitcoin-specific code from rpcserver.cpp and .h.
      
      Continues #7307 for the non-wallet.
      e29edf96
  4. 18 Mar, 2016 1 commit
  5. 15 Mar, 2016 1 commit
    • Pieter Wuille's avatar
      BIP9 Implementation · 26a89c1e
      Pieter Wuille authored
      Inspired by former implementations by Eric Lombrozo and Rusty Russell, and
      based on code by Jorge Timon.
      26a89c1e
  6. 10 Feb, 2016 1 commit
  7. 31 Jan, 2016 1 commit
  8. 27 Jan, 2016 1 commit
  9. 20 Jan, 2016 2 commits
  10. 19 Jan, 2016 1 commit
  11. 15 Jan, 2016 1 commit
  12. 14 Dec, 2015 1 commit
  13. 08 Dec, 2015 3 commits
  14. 30 Nov, 2015 1 commit
  15. 27 Nov, 2015 1 commit
  16. 15 Nov, 2015 1 commit
  17. 13 Nov, 2015 1 commit
  18. 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
  19. 23 Oct, 2015 2 commits
  20. 13 Oct, 2015 1 commit
  21. 09 Oct, 2015 1 commit
  22. 08 Oct, 2015 1 commit
  23. 01 Oct, 2015 2 commits
  24. 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
  25. 28 Sep, 2015 1 commit
  26. 16 Sep, 2015 1 commit
  27. 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
  28. 02 Sep, 2015 1 commit
  29. 20 Jul, 2015 1 commit
  30. 26 Jun, 2015 2 commits
  31. 04 Jun, 2015 2 commits