connectrum


Nameconnectrum JSON
Version 0.8.2 PyPI version JSON
download
home_pagehttps://github.com/coinkite/connectrum
Summaryasyncio-based Electrum client library
upload_time2025-07-09 15:29:35
maintainerNone
docs_urlNone
authorPeter Gray
requires_python>=3.6.0
licenseMIT
keywords electrum bitcoin asnycio client
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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"
}
        
Elapsed time: 0.55776s