Prepare 1.0
This commit is contained in:
parent
90d1d2641b
commit
30bb832ef8
123
README.rst
123
README.rst
@ -7,6 +7,8 @@
|
|||||||
ElectrumX - Reimplementation of electrum-server
|
ElectrumX - Reimplementation of electrum-server
|
||||||
===============================================
|
===============================================
|
||||||
|
|
||||||
|
For a future network with bigger blocks.
|
||||||
|
|
||||||
:Licence: MIT
|
:Licence: MIT
|
||||||
:Language: Python (>= 3.5.3)
|
:Language: Python (>= 3.5.3)
|
||||||
:Author: Neil Booth
|
:Author: Neil Booth
|
||||||
@ -20,7 +22,7 @@ Features
|
|||||||
========
|
========
|
||||||
|
|
||||||
- Efficient, lightweight reimplementation of electrum-server
|
- Efficient, lightweight reimplementation of electrum-server
|
||||||
- Efficient synchronization of bitcoin mainnet from Genesis. Recent
|
- Fast synchronization of bitcoin mainnet from Genesis. Recent
|
||||||
hardware should synchronize in well under 24 hours. The fastest
|
hardware should synchronize in well under 24 hours. The fastest
|
||||||
time to height 448k (mid January 2017) reported is under 4h 30m. On
|
time to height 448k (mid January 2017) reported is under 4h 30m. On
|
||||||
the same hardware JElectrum would take around 4 days and
|
the same hardware JElectrum would take around 4 days and
|
||||||
@ -42,7 +44,7 @@ Features
|
|||||||
- Daemon failover. More than one daemon can be specified, and
|
- Daemon failover. More than one daemon can be specified, and
|
||||||
ElectrumX will failover round-robin style if the current one fails
|
ElectrumX will failover round-robin style if the current one fails
|
||||||
for any reason.
|
for any reason.
|
||||||
- peer discovery protocol removes need for IRC
|
- Peer discovery protocol removes need for IRC
|
||||||
- Coin abstraction makes compatible altcoin and testnet support easy.
|
- Coin abstraction makes compatible altcoin and testnet support easy.
|
||||||
|
|
||||||
Motivation
|
Motivation
|
||||||
@ -52,7 +54,7 @@ Mainly for privacy reasons, I have long wanted to run my own Electrum
|
|||||||
server, but I struggled to set it up or get it to work on my
|
server, but I struggled to set it up or get it to work on my
|
||||||
DragonFlyBSD system and lost interest for over a year.
|
DragonFlyBSD system and lost interest for over a year.
|
||||||
|
|
||||||
In September 2015 I heard that electrum-server databases were getting
|
In September 2016 I heard that electrum-server databases were getting
|
||||||
large (35-45GB when gzipped), and it would take several weeks to sync
|
large (35-45GB when gzipped), and it would take several weeks to sync
|
||||||
from Genesis (and was sufficiently painful that no one seems to have
|
from Genesis (and was sufficiently painful that no one seems to have
|
||||||
done it for about a year). This made me curious about improvements
|
done it for about a year). This made me curious about improvements
|
||||||
@ -118,24 +120,22 @@ Roadmap
|
|||||||
ElectrumX
|
ElectrumX
|
||||||
- UTXO root logic and implementation
|
- UTXO root logic and implementation
|
||||||
- incremental history serving / pruning
|
- incremental history serving / pruning
|
||||||
- potential new functionality such as adding label server
|
- new features such as possibly adding label server functionality
|
||||||
- potentially move some functionality to C or C++
|
- potentially move some functionality to C or C++
|
||||||
|
|
||||||
|
|
||||||
Database Format
|
|
||||||
===============
|
|
||||||
|
|
||||||
The database format of ElectrumX will not change from the 0.10.0
|
|
||||||
version for the release of 1.0.
|
|
||||||
|
|
||||||
|
|
||||||
ChangeLog
|
ChangeLog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
Version 1.0
|
||||||
|
-----------
|
||||||
|
|
||||||
|
* Minor doc tweaks only
|
||||||
|
|
||||||
Version 0.99.4
|
Version 0.99.4
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
* Add support for Bitcoin Unlimited's nolnet (**NET**=nolnet)
|
* Add support for Bitcoin Unlimited's nolnet; set **NET** to nolnet
|
||||||
* Choose 2 peers per bucket
|
* Choose 2 peers per bucket
|
||||||
* Minor bugfix
|
* Minor bugfix
|
||||||
|
|
||||||
@ -216,114 +216,15 @@ Version 0.11.0
|
|||||||
tor-specific banner file is served. See **TOR_BANNER_FILE** in
|
tor-specific banner file is served. See **TOR_BANNER_FILE** in
|
||||||
`docs/ENVIRONMENT.rst`_.
|
`docs/ENVIRONMENT.rst`_.
|
||||||
|
|
||||||
Version 0.10.19
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* update `docs/PEER_DISCOVERY.rst`_
|
|
||||||
* accept IPv6 addresses in DAEMON_URL (fixes `#126`_)
|
|
||||||
|
|
||||||
Version 0.10.18
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* bandwidth accounting was unintentionally lost in 0.10.11, restore it
|
|
||||||
|
|
||||||
Version 0.10.17
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Minor upgrade
|
|
||||||
|
|
||||||
* added current daemon URL and uptime to getinfo RPC call
|
|
||||||
* altcoin cleanups / fixes (erasmospunk)
|
|
||||||
|
|
||||||
Version 0.10.16
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* disable batch notifications; unintentionally enabled in a prior version
|
|
||||||
|
|
||||||
Version 0.10.15
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* Force JSONRPCv2 for backwards compat with Coinomi wallets that don't
|
|
||||||
speak JSON RPCv1 properly. This will only be forced for a few
|
|
||||||
months to give Coinomi users a chance to upgrade.
|
|
||||||
* Basic sanity check on IRC reported settings (closes `#110`_)
|
|
||||||
* Add an RPC interface to set **DAEMON_URL** at run-time and switch back
|
|
||||||
to the primary daemon (closes `#111`_)
|
|
||||||
|
|
||||||
Version 0.10.14
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* misc cleanups and code changes to prepare for peer discovery in 0.11.0
|
|
||||||
* add `docs/PEER_DISCOVERY.rst`_
|
|
||||||
|
|
||||||
Version 0.10.13
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* worked around asyncio issue to suppress the annoying log spew on shutdown
|
|
||||||
that makes it look like a bomb hit
|
|
||||||
* implement peer subscriptions as real subscriptions with incremental updates
|
|
||||||
* misc cleanups
|
|
||||||
|
|
||||||
Version 0.10.12
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* fixed a bug in 0.10.11 where a dict changed whilst iterating it
|
|
||||||
|
|
||||||
Version 0.10.11
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* rewrite of JSON RPC layer to improve usability for clients.
|
|
||||||
Includes support of JSON RPC v1, v2 and a compat layer that tries to
|
|
||||||
detect the peer's version.
|
|
||||||
|
|
||||||
Version 0.10.10
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* move peer management from irc.py to peers.py. This is preparataion
|
|
||||||
for peer discovery without IRC.
|
|
||||||
* misc cleanups
|
|
||||||
* fix Litecoin genesis hash (petrkr)
|
|
||||||
|
|
||||||
Version 0.10.9
|
|
||||||
--------------
|
|
||||||
|
|
||||||
* restore client to sessions output
|
|
||||||
* cleanup shutdown process; hopefully this resolves the log spew for good
|
|
||||||
|
|
||||||
Version 0.10.8
|
|
||||||
--------------
|
|
||||||
|
|
||||||
* fix import for reverse iterator for RocksDB
|
|
||||||
* fix tests
|
|
||||||
|
|
||||||
Version 0.10.7
|
|
||||||
--------------
|
|
||||||
|
|
||||||
* remove LMDB
|
|
||||||
* turn on snappy compression for LevelDB and RocksDB; gives smaller DBs and
|
|
||||||
faster sync
|
|
||||||
* fix and speed up RocksDB iterator slightly
|
|
||||||
* expect JSON with bitcoind HTTP status code 500
|
|
||||||
|
|
||||||
|
|
||||||
**Neil Booth** kyuupichan@gmail.com https://github.com/kyuupichan
|
**Neil Booth** kyuupichan@gmail.com https://github.com/kyuupichan
|
||||||
|
|
||||||
1BWwXJH3q6PRsizBkSGm2Uw4Sz1urZ5sCj
|
1BWwXJH3q6PRsizBkSGm2Uw4Sz1urZ5sCj
|
||||||
|
|
||||||
|
|
||||||
.. _#72: https://github.com/kyuupichan/electrumx/issues/72
|
|
||||||
.. _#92: https://github.com/kyuupichan/electrumx/issues/92
|
|
||||||
.. _#94: https://github.com/kyuupichan/electrumx/issues/94
|
|
||||||
.. _#99: https://github.com/kyuupichan/electrumx/issues/99
|
|
||||||
.. _#100: https://github.com/kyuupichan/electrumx/issues/100
|
.. _#100: https://github.com/kyuupichan/electrumx/issues/100
|
||||||
.. _#101: https://github.com/kyuupichan/electrumx/issues/101
|
|
||||||
.. _#102: https://github.com/kyuupichan/electrumx/issues/102
|
|
||||||
.. _#103: https://github.com/kyuupichan/electrumx/issues/103
|
|
||||||
.. _#104: https://github.com/kyuupichan/electrumx/issues/104
|
.. _#104: https://github.com/kyuupichan/electrumx/issues/104
|
||||||
.. _#110: https://github.com/kyuupichan/electrumx/issues/110
|
|
||||||
.. _#111: https://github.com/kyuupichan/electrumx/issues/111
|
|
||||||
.. _#124: https://github.com/kyuupichan/electrumx/issues/124
|
.. _#124: https://github.com/kyuupichan/electrumx/issues/124
|
||||||
.. _#126: https://github.com/kyuupichan/electrumx/issues/126
|
|
||||||
.. _#129: https://github.com/kyuupichan/electrumx/issues/129
|
.. _#129: https://github.com/kyuupichan/electrumx/issues/129
|
||||||
.. _#132: https://github.com/kyuupichan/electrumx/issues/132
|
.. _#132: https://github.com/kyuupichan/electrumx/issues/132
|
||||||
.. _#135: https://github.com/kyuupichan/electrumx/issues/135
|
.. _#135: https://github.com/kyuupichan/electrumx/issues/135
|
||||||
|
|||||||
@ -241,7 +241,7 @@ some of this.
|
|||||||
|
|
||||||
* **PEER_ANNOUNCE**
|
* **PEER_ANNOUNCE**
|
||||||
|
|
||||||
Set this environemnt variable to empty to disable announcing itself.
|
Set this environment variable to empty to disable announcing itself.
|
||||||
If not defined, or non-empty, ElectrumX will announce itself to
|
If not defined, or non-empty, ElectrumX will announce itself to
|
||||||
peers.
|
peers.
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,18 @@ DB Engine I use `plyvel`_ 0.9, a Python interface to LevelDB.
|
|||||||
required if for Dash. Version 1.4 tested.
|
required if for Dash. Version 1.4 tested.
|
||||||
================ ========================
|
================ ========================
|
||||||
|
|
||||||
|
You need to be running a non-pruning bitcoin daemon with::
|
||||||
|
|
||||||
|
txindex=1
|
||||||
|
|
||||||
|
set in its configuration file. If you have an existing installation
|
||||||
|
of bitcoind and have not previously set this you will need to reindex
|
||||||
|
the blockchain with::
|
||||||
|
|
||||||
|
bitcoind -reindex
|
||||||
|
|
||||||
|
which can take some time.
|
||||||
|
|
||||||
While not a requirement for running ElectrumX, it is intended to be
|
While not a requirement for running ElectrumX, it is intended to be
|
||||||
run with supervisor software such as Daniel Bernstein's
|
run with supervisor software such as Daniel Bernstein's
|
||||||
`daemontools`_, Gerald Pape's `runit`_ package or `systemd`. These
|
`daemontools`_, Gerald Pape's `runit`_ package or `systemd`. These
|
||||||
|
|||||||
12
lib/peer.py
12
lib/peer.py
@ -143,14 +143,18 @@ class Peer(object):
|
|||||||
@cachedproperty
|
@cachedproperty
|
||||||
def is_valid(self):
|
def is_valid(self):
|
||||||
ip = self.ip_address
|
ip = self.ip_address
|
||||||
if not ip:
|
if ip:
|
||||||
return True
|
return ((ip.is_global or ip.is_private)
|
||||||
return not ip.is_multicast and (ip.is_global or ip.is_private)
|
and not (ip.is_multicast or ip.is_unspecified))
|
||||||
|
return True
|
||||||
|
|
||||||
@cachedproperty
|
@cachedproperty
|
||||||
def is_public(self):
|
def is_public(self):
|
||||||
ip = self.ip_address
|
ip = self.ip_address
|
||||||
return self.is_valid and not (ip and ip.is_private)
|
if ip:
|
||||||
|
return self.is_valid and not ip.is_private
|
||||||
|
else:
|
||||||
|
return self.host != 'localhost'
|
||||||
|
|
||||||
@cachedproperty
|
@cachedproperty
|
||||||
def ip_address(self):
|
def ip_address(self):
|
||||||
|
|||||||
@ -278,6 +278,8 @@ class PeerManager(util.LoggedClass):
|
|||||||
retry = False
|
retry = False
|
||||||
new_peers = []
|
new_peers = []
|
||||||
for peer in peers:
|
for peer in peers:
|
||||||
|
if not peer.is_valid:
|
||||||
|
continue
|
||||||
matches = peer.matches(self.peers)
|
matches = peer.matches(self.peers)
|
||||||
if not matches:
|
if not matches:
|
||||||
new_peers.append(peer)
|
new_peers.append(peer)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# Server name and protocol versions
|
# Server name and protocol versions
|
||||||
|
|
||||||
VERSION = 'ElectrumX 0.99.4'
|
VERSION = 'ElectrumX 1.0'
|
||||||
PROTOCOL_MIN = '1.0'
|
PROTOCOL_MIN = '1.0'
|
||||||
PROTOCOL_MAX = '1.0'
|
PROTOCOL_MAX = '1.0'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user