Skip to content
Electrum Bitcoin Wallet
Python Shell Dockerfile NSIS Java Makefile
Branch: master
Clone or download
SomberNight ecc: also use libsecp256k1 for point addition
time taken to add points changes to around 35% of what it was with python-ecdsa

-----

# benchmark runs before:
> python3.7-64 ..\wspace\201909_libsecp256k1_point_addition\bench.py
time taken: 3.7693 seconds
> python3.7-64 ..\wspace\201909_libsecp256k1_point_addition\bench.py
time taken: 3.8123 seconds
> python3.7-64 ..\wspace\201909_libsecp256k1_point_addition\bench.py
time taken: 3.7937 seconds

# benchmark runs after:
> python3.7-64 ..\wspace\201909_libsecp256k1_point_addition\bench.py
time taken: 1.3127 seconds
> python3.7-64 ..\wspace\201909_libsecp256k1_point_addition\bench.py
time taken: 1.3000 seconds
> python3.7-64 ..\wspace\201909_libsecp256k1_point_addition\bench.py
time taken: 1.3128 seconds

-----

# benchmark script:

import os
import time
from electrum.ecc import generator
from electrum.crypto import sha256

rand_bytes = os.urandom(32)
#rand_bytes = bytes.fromhex('d3d88983b91ee6dfd546ccf89b9a1ffb23b01bf2eef322c2808cb3d951a3c116')
point_pairs = []
for i in range(30000):
    rand_bytes = sha256(rand_bytes)
    rand_int = int.from_bytes(rand_bytes, "big")
    a = generator() * rand_int
    rand_bytes = sha256(rand_bytes)
    rand_int = int.from_bytes(rand_bytes, "big")
    b = generator() * rand_int
    point_pairs.append((a,b))

t0 = time.time()
for a, b in point_pairs:
    c = a + b
t = time.time() - t0
print(f"time taken: {t:.4f} seconds")
Latest commit 65d896b Sep 16, 2019

README.rst

Electrum - Lightweight Bitcoin client

Licence: MIT Licence
Author: Thomas Voegtlin
Language: Python (>= 3.6)
Homepage: https://electrum.org/
Build Status Test coverage statistics Help translate Electrum online

Getting started

Electrum is a pure python application. If you want to use the Qt interface, install the Qt dependencies:

sudo apt-get install python3-pyqt5

If you downloaded the official package (tar.gz), you can run Electrum from its root directory without installing it on your system; all the 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 -m pip install .[fast]

This will download and install the Python dependencies used by Electrum instead of using the 'packages' directory. The 'fast' extra contains some optional dependencies that we think are often useful but they are not strictly needed.

If you cloned the git repository, you need to compile extra files before you can run Electrum. Read the next section, "Development Version".

Development version

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 .[fast]

Compile the protobuf description file:

sudo apt-get install protobuf-compiler
protoc --proto_path=electrum --python_out=electrum electrum/paymentrequest.proto

Create translations (optional):

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

Creating Binaries

Linux (tarball)

See contrib/build-linux/README.md.

Linux (AppImage)

See contrib/build-linux/appimage/README.md.

Mac OS X / macOS

See contrib/osx/README.md.

Windows

See contrib/build-wine/README.md.

Android

See electrum/gui/kivy/Readme.md.

You can’t perform that action at this time.