Commit Graph

481 Commits

Author SHA1 Message Date
Neil Booth
d29c07f0eb Prepare 0.11.0 2017-02-18 13:29:52 +09:00
Neil Booth
790755b630 Reduce upper limit on blocks fetched at once
Testnet is lumpy and 2500 can blow up memory
2017-02-18 13:17:51 +09:00
Neil Booth
3f35bc0298 More PEP8 stuff 2017-02-18 13:05:26 +09:00
Neil Booth
33cdfa4fc8 Merge branch 'nmarley-pep8' into develop 2017-02-18 12:54:01 +09:00
Neil Booth
9bd7b5a9f9 Merge branch 'pep8' of https://github.com/nmarley/electrumx into nmarley-pep8 2017-02-18 12:51:58 +09:00
Neil Booth
151da40d5b Implement peer discovery protocol
Closes #104

DEFAULT_PORTS now a coin property
A Peer object maintains peer information
Revamp LocalRPC "peers" call to show a lot more information
Have lib/jsonrpc.py take care of handling request timeouts
Save and restore peers to a file
Loosen JSON RPC rules so we work with electrum-server and beancurd which don't follow the spec.
Handle incoming server.add_peer requests
Send server.add_peer registrations if peer doesn't have us or correct ports
Verify peers at regular intervals, forget stale peers, verify new peers or those with updated ports
If connecting via one port fails, try the other
Add socks.py for SOCKS4 and SOCKS5 proxying, so Tor servers can now be reached by TCP and SSL
Put full licence boilerplate in lib/ files
Disable IRC advertising on testnet
Serve a Tor banner file if it seems like a connection came from your tor proxy (see ENVIONMENT.rst)
Retry tor proxy hourly, and peers that are about to turn stale
Report more onion peers to a connection that seems to be combing from your tor proxy
Only report good peers to server.peers.subscribe; always report self if valid
Handle peers on the wrong network robustly
Default to 127.0.0.1 rather than localhost for Python <= 3.5.2 compatibility
Put peer name in logs of connections to it
Update docs
2017-02-18 12:43:45 +09:00
Neil Booth
09b2df1179 Prepare 0.10.19 2017-02-16 08:01:45 +09:00
Nathan Marley
a03665696c recommendations from pycodestyle (pep8 style) 2017-02-07 20:12:50 -08:00
Neil Booth
09c4bdc5c3 Prepare 0.10.18 2017-02-06 19:48:54 +09:00
Neil Booth
6db9cb967c Require attributes to be specified for a coin 2017-02-06 19:48:30 +09:00
Neil Booth
13cf80a326 Re-enable bandwidth throttling 2017-02-06 19:29:20 +09:00
Neil Booth
ba45e001fa Prepare 0.10.17 2017-02-05 09:49:46 +09:00
Neil Booth
1856cbe6c0 Coin fixes/cleanup (erasmospunk)
2 out of 3 from #118
2017-02-05 09:41:27 +09:00
Neil Booth
a019fde853 Show uptime in RPC getinfo result 2017-02-04 10:35:36 +09:00
Neil Booth
184fc615bd Improve clarity about current daemon URL 2017-02-04 10:35:35 +09:00
Neil Booth
2d126f7436 Prepare 0.10.16 2017-01-31 20:09:57 +09:00
Neil Booth
60711956d5 Prepare 0.10.15 2017-01-31 08:17:10 +09:00
Neil Booth
616bcf6bfd Add daemon_url RPC call and document it.
Closes #111
2017-01-31 08:13:25 +09:00
Neil Booth
b23b19473c Sanity check on basic IRC reported settings
Closes #110
2017-01-31 07:58:19 +09:00
Neil Booth
eff5d3d7e4 Force JSONRPCv2
Temporary backwards compat hack for old Coinomi wallets
2017-01-31 07:48:18 +09:00
John L. Jegutanis
fd19bddeb1 fix crash due to a missing env variable in irc.py and a typo fix (#112)
Thank you!
2017-01-30 23:52:56 +09:00
Neil Booth
4a8cec9988 Prepare 0.10.14 2017-01-29 08:29:41 +09:00
Neil Booth
06c8eda161 Preparations for peer discovery
DEFAULT_PORTS is a now a coin property.
Other miscellaneous updates to get things closer
2017-01-29 06:47:43 +09:00
Neil Booth
8bc9abf9c1 Prepare 0.10.13 2017-01-25 20:30:02 +09:00
Neil Booth
e56f188816 Implement peer subscriptions
Incremental updates are passed.
Also implement a server.features RPC
2017-01-25 20:28:19 +09:00
Neil Booth
551c04a3bc Remove all uses of "except:" 2017-01-25 20:28:19 +09:00
Neil Booth
76b6899cf2 Try to avoid asyncio log spew on shutdown
Closes #106.
This is a hacky workaround to an issue that needs to be
fixed in Python's asyncio library (where I filed issue 487
on github)
2017-01-25 20:27:33 +09:00
Neil Booth
cb0160901f Unify executor and futures logic 2017-01-24 21:25:37 +09:00
Neil Booth
9b5cb105d5 Prepare 0.10.12 2017-01-24 07:57:29 +09:00
Neil Booth
0ac36aeca0 Make a copy of sessions to loop over 2017-01-24 07:55:52 +09:00
Neil Booth
1a48ad136c Prepare 0.10.11 2017-01-23 23:39:49 +09:00
Neil Booth
a7462a6ea3 Complete rewrite of JSON RPC infrastructure
Aim to be easier for clients to use, because to do peer
discovery we must act as a client to other servers.

Split out JSON session concept from the asyncio protocol
concept.  This makes the JSON RPC support more easily
testable and usable as a stand-alone library.

In addition, support JSON RPC v1 and v2, and auto-detection
of peer's version.
2017-01-23 23:36:02 +09:00
Neil Booth
d0d4c0d75f Prepare 0.10.10 2017-01-23 07:28:13 +09:00
Neil Booth
05a6da1920 Move peer management to peers.py from irc
It's cleaner and will be useful for peer-to-peer comms later
2017-01-22 23:34:44 +09:00
Neil Booth
ed0646efbf Tidy up request and notification sending 2017-01-20 20:04:56 +09:00
Neil Booth
766da5ed79 Don't maintain a sub_count in controller
Just do a tally occasionally.
It's too tricky to keep it accurate as it double-counts resubscribing to
the same address, for example
2017-01-20 08:09:33 +09:00
Neil Booth
112e0a12a9 Prepare 0.10.9 2017-01-18 20:35:24 +09:00
Neil Booth
4729ba2e21 Tweak the shutdown process
Clean it up a bit and make it harder to do wrongly.
2017-01-18 20:28:57 +09:00
Neil Booth
9a8c598fa8 The session needs to handle the version command. 2017-01-18 19:50:26 +09:00
Neil Booth
b03a44ca5a Prepare 0.10.8 2017-01-18 08:04:14 +09:00
Neil Booth
23c4616711 Fix testcase 2017-01-18 08:02:45 +09:00
Neil Booth
0dfdfaba7e Prepare 0.10.7 2017-01-17 08:13:57 +09:00
Neil Booth
f05dd6c2a3 Use snappy compression
Seems to make ~4.5% faster (5281 tx/s -> 5516 tx/s)
Shrinks UTXO DB by ~15% and hist DB by ~5%
2017-01-17 07:59:50 +09:00
Neil Booth
5f9e337457 Improve RocksDB iterator 2017-01-17 07:43:06 +09:00
Neil Booth
5abe4faa8d JSON results are returned with HTTP status 500 2017-01-17 07:23:58 +09:00
Neil Booth
c958b3af49 Remove LMDB
Performance of history writes was very poor even with
the code rewritten to accommodate the environment concept
(see db_abstraction branch)
2017-01-16 22:03:45 +09:00
Neil Booth
ffb4d4f158 Don't print response; might have auth info 2017-01-16 21:27:30 +09:00
Neil Booth
1a9ac22fa0 Prepare 0.10.6 2017-01-16 21:24:59 +09:00
Neil Booth
65f927122b daemon: properly check for HTTP status codes 2017-01-16 21:22:41 +09:00
Neil Booth
131601a7b2 Rework clean shutdown logic
So that the main block processor future is cancellable.
We wait for the executor and then flush anything unflushed.
Resolves the rest of the second part of #100
2017-01-16 21:22:24 +09:00