Unmodified source tree of upstream commit 280cb339aa158e099eb936033eecd15719770651
("Merge pull request #389 from SomberNight/202607_release_2_0",
https://github.com/spesmilo/electrumx, release 2.0.0, 3 July 2026).
All Palladium-specific changes are in the commits that follow.
432 lines
21 KiB
ReStructuredText
432 lines
21 KiB
ReStructuredText
===========
|
|
ChangeLog
|
|
===========
|
|
|
|
Version 2.0.0 (03 July 2026)
|
|
==============================
|
|
|
|
TL;DR:
|
|
|
|
- new DB schema, so you need to rebuild from scratch. No more "DB::flush_count overflow".
|
|
- Bitcoin Core >=31 is now required, with `txospenderindex=1`
|
|
- added support for Electrum Protocol 1.7
|
|
- running with free-threaded CPython is now (experimentally) supported, and is much faster
|
|
|
|
-----
|
|
|
|
* Breaking changes to on-disk database. Server operators need to manually delete old DB,
|
|
no migration path. New DB will be rebuilt while rescanning again from genesis.
|
|
|
|
- in return, no more manual "history compaction" and unexpected downtimes every year:
|
|
no more "DB::flush_count overflow" (`spesmilo/electrumx#88`_)
|
|
- the size of the new DB is comparable to the old one, however:
|
|
|
|
* We now require Bitcoin Core to have :code:`txospenderindex=1` (added in Bitcoin Core 31)
|
|
in addition to :code:`txindex=1`. This is needed to serve the :code:`blockchain.outpoint.subscribe` RPC
|
|
added in Electrum Protocol 1.7.
|
|
|
|
For reference, on Bitcoin mainnet around height=950k,
|
|
|
|
- the ElectrumX db uses around 122 GiB (using LevelDB, roughly same for both of e-x 1.x and 2.0),
|
|
- note: using RocksDB 9, it is a bit smaller, around 106 GiB
|
|
- :code:`.bitcoin/blocks/` uses 788 GiB,
|
|
- :code:`.bitcoin/chainstate/` uses 12 GiB,
|
|
- :code:`.bitcoin/indexes/txindex/` uses 66 GiB,
|
|
- :code:`.bitcoin/indexes/txospenderindex/` uses 88 GiB (new!)
|
|
|
|
- This also means that we now require Bitcoin Core 31.0 or newer (for :code:`COIN=Bitcoin`).
|
|
|
|
* env: the previously optional envvar :code:`DB_ENGINE`, is now mandatory.
|
|
|
|
- choose either :code:`leveldb` or :code:`rocksdb`
|
|
- in ElectrumX 1.x versions, the default was leveldb.
|
|
|
|
You need to install the appropriate dependencies for your engine, see the :code:`[leveldb]` and
|
|
:code:`[rocksdb]` pip extras and the "Database Engine" section of the HOWTO.
|
|
|
|
Previously RocksDB was difficult to use as the python bindings for it have been unmaintained for years.
|
|
By the super-slop-powers of LLMs, we revived the python bindings as :code:`rocksdb-ng` and made it compatible with modern
|
|
cpython, cython, and rocksdb. The changes are reviewable and not really slop. (see `spesmilo/electrumx#347`_)
|
|
rocksdb-ng (starting with version 2.3) is also compatible with `free-threaded python`_, see "performance" section.
|
|
|
|
LevelDB was written with HDDs in mind. RocksDB is more modern
|
|
and on an SSD takes around ~25% less time than LevelDB to sync from genesis.
|
|
Given that this release contains breaking DB changes and a resync is needed anyway, maybe try out RocksDB :)
|
|
|
|
* performance:
|
|
|
|
- the BlockProcessor is now massively multi-threaded, both inside a single block and across a span of blocks.
|
|
This can mainly only be taken advantage of if the GIL (Global Interpreter Lock) is disabled, that is,
|
|
when using a `free-threaded python`_ interpreter: e.g. cpython :code:`3.14t`, compiled with :code:`--disable-gil`.
|
|
On a decent modern machine with a multi-core CPU, this has been measured to cut initial sync time
|
|
from genesis to a bit less than half. OTOH, much more RAM is required for the parallel processing
|
|
(example: approx 2 GB when syncing with GIL, 8 GB when syncing without GIL).
|
|
|
|
- processing a single block at the tip, when already caught up, is expected to take around half the time,
|
|
regardless of the GIL. Still, without the GIL, it is even faster.
|
|
|
|
- for more details, see `spesmilo/electrumx#369`_
|
|
|
|
- the (block)Prefetcher and the Mempool code are now partially event-based (but still also polling):
|
|
e.g. a mempool update is triggered as soon as processing a new block begins (and part of the work
|
|
is done concurrently)
|
|
|
|
- json (de)serialization can now optionally use the Rust-based
|
|
:code:`orjson` library (via the :code:`orjson` pip extra), replacing the
|
|
previous :code:`ujson` and :code:`rapidjson` extras.
|
|
|
|
* Dockerfiles: the existing Dockerfile was updated and cleaned up a bit, and it serves
|
|
as a simple minimal example to show how to run ElectrumX. There is now also a second Dockerfile
|
|
that sets up a free-threaded python for a beefy server to utilise the above-mentioned performance gains.
|
|
See them in :code:`contrib/`. (also see the new runtime logline "Python GIL enabled" to verify effect)
|
|
|
|
* protocol:
|
|
- new: implement electrum protocol version 1.7 (`spesmilo/electrum-protocol#2`_).
|
|
The min supported protocol version remains 1.4, the max is now 1.7.
|
|
|
|
* LocalRPC: new command: "inspect_session" (`spesmilo/electrumx#361`_).
|
|
|
|
|
|
Version 1.20.0 (03 June 2026)
|
|
=============================
|
|
|
|
Small fixes and general maintenance.
|
|
|
|
After this release, the master branch will move towards a 2.0 release, which will require
|
|
a resync from genesis. So for a while, master might be less stable than usual.
|
|
|
|
* fix: lib/tx.py: vsize calculation was off by 6-8 vbytes (`spesmilo/electrumx#328`_).
|
|
Added tests. The discrepancy was externally observable via the `mempool.get_fee_histogram` RPC.
|
|
* fix: don't get stuck during shutdown waiting for SessionManager to stop (`spesmilo/electrumx#339`_)
|
|
* fix: protocol: name of arg for broadcast_package RPC: tx_package->raw_txs (`c9b72e7e`_)
|
|
* changed: peer discovery: allow short chain splits (`spesmilo/electrumx#351`_)
|
|
* changed: rm 'attrs' as a direct dependency, use stdlib `dataclasses` instead (`spesmilo/electrumx#345`_)
|
|
* new: daemon: check early "txindex" is enabled for bitcoind, error if missing (`spesmilo/electrumx#349`_)
|
|
* new: coins: add Bitcoin mutinynet (`spesmilo/electrumx#352`_)
|
|
* maintenance: coins: some clean-up (`spesmilo/electrumx#344`_, `spesmilo/electrumx#348`_, ...)
|
|
* maintenance: moved CI from Cirrus CI to Github Actions (`spesmilo/electrumx#340`_)
|
|
|
|
(We also made some changes to make RocksDB practical and nicer to use, but if you currently use LevelDB,
|
|
maybe consider waiting for 2.0 before you resync the DB)
|
|
|
|
|
|
Version 1.19.0 (11 Nov 2025)
|
|
=============================
|
|
|
|
* protocol:
|
|
- new: implement electrum protocol version 1.6 (`spesmilo/electrumx#317`_, ...)
|
|
(`spesmilo/electrum-protocol#6`_).
|
|
The min supported protocol version remains 1.4, the max is now 1.6.
|
|
* coins:
|
|
- changed: for `COIN=Bitcoin`, there is now a min required bitcoind version:
|
|
Bitcoin Core 28.0 (or Knots 28) (`spesmilo/electrumx#316`_).
|
|
This is due to protocol 1.6 requiring a bitcoind with working `submitpackage` RPC.
|
|
* security:
|
|
- fix DOS vector: if MAX_SESSIONS was reached, when using python 3.12+, the server
|
|
stopped accepting new incoming sessions until full-restart (`spesmilo/electrumx#312`_)
|
|
* session:
|
|
- changed: add warmup budget to PaddedRSTransport (`spesmilo/electrumx#323`_):
|
|
this is a small relaxation of the traffic analysis countermeasures added in 1.18,
|
|
where the first 1024 bytes we send are now exempt from buffering (and hence delays)
|
|
- fix ReplyAndDisconnect for PaddedRSTransport: flush message buffer (`spesmilo/electrumx#322`_)
|
|
* env:
|
|
- rm DROP_CLIENT_UNKNOWN opt-in env var: this behaviour is now mandated by protocol 1.6
|
|
and we just always enforce it (~small breaking change, affected clients would have
|
|
already been considered misbehaving)
|
|
* misc:
|
|
- new: try to raise `ulimit -n` open file limit automatically at startup
|
|
(`spesmilo/electrumx#326`_)
|
|
|
|
|
|
Version 1.18.0 (14 June 2025)
|
|
=============================
|
|
|
|
* protocol:
|
|
- add basic countermeasures against traffic analysis by padding the jsonrpc payload
|
|
with whitespaces to have ~uniform-size TCP packets, and by artificially delaying
|
|
sending messages a bit. (`spesmilo/electrumx#301`_)
|
|
* dependencies:
|
|
- bump required aiorpcx to >=0.25.0,<0.26
|
|
|
|
|
|
Version 1.17.0 (16 Apr 2025)
|
|
============================
|
|
|
|
Long time no see!
|
|
|
|
* coins:
|
|
- rm support for legacy coin name "BitcoinSegwit" (`ca59151d`_)
|
|
(users should just change their config files to :code:`COIN=Bitcoin`)
|
|
- add support for Bitcoin Signet (`spesmilo/electrumx#122`_)
|
|
- add support for Bitcoin Testnet4 (`spesmilo/electrumx#273`_)
|
|
* dependencies:
|
|
- bump required python to >=3.10
|
|
- bump required aiorpcx to >=0.23.0,<0.25
|
|
- rm "pylru" dep, instead bundle stripped-down "cachetools" (`spesmilo/electrumx#248`_)
|
|
* session: log IP address of excessive resusage sessions (`spesmilo/electrumx#75`_)
|
|
* robustness:
|
|
- session: more robust session handling (`25339328`_, `8198ab99`_)
|
|
- daemon: catch RPC_PARSE_ERROR from bitcoind and simply retry (`31489365`_)
|
|
* env:
|
|
- add MAX_RECV environment variable (`a0d3053f`_)
|
|
- increase default for MAX_SEND (`2969ab11`_)
|
|
* protocol: increase resolution of :code:`mempool.get_fee_histogram` (`265a5a87`_)
|
|
* LocalRPC:
|
|
- add --timeout arg (`5f4dd2cd`_)
|
|
- add commands to help debug memory leaks (`f5582b29`_)
|
|
* build/maintenance:
|
|
- add scripts for reproducible build (`0ba87447`_)
|
|
- migrate from setup.py to pyproject.toml
|
|
- refactor file layout flat->src (`spesmilo/electrumx#298`_)
|
|
* some internal refactors in preparation for future changes
|
|
|
|
|
|
Version 1.16.0 (10 Dec 2020)
|
|
============================
|
|
|
|
Note: this is the first release since forking from kyuupichan/electrumx.
|
|
kyuupichan has the :code:`electrumx` name on PyPI, so we needed a new name there.
|
|
We are using the `e-x <https://pypi.org/project/e-x/>`_ name on PyPI, so you can
|
|
install this package via e.g. :code:`pip install e-x`.
|
|
|
|
* security: a vulnerability has been fixed that allowed a remote attacker to
|
|
crash electrumx if peer discovery was enabled (`#22`_)
|
|
* fixed some peer-discovery-related bugs (e.g. `#35`_)
|
|
* ENV: when using Bitcoin, the COIN ENV var can now be set to :code:`Bitcoin`.
|
|
For compatibility, using :code:`BitcoinSegwit` will also keep working.
|
|
(`#5`_)
|
|
* session resource limits: made more useful in general. connection-time-based
|
|
grouping has been removed (`#70`_). Disconnects of over-limit sessions happen
|
|
sooner (`4b3f6510`_). Subnet sizes for IP-based grouping can now be
|
|
configured (`a61136c5`_).
|
|
* protocol: :code:`mempool.get_fee_histogram` now returns fee rates with
|
|
0.1 sat/byte resolution instead of 1 sat/byte, and the compact histogram
|
|
is calculated differently. (`#67`_)
|
|
* performance: bitcoind is now queried less frequently as estimatefee,
|
|
relayfee, and server.banner requests are now cached (`#24`_)
|
|
* performance: json ser/deser is now abstracted away and the :code:`ujson` and
|
|
:code:`rapidjson` exras can be used for somewhat faster block processing.
|
|
(`#11`_)
|
|
* multiple other small performance improvements
|
|
|
|
|
|
Version 1.15.0 (27 May 2020)
|
|
============================
|
|
|
|
* switch to 5-byte txnums to handle larger blockchains. Upgrade DBs during restart.
|
|
* accurate clearing of stale caches
|
|
* coin additions / updates: NavCoin + Hush + VersusCoin + Zero (cipig), DashRegtest (colmenero),
|
|
Quebecoin (morinpa), Primecoin (Sunny King), multiple (Panagiotis David), RVN (standard-error),
|
|
Sumcoin
|
|
* other: Jeremy Rand, Jin Eguchi, ddude, Jonathan Cross, Carsen Klock, cipig
|
|
|
|
|
|
Version 1.14.0 (19 Jan 2020)
|
|
============================
|
|
|
|
* require Python 3.7
|
|
* support for Bitcoin SV Genesis activation
|
|
* DB upgrade to allow for larger transactions. Your DB will automatically upgrade when
|
|
starting, the upgrade should take approximately 15 mintues.
|
|
* fix server shutdown process
|
|
* fix cache race condition (issue `#909`_)
|
|
* faster initial sync
|
|
* coin additions / updates: Emercoin (yakimka), Feathercoin (wellenreiter01),
|
|
Peercoin (peerchemist), Namecoin (JeremyRand), Zcoin (a-bezrukov), Simplicity,
|
|
Mice (ComputerCraftr), Sibcoin testnet (TriKriSta), Odin (Manbearpixel),
|
|
* other: h2o10, osagga, Sombernight, breign, pedr0-fr, wingsuit
|
|
|
|
Version 1.13.0 (26 Sep 2019)
|
|
============================
|
|
|
|
* daemon: use a single connection for all requests rather than a connection per request.
|
|
Distinguish handling of JSON and HTTP errors
|
|
* recognise OP_FALSE OP_RETURN scripts as unspendable
|
|
* peers - attempt to bind to correct local IP address
|
|
* improve name support (domob1812)
|
|
* coin additions / updates: BitZeny (y-chan), ZCoin (a-bezrukov), Emercoin (yakimka),
|
|
BSV (Roger Taylor), Bellcoin (streetcrypto7), Ritocoin (traysi), BTC (Sombernight),
|
|
PIVX (mrcarlanthony), Monacoin (wakiyamap)), NamecoinRegtest (JeremyRand), Axe (ddude1),
|
|
Xaya (domob1812), GZRO (MrNaif2018), Ravencoin (standard-error)
|
|
* other: gits7r
|
|
|
|
Version 1.12.0 (13 May 2019)
|
|
============================
|
|
|
|
* require aiorpcX 0.18.1. This introduces websocket support. The environment variables
|
|
changed accordingly; see :envvar:`SERVICES` and :envvar:`REPORT_SERVICES`.
|
|
* work around bug in recent versions of uvloop
|
|
* aiorpcX upgrade fixes from Shane M
|
|
* coin additions / updates: BitcoinSV, Bolivarcoin (Jose Luis Estevez), BTC Testnet (ghost43),
|
|
Odin (Pixxl)
|
|
|
|
Version 1.11.0 (18 Apr 2019)
|
|
============================
|
|
|
|
* require aiorpcX 0.15.x
|
|
* require aiohttp 3.3 or higher; earlier versions had a problematic bug
|
|
* add :envvar:`REQUEST_TIMEOUT` and :envvar:`LOG_LEVEL` environment variables
|
|
* mark 4 old environment variables obsolete. ElectrumX won't start until they are removed
|
|
* getinfo local RPC cleaned up and shows more stats
|
|
* miscellaneous fixes and improvements
|
|
* more efficient handling of some RPC methods, particularly
|
|
:func:`blockchain.transaction.get_merkle`
|
|
* coin additions / updates: BitcoinSV scaling testnet (Roger Taylor), Dash (zebra lucky),
|
|
* issues resolved: `#566`_, `#731`_, `#795`_
|
|
|
|
Version 1.10.1 (13 Apr 2019)
|
|
============================
|
|
|
|
* introduce per-request costing. See environment variables documentation for new
|
|
variables :envvar:`COST_SOFT_LIMIT`, :envvar:`COST_HARD_LIMIT`, :envvar:`REQUEST_SLEEP`,
|
|
:envvar:`INITIAL_CONCURRENT`, :envvar:`BANDWIDTH_UNIT_COST`. Sessions are placed in groups
|
|
with which they share some of their costs. Prior cost is remembered across reconnects.
|
|
* require aiorpcX 0.13.5 for better concurrency handling
|
|
* require clients use protocol 1.4 or higher
|
|
* handle transaction.get_merkle requests more efficiently (ghost43)
|
|
* Windows support (sancoder)
|
|
* peers improvements (ghost43)
|
|
* report mempool and block sizes in logs
|
|
* electrumx_rpc: timeout raised to 30s, fix session request counts
|
|
* other tweaks and improvements by Bjorge Dijkstra, ghost43, peleion,
|
|
* coin additions / updates: ECA (Jenova7), ECCoin (smogm), GXX (DEVCØN), BZX (2INFINITY),
|
|
DeepOnion (Liam Alford), CivX / EXOS (turcol)
|
|
|
|
Version 1.10.0 (15 Mar 2019)
|
|
============================
|
|
|
|
* extra countermeasures to limit BTC phishing effectiveness (ghost43)
|
|
* peers: mark blacklisted peers bad; force retry blacklisted peers (ghost43)
|
|
* coin additions / updates: Monacoin (wakiyamap), Sparks (Mircea Rila), ColossusXT,
|
|
Polis, MNPCoin, Zcoin, GINCoin (cronos), Grosetlcoin (gruve-p), Dash (konez2k),
|
|
Bitsend (David), Ravencoin (standard-error), Onixcoin (Jose Estevez), SnowGem
|
|
* coin removals: Gobyte, Moneci (cronos)
|
|
* minor tweaks by d42
|
|
* issues fixed `#660`_ - unclean shutdowns during initial sync
|
|
|
|
Version 1.9.5 (08 Feb 2019)
|
|
===========================
|
|
|
|
* server blacklist logic (ecdsa)
|
|
* require aiorpcX 0.10.4
|
|
* remove dead wallet code
|
|
* fix `#727`_ - not listing same peer twice
|
|
|
|
Version 1.9.4 (07 Feb 2019)
|
|
===========================
|
|
|
|
* require aiorpcX 0.10.3
|
|
* fix `#713`_
|
|
|
|
Version 1.9.3 (05 Feb 2019)
|
|
===========================
|
|
|
|
* ignore potential sybil peers
|
|
* coin additions / updates: BitcoinCashABC (cculianu), Monacoin (wakiyamap)
|
|
|
|
Version 1.9.2 (03 Feb 2019)
|
|
===========================
|
|
|
|
* restore protocol version 1.2 and send a warning for old BTC Electrum clients that they
|
|
need to upgrade. This is an attempt to protect users of old versions of Electrum from
|
|
the ongoing phishing attacks
|
|
* increase default MAX_SEND for AuxPow Chains. Truncate AuxPow for block heights covered
|
|
by a checkpoint. (jeremyrand)
|
|
* coin additions / updates: NMC (jeremyrand), Dash (zebra-lucky), PeerCoin (peerchemist),
|
|
BCH testnet (Mark Lundeberg), Unitus (ChekaZ)
|
|
* tighter RPC param checking (ghost43)
|
|
|
|
Version 1.9.1 (11 Jan 2019)
|
|
===========================
|
|
|
|
* fix `#684`_
|
|
|
|
Version 1.9.0 (10 Jan 2019)
|
|
===========================
|
|
|
|
* minimum protocol version is now 1.4
|
|
* coin additions / updates: BitcoinSV, SmartCash (rc125), NIX (phamels), Minexcoin (joesixpack),
|
|
BitcoinABC (mblunderburg), Dash (zebra-lucky), BitcoinABCRegtest (ezegom), AXE (slowdive),
|
|
NOR (flo071), BitcoinPlus (bushsolo), Myriadcoin (cryptapus), Trezarcoin (ChekaZ),
|
|
Bitcoin Diamond (John Shine),
|
|
* close `#554`_, `#653`_, `#655`_
|
|
* other minor tweaks (Michael Schmoock, Michael Taborsky)
|
|
|
|
|
|
Original author of ElectrumX:
|
|
|
|
**Neil Booth** kyuupichan@gmail.com https://github.com/kyuupichan
|
|
|
|
This fork maintained by:
|
|
|
|
**Electrum developers** electrumdev@gmail.com https://github.com/spesmilo
|
|
|
|
|
|
.. _#554: https://github.com/kyuupichan/electrumx/issues/554
|
|
.. _#566: https://github.com/kyuupichan/electrumx/issues/566
|
|
.. _#653: https://github.com/kyuupichan/electrumx/issues/653
|
|
.. _#655: https://github.com/kyuupichan/electrumx/issues/655
|
|
.. _#660: https://github.com/kyuupichan/electrumx/issues/660
|
|
.. _#684: https://github.com/kyuupichan/electrumx/issues/684
|
|
.. _#713: https://github.com/kyuupichan/electrumx/issues/713
|
|
.. _#727: https://github.com/kyuupichan/electrumx/issues/727
|
|
.. _#731: https://github.com/kyuupichan/electrumx/issues/731
|
|
.. _#795: https://github.com/kyuupichan/electrumx/issues/795
|
|
.. _#909: https://github.com/kyuupichan/electrumx/issues/909
|
|
|
|
|
|
.. _#5: https://github.com/spesmilo/electrumx/pull/5
|
|
.. _#11: https://github.com/spesmilo/electrumx/pull/11
|
|
.. _#22: https://github.com/spesmilo/electrumx/issues/22
|
|
.. _#24: https://github.com/spesmilo/electrumx/pull/24
|
|
.. _#35: https://github.com/spesmilo/electrumx/pull/35
|
|
.. _#67: https://github.com/spesmilo/electrumx/pull/67
|
|
.. _#70: https://github.com/spesmilo/electrumx/pull/70
|
|
.. _spesmilo/electrumx#75: https://github.com/spesmilo/electrumx/pull/75
|
|
.. _spesmilo/electrumx#88: https://github.com/spesmilo/electrumx/issues/88
|
|
.. _spesmilo/electrumx#122: https://github.com/spesmilo/electrumx/pull/122
|
|
.. _spesmilo/electrumx#248: https://github.com/spesmilo/electrumx/pull/248
|
|
.. _spesmilo/electrumx#273: https://github.com/spesmilo/electrumx/pull/273
|
|
.. _spesmilo/electrumx#298: https://github.com/spesmilo/electrumx/pull/298
|
|
.. _spesmilo/electrumx#301: https://github.com/spesmilo/electrumx/pull/301
|
|
.. _spesmilo/electrumx#312: https://github.com/spesmilo/electrumx/pull/312
|
|
.. _spesmilo/electrumx#316: https://github.com/spesmilo/electrumx/pull/316
|
|
.. _spesmilo/electrumx#317: https://github.com/spesmilo/electrumx/pull/317
|
|
.. _spesmilo/electrumx#322: https://github.com/spesmilo/electrumx/pull/322
|
|
.. _spesmilo/electrumx#323: https://github.com/spesmilo/electrumx/pull/323
|
|
.. _spesmilo/electrumx#326: https://github.com/spesmilo/electrumx/pull/326
|
|
.. _spesmilo/electrumx#328: https://github.com/spesmilo/electrumx/pull/328
|
|
.. _spesmilo/electrumx#339: https://github.com/spesmilo/electrumx/pull/339
|
|
.. _spesmilo/electrumx#340: https://github.com/spesmilo/electrumx/pull/340
|
|
.. _spesmilo/electrumx#344: https://github.com/spesmilo/electrumx/pull/344
|
|
.. _spesmilo/electrumx#345: https://github.com/spesmilo/electrumx/pull/345
|
|
.. _spesmilo/electrumx#347: https://github.com/spesmilo/electrumx/pull/347
|
|
.. _spesmilo/electrumx#348: https://github.com/spesmilo/electrumx/pull/348
|
|
.. _spesmilo/electrumx#349: https://github.com/spesmilo/electrumx/pull/349
|
|
.. _spesmilo/electrumx#351: https://github.com/spesmilo/electrumx/pull/351
|
|
.. _spesmilo/electrumx#352: https://github.com/spesmilo/electrumx/pull/352
|
|
.. _spesmilo/electrumx#361: https://github.com/spesmilo/electrumx/pull/361
|
|
.. _spesmilo/electrumx#369: https://github.com/spesmilo/electrumx/pull/369
|
|
|
|
|
|
.. _4b3f6510: https://github.com/spesmilo/electrumx/commit/4b3f6510e94670a013c1abe6247cdd2b0e7e6f8c
|
|
.. _a61136c5: https://github.com/spesmilo/electrumx/commit/a61136c596d6a0290a6be9d21fb7c095c3cea21e
|
|
.. _ca59151d: https://github.com/spesmilo/electrumx/commit/ca59151d7365aabd2394fb39aac1faa25949b49d
|
|
.. _25339328: https://github.com/spesmilo/electrumx/commit/25339328a7468235071d152f728b214df10d4c56
|
|
.. _8198ab99: https://github.com/spesmilo/electrumx/commit/8198ab99603a7e74083b3569c15dad13850c721e
|
|
.. _31489365: https://github.com/spesmilo/electrumx/commit/314893655a7cc0bfcc216b07900fa77b5f66e148
|
|
.. _a0d3053f: https://github.com/spesmilo/electrumx/commit/a0d3053f60074264b54b3ef7583f2600f4b73ead
|
|
.. _2969ab11: https://github.com/spesmilo/electrumx/commit/2969ab110412bebddc3f3e815467fb59538b613d
|
|
.. _265a5a87: https://github.com/spesmilo/electrumx/commit/265a5a87b8ad01f739049c0b1e80923aab318f58
|
|
.. _5f4dd2cd: https://github.com/spesmilo/electrumx/commit/5f4dd2cdb414464484407affbbaae6b7407696cb
|
|
.. _f5582b29: https://github.com/spesmilo/electrumx/commit/f5582b29792625e8cca7cf137a6718c2520bb9cb
|
|
.. _0ba87447: https://github.com/spesmilo/electrumx/commit/0ba87447cb293cfc4a8a26c1c27842b95666875a
|
|
.. _c9b72e7e: https://github.com/spesmilo/electrumx/commit/c9b72e7ea76bfb706b2df3e90c739116bf49678d
|
|
|
|
|
|
.. _spesmilo/electrum-protocol#2: https://github.com/spesmilo/electrum-protocol/pull/2
|
|
.. _spesmilo/electrum-protocol#6: https://github.com/spesmilo/electrum-protocol/pull/6
|
|
|
|
.. _free-threaded python: https://docs.python.org/3/howto/free-threading-python.html
|
|
|