Connectrum
----------
Stratum (electrum-server) Client Protocol library
=================================================
Uses python3 to be a client to the Electrum server network. It makes heavy use of
`asyncio` module and newer Python 3 keywords such as `await` and `async`.
For non-server applications, you can probably find all you need
already in the standard Electrum code and command line.
Features
========
- can connect via Tor, SSL, proxied or directly
- filter lists of peers by protocol, `.onion` name
- manage lists of Electrum servers in simple JSON files.
- fully asynchronous design, so can connect to multiple at once
- a number of nearly-useful examples provided
- any call to methods `blockchain.address.*` is converted into the more
modern equivilent `blockchain.scripthash.*` transparently. Requires pycoin module.
Examples
========
In `examples` you will find a number little example programs.
- `cli.py` send single commands, plan is to make this an interactive REPL
- `subscribe.py` stream changes/events for an address or blocks.
- `explorer.py` implements a simplistic block explorer website
- `spider.py` find all Electrum servers recursively, read/write results to JSON
Version History
===============
- **0.8.2** Indicate we support protocol version 1.4.2, `StratumClient.protocol_version` now string
- **0.8.1** Handle protocol version reporting correctly, use 'ping' msg. (Says we are 1.4)
- **0.8.0** Support for ElectrumX protocol 1.4 with some helpers to restore useful functions.
- **0.7.4** Add `actual_connection` atrribute on `StratumClient` with some key details
- **0.7.3** Not sure
- **0.7.2** Bugfix: port numbers vs. protocols
- **0.7.1** Python 2.6 compat fix
- **0.7.0** Reconnect broken server connections automatically (after first connect).
- **0.6.0** Various pull requests from other devs integrated. Thanks to @devrandom, @ysangkok!
- **0.5.3** Documents the build/release process (no functional changes).
- **0.5.2** Make aiosocks and bottom modules optional at runtime (thanks to @BioMike)
- **0.5.1** Minor bug fixes
- **0.5.0** First public release.
TODO List
=========
- be more robust about failed servers, reconnect and handle it.
- connect to a few (3?) servers and compare top block and response times; pick best
- some sort of persistant server list that can be updated as we run
- type checking of parameters sent to server (maybe)?
- lots of test code
- an example that finds servers that do SSL with self-signed certificate
- an example that fingerprints servers to learn what codebase they use
- some bitcoin-specific code that all clients would need; like block header to hash
Raw data
{
"_id": null,
"home_page": "https://github.com/coinkite/connectrum",
"name": "connectrum",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6.0",
"maintainer_email": null,
"keywords": "electrum bitcoin asnycio client",
"author": "Peter Gray",
"author_email": "peter@coinkite.com",
"download_url": "https://files.pythonhosted.org/packages/60/84/d0c7649bddcfbb4fa1f254e8d0ed141a62d2117d583ba73a207ed15d5904/connectrum-0.8.2.tar.gz",
"platform": "any",
"description": "Connectrum\n----------\n\nStratum (electrum-server) Client Protocol library\n=================================================\n\nUses python3 to be a client to the Electrum server network. It makes heavy use of\n`asyncio` module and newer Python 3 keywords such as `await` and `async`.\n\nFor non-server applications, you can probably find all you need\nalready in the standard Electrum code and command line.\n\nFeatures\n========\n\n- can connect via Tor, SSL, proxied or directly\n- filter lists of peers by protocol, `.onion` name\n- manage lists of Electrum servers in simple JSON files.\n- fully asynchronous design, so can connect to multiple at once\n- a number of nearly-useful examples provided\n- any call to methods `blockchain.address.*` is converted into the more\n modern equivilent `blockchain.scripthash.*` transparently. Requires pycoin module.\n\nExamples\n========\n\nIn `examples` you will find a number little example programs.\n\n- `cli.py` send single commands, plan is to make this an interactive REPL\n- `subscribe.py` stream changes/events for an address or blocks.\n- `explorer.py` implements a simplistic block explorer website\n- `spider.py` find all Electrum servers recursively, read/write results to JSON\n\nVersion History\n===============\n\n- **0.8.2** Indicate we support protocol version 1.4.2, `StratumClient.protocol_version` now string\n- **0.8.1** Handle protocol version reporting correctly, use 'ping' msg. (Says we are 1.4)\n- **0.8.0** Support for ElectrumX protocol 1.4 with some helpers to restore useful functions.\n- **0.7.4** Add `actual_connection` atrribute on `StratumClient` with some key details\n- **0.7.3** Not sure\n- **0.7.2** Bugfix: port numbers vs. protocols\n- **0.7.1** Python 2.6 compat fix\n- **0.7.0** Reconnect broken server connections automatically (after first connect).\n- **0.6.0** Various pull requests from other devs integrated. Thanks to @devrandom, @ysangkok!\n- **0.5.3** Documents the build/release process (no functional changes).\n- **0.5.2** Make aiosocks and bottom modules optional at runtime (thanks to @BioMike)\n- **0.5.1** Minor bug fixes\n- **0.5.0** First public release.\n\n\nTODO List\n=========\n\n- be more robust about failed servers, reconnect and handle it.\n- connect to a few (3?) servers and compare top block and response times; pick best\n- some sort of persistant server list that can be updated as we run\n- type checking of parameters sent to server (maybe)?\n- lots of test code\n- an example that finds servers that do SSL with self-signed certificate\n- an example that fingerprints servers to learn what codebase they use\n- some bitcoin-specific code that all clients would need; like block header to hash\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "asyncio-based Electrum client library",
"version": "0.8.2",
"project_urls": {
"Homepage": "https://github.com/coinkite/connectrum"
},
"split_keywords": [
"electrum",
"bitcoin",
"asnycio",
"client"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6084d0c7649bddcfbb4fa1f254e8d0ed141a62d2117d583ba73a207ed15d5904",
"md5": "3687ace9457fbfd19ba82c0b0d19919b",
"sha256": "71ec8c55eae9c6abfcd62f726a5640974508461628121987e93131d466358651"
},
"downloads": -1,
"filename": "connectrum-0.8.2.tar.gz",
"has_sig": false,
"md5_digest": "3687ace9457fbfd19ba82c0b0d19919b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6.0",
"size": 19454,
"upload_time": "2025-07-09T15:29:35",
"upload_time_iso_8601": "2025-07-09T15:29:35.358832Z",
"url": "https://files.pythonhosted.org/packages/60/84/d0c7649bddcfbb4fa1f254e8d0ed141a62d2117d583ba73a207ed15d5904/connectrum-0.8.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-09 15:29:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "coinkite",
"github_project": "connectrum",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "connectrum"
}