Commit Graph

108 Commits

Author SHA1 Message Date
Pavel Zhovner 4d5ffdc7c6 Update HOWTO.rst (#206) 2017-07-23 14:06:51 +09:00
Henry fe311f2f18 HOWTO: fixed paths 2017-07-04 03:37:56 +02:00
Andres G. Aragoneses 61a5d6dec1 HOWTO.rst: fix typo 2017-05-04 15:11:32 +08:00
Neil fbf73c1209 Update ENVIRONMENT.rst 2017-05-04 00:22:53 +09:00
LaoDC 10b932c18c sorry about permissions 2017-05-03 19:27:00 +07:00
LaoDC d8ca1a3690 fixed typo. 2017-05-03 19:26:49 +07:00
LaoDC d80b9200cc Updated docs/ENVIRONMENT.rst to reflect changes in variables 2017-05-03 19:25:14 +07:00
Neil Booth 74f6639489 New feature: force peer discovery via proxy
Set FORCE_PROXY to non-empty to force peer discovery to go
through the proxy.  See docs/ENVIRONMENT.rst

Wait for an attempt at proxy discovery to be made before beginning
peer discovery.
2017-04-02 15:06:29 +09:00
Neil Booth 557fe815d3 REPORT_HOST no longer defaults to HOST
Cleanup of identity handling.  It is now possible to specify
a Tor identity and no clearnet identity.
2017-04-01 12:03:53 +09:00
Neil Booth 897a95e449 Update notes about rocksdb in Python 2017-03-29 17:01:40 +09:00
Neil Booth ba4bd79da4 Update PROTOCOL.rst and PEER_DISCOVERY.rst 2017-03-25 13:28:20 +09:00
John L. Jegutanis 884632b07b Dynamic header support
Block headers can have a dynamic size that is being indexed on a
new meta file "headers_offsets".

The offsets are 64 bits in order to accommodate coins with big
headers that will accumulate GBs of header data after some years.

Closes #128
2017-03-25 11:35:55 +09:00
Neil Booth 69404e2920 Add new RPC method: add_peer 2017-03-25 11:35:54 +09:00
Neil Booth a834e7036c Update protocol docs 2017-03-22 23:45:26 +09:00
shsmith 1b6be20a80 merge samples into contrib 2017-03-12 18:30:44 -07:00
Neil Booth e0df0b94ad Update ACKNOWLEDGEMENTS 2017-03-11 13:51:51 +09:00
Neil Booth fe7e88593d Prepare 1.0 2017-03-05 13:22:09 +09:00
Neil Booth e93d4edeae Require Python 3.5.3
3.5.2 has various socket and API issues affecting peer discovery

Closes #135
2017-03-01 07:23:11 +09:00
Neil Booth 398e5d7efa Prepare 0.99 2017-02-19 19:42:26 +09:00
Neil Booth 32666ce0dc Add facility to disable peer discovery
and/or self announcement.
2017-02-19 19:02:01 +09:00
Neil Booth 8fa8615ccf Tweak docs 2017-02-19 10:32:28 +09:00
xHire 3357af28ad A note about testnet-segwit NET in docs (#130)
Thanks
2017-02-19 10:32:27 +09:00
Neil Booth 1bb8a9d5a4 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 0b0a3a8f5b Accept IPv6 addresses in DAEMON_URL
Fixes #126
2017-02-16 08:00:08 +09:00
Neil Booth c17dd847bc Update docs 2017-02-12 08:35:47 +09:00
Neil Booth bc7338daee Add daemon_url RPC call and document it.
Closes #111
2017-01-31 08:13:25 +09:00
Neil Booth 165bf1c2b2 Fix some typos 2017-01-29 18:43:58 +09:00
Neil Booth 7557bd108d Add docs/PROTOCOL.rst 2017-01-29 18:38:23 +09:00
Neil Booth 3c1ca39a34 Prepare 0.10.14 2017-01-29 08:29:41 +09:00
Neil Booth 8ba176f41c Add peer discovery document 2017-01-29 08:24:18 +09:00
Neil Booth 1b1460801e Implement peer subscriptions
Incremental updates are passed.
Also implement a server.features RPC
2017-01-25 20:28:19 +09:00
Neil Booth c46a38f87f 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 7e3ff4417a 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 e93eff43d3 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 3d8fde48b1 Update docs 2017-01-16 19:32:22 +09:00
Neil Booth 655c875c03 Clean up shutdown logic and logging
Add RPC "stop" command, and document it.

Fixes the 2nd part of #100
2017-01-16 19:31:57 +09:00
Neil Booth d533b00eed Merge branch 'json-named-args' into develop 2017-01-12 22:41:18 +09:00
Neil Booth 430c2dafb6 Clarify README; no need to resync.
Update HOWTO and docs
2017-01-12 22:40:21 +09:00
Neil Booth 64aec8c97c Update docs 2017-01-11 19:39:36 +09:00
Neil Booth 7a418a5ebc Update HOWTO 2017-01-11 19:39:35 +09:00
Neil Booth c38d33ac4c Add an RPC call to force a reorg at run-time
This required a large rework block processor and prefetcher
interaction, and led to various cleanups

Closes #103
2017-01-09 17:14:06 +09:00
Neil Booth 2c1ae050cc Make flushes and reorgs async
Apart from the flush on shutdown and the flush when caught up,
neither of which matter, this makes flushes asynchronous.

Also, block processing for reorgs is now asynchronous.

This also removes the FORCE_REORG debug envvar; I want to
put that into the RPC interface.

Closes #102
2017-01-09 16:15:17 +09:00
Neil Booth ef09936cdc Rename NETWORK envvar to NET
For consistency with lib/coins.py

SegWit testnet needs its own NET
2017-01-08 10:07:58 +09:00
Neil Booth b704f12c5b Split out history into its own DB. 2017-01-07 11:51:12 +09:00
Neil Booth 6ff69cf60c Fix log message 2017-01-07 11:51:00 +09:00
Neil Booth 2c6d79989e Tweak documentation for clarity 2017-01-07 11:51:00 +09:00
Neil Booth badd68b5f5 Update the ARCHITECTURE document
Also has a pretty line diagram
2017-01-03 17:05:39 +09:00
Neil Booth 8a07e66265 Move ENV-NOTES to ENVIRONMENT.rst
Improve environment documentation
2017-01-03 14:18:59 +09:00
Neil Booth 81f6e9ee18 Explain what logging a session means 2017-01-03 09:18:30 +09:00
Neil Booth 11061bb6e4 Add documentation of the RPC interface 2017-01-02 19:29:19 +09:00