[BREAKGLASS] Append-only mirror of github.com/coldcard/electrum
Go to file
Malcolm Smith 67ae678137
storage/db: use faster JSON encoder settings when wallet is encrypted
The standard json module has an optimized C encoder, but that doesn't
currently support indentation. So if you request indentation, it falls
back on the slower Python encoder.

Readability doesn't matter for encrypted wallets, so this disables
indentation when the wallet is encrypted.

-----

based on b2399b6a3e

For a large encrypted wallet, compare:
before change:
JsonDB.dump 1.3153 sec
zlib.compress 1.281 sec
ECPubkey.encrypt_message 0.1744 sec

after change:
JsonDB.dump 0.5059 sec
zlib.compress 1.3120 sec
ECPubkey.encrypt_message 0.1630 sec

Co-authored-by: SomberNight <somber.night@protonmail.com>
2021-01-06 21:14:56 +01:00
.github follow-up prev commit: use less space 2018-02-23 12:01:01 +01:00
contrib build: don't allow setuptools to sneakily install build-time deps 2020-12-12 02:52:38 +01:00
electrum storage/db: use faster JSON encoder settings when wallet is encrypted 2021-01-06 21:14:56 +01:00
pubkeys Decouple my GPG pubkey from Animazing 2019-05-02 14:23:31 +02:00
.gitignore gitignore: add some more build artifacts 2020-12-08 17:18:01 +01:00
.gitmodules fix submodule 2019-09-04 12:39:02 +02:00
.travis.yml travis: disable macOS build 2020-12-18 19:15:45 +01:00
AUTHORS Add self to AUTHORS 2015-11-09 22:53:27 +09:00
electrum-env tweak electrum-env script 2020-12-11 15:53:33 +01:00
electrum.desktop Give visual feedback while starting (#4997) 2019-01-25 02:33:54 +01:00
LICENCE Relicensing 2016-02-24 10:20:30 +01:00
MANIFEST.in binaries: pip install build requirements first 2020-09-08 16:44:35 +02:00
README.rst dependencies: support and require dnspython 2.0, rm monkey patches 2020-12-08 16:35:29 +01:00
RELEASE-NOTES prepare release 4.0.9 2020-12-18 19:40:39 +01:00
run_electrum kivy: fix some resource path issues 2020-12-10 07:30:31 +01:00
SECURITY.md add SECURITY.md 2019-12-06 21:47:28 +01:00
setup.cfg build: don't allow setuptools to sneakily install build-time deps 2020-12-12 02:52:38 +01:00
setup.py dependencies: support and require dnspython 2.0, rm monkey patches 2020-12-08 16:35:29 +01:00
tox.ini clear up requirements re pycryptodomex 2020-03-04 20:33:02 +01:00

Electrum - Lightweight Bitcoin client
=====================================

::

  Licence: MIT Licence
  Author: Thomas Voegtlin
  Language: Python (>= 3.6)
  Homepage: https://electrum.org/


.. image:: https://travis-ci.org/spesmilo/electrum.svg?branch=master
    :target: https://travis-ci.org/spesmilo/electrum
    :alt: Build Status
.. image:: https://coveralls.io/repos/github/spesmilo/electrum/badge.svg?branch=master
    :target: https://coveralls.io/github/spesmilo/electrum?branch=master
    :alt: Test coverage statistics
.. image:: https://d322cqt584bo4o.cloudfront.net/electrum/localized.svg
    :target: https://crowdin.com/project/electrum
    :alt: Help translate Electrum online





Getting started
===============

(*If you've come here looking to simply run Electrum,* `you may download it here`_.)

.. _you may download it here: https://electrum.org/#download

Electrum itself is pure Python, and so are most of the required dependencies,
but not everything. The following sections describe how to run from source, but here
is a TL;DR::

    sudo apt-get install libsecp256k1-0
    python3 -m pip install --user .[gui,crypto]


Not pure-python dependencies
----------------------------

If you want to use the Qt interface, install the Qt dependencies::

    sudo apt-get install python3-pyqt5

For elliptic curve operations, `libsecp256k1`_ is a required dependency::

    sudo apt-get install libsecp256k1-0

Alternatively, when running from a cloned repository, a script is provided to build
libsecp256k1 yourself::

    sudo apt-get install automake libtool
    ./contrib/make_libsecp256k1.sh

Due to the need for fast symmetric ciphers, `cryptography`_ is required.
Install from your package manager (or from pip)::

    sudo apt-get install python3-cryptography


If you would like hardware wallet support, see `this`_.

.. _libsecp256k1: https://github.com/bitcoin-core/secp256k1
.. _pycryptodomex: https://github.com/Legrandin/pycryptodome
.. _cryptography: https://github.com/pyca/cryptography
.. _this: https://github.com/spesmilo/electrum-docs/blob/master/hardware-linux.rst

Running from tar.gz
-------------------

If you downloaded the official package (tar.gz), you can run
Electrum from its root directory without installing it on your
system; all the pure python dependencies are included in the 'packages'
directory. To run Electrum from its root directory, just do::

    ./run_electrum

You can also install Electrum on your system, by running this command::

    sudo apt-get install python3-setuptools python3-pip
    python3 -m pip install --user .

This will download and install the Python dependencies used by
Electrum instead of using the 'packages' directory.
It will also place an executable named :code:`electrum` in :code:`~/.local/bin`,
so make sure that is on your :code:`PATH` variable.


Development version (git clone)
-------------------------------

Check out the code from GitHub::

    git clone git://github.com/spesmilo/electrum.git
    cd electrum
    git submodule update --init

Run install (this should install dependencies)::

    python3 -m pip install --user -e .


Create translations (optional)::

    sudo apt-get install python-requests gettext
    ./contrib/pull_locale

Finally, to start Electrum::

    ./run_electrum



Creating Binaries
=================

Linux (tarball)
---------------

See :code:`contrib/build-linux/sdist/README.md`.


Linux (AppImage)
----------------

See :code:`contrib/build-linux/appimage/README.md`.


Mac OS X / macOS
----------------

See :code:`contrib/osx/README.md`.


Windows
-------

See :code:`contrib/build-wine/README.md`.


Android
-------

See :code:`contrib/android/Readme.md`.