Giter Site home page Giter Site logo

Board Status \ Help translate ElectrumSV online

ElectrumSV - Lightweight Bitcoin SV client

Licence: MIT
Maintainers: Neil Booth, Roger Taylor, AustEcon
Project Lead: Roger Taylor
Language: Python (requires Python 3.9 later than 3.9.13. 3.10 and 3.11 not officially supported)
Homepage: https://electrumsv.io/

Getting started on Linux/MacOS

ElectrumSV is a Python-based application forked from Electrum Core.

If you are running from the Github repository, you are advised to use the latest release branch, which at this time is releases/1.3. The develop branch is used for the latest development changes and is not guaranteed to be as stable, or to have guaranteed long term support for some of the more advanced features we may have added and later remove. The master branch is frozen, out of date and will be overwritten by develop evenutally.

Ensuring you have at least Python 3.9.13

The ElectrumSV builds are created using Python 3.9.13 because these are the last release for Python 3.9 that the Python development team do binary releases for. This is the minimum allowed version of Python to use, we explicitly rule out running against earlier versions and we cannot guarantee later versions like 3.10 and 3.11 will work reliably due to breaking changes by the Python language developers.

You need to ensure you have Python 3.9.13 or later, the following command should look like this:

$ python3 --version
Python 3.9.16

You can use pyenv to install Python 3.9.16. First install pyenv:

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

Edit your .bashrc file as described, and then ensure the changes are put into effect:

$ source ~/.profile

Now you can install Python 3.9.16 using pyenv:

$ pyenv install 3.9.16

If you encounter errors during that process, you can refer to the pyenv common problems.

At this point, you can make Python 3.9.16 the default Python on your computer:

$ pyenv global 3.9.16

And you can check that your python3 version is indeed 3.9.16, by confirming the following command now looks like this:

$ python3 --version
Python 3.9.16

Ensuring you have at least Sqlite 3.31.1

ElectrumSV MacOS and Windows builds come with at least Sqlite version 3.31.1, but there are no Linux builds, and both Linux and MacOS users may wish to upgrade or make available the Sqlite version on their computer.

MacOS:

$ brew upgrade sqlite3
$ python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
3.31.1

Linux:

$ python3 -m pip install -U pysqlite3-binary
$ python3 -c "import pysqlite3; print(pysqlite3.sqlite_version)"
3.31.1

You may see a different version displayed than 3.31.1, but as long as it is higher, this is fine.

Installing other dependencies

If you are running ElectrumSV from source, first install the dependencies:

MacOS:

brew install pyqt5
pip3 install --user -r contrib/deterministic-build/macos-py3.9-requirements-electrumsv.txt

Linux:

sudo apt-get install python3-pyqt5
pip3 install wheel
pip3 install cython==0.29.36
pip3 install --user -r contrib/deterministic-build/linux-py3.9-requirements-electrumsv.txt

Your should now be able to run ElectrumSV:

MacOS:

python3 electrum-sv

Linux:

python3 electrum-sv

You can also install ElectrumSV on your system. In order to do so, run the following command:

pip3 install . --no-dependencies

Problem Solving

If you choose to use Linux, you introduce complexity and uncertainty into the process. It is not possible to know all the unique choices you have made regarding it. The following tips may help work around problems you encounter.

Errors relating to "wheels"

If you encounter problems referring to wheels, make sure you have installed the wheel package:

pip3 install --user wheel

Errors relating to "libusb" installing the pip3 requirements

Install the following:

sudo apt-get install libusb-1.0.0-dev libudev-dev

Errors relating to "Python.h"

If you encounter problems referring to "Python.h", first check your Python version:

python3 --version

If it says "3.9", then install the following:

sudo apt install python3.9-dev

If it says a later version of Python, you should be able to figure out what to do.

Scanning QR codes

If you need to enable QR code scanning functionality, install the following:

sudo apt-get install zbar-tools

Getting started on Windows

The easiest way to run ElectrumSV on Windows, is to obtain an executable for the latest version from our website. This Git repository has a build-hashes.txt which should contain SHA-256 hashes for all our downloads. You can confirm that you have downloaded a valid file, by comparing it's SHA-256 hash to the hash we provide for the same file name.

You can also run from the Git repository directly, which is useful if you wish to customise or help us develop ElectrumSV.

You need to be sure that you are using a version of Python either 3.9.13 or higher. And that the version you are using has a version of Sqlite either 3.31.1 or higher. If you are for instance using a version of Python 3.8 that has a lower version of Sqlite, then update your Python 3.8 installation.

To run ElectrumSV from its top-level directory, first install the core dependencies:

py -3.9 -m pip install --user -r contrib/deterministic-build/win64-py3.9-requirements-electrumsv.txt

Then invoke it as so:

py -3.9 electrum-sv

You can also install ElectrumSV on your system. This will download and install most dependencies used by ElectrumSV. This is useful if you with to use the electrumsv Python library, perhaps for Bitcoin application development using ElectrumSV as a wallet server.

In order to do so, run these commands:

pip3 install . --no-dependencies

Extra development notes

Check out the code from Github:

git clone https://github.com/ElectrumSV/ElectrumSV
cd ElectrumSV

Run the pip installs (this should install dependencies):

pip3 install .

Create translations (optional):

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

Running unit tests (with the pytest package):

pytest electrumsv/tests

Running pylint:

pylint --rcfile=.pylintrc electrum-sv electrumsv

Running mypy:

mypy --config-file mypy.ini --python-version 3.9

Builds

Builds are created automatically for Git commits through the Azure Pipelines CI services which Microsoft and Github kindly make available to us.

The easiest way for you to create builds is to fork the project, and to link it to Azure Pipelines and they should also happen automatically. If you wish to look at the specific code that handles a given part of the build process, these will be referenced below for the various operating systems. To see how these are engaged, refer to the Azure Pipelines YAML files.

Source Archives

Run the following to create the release archives under `dist/`:

./contrib/make_source_archives.py

Mac OS X / macOS

See contrib/osx/.

Windows

See contrib/build-wine/.

ElectrumSV's Projects

bc-lifehash icon bc-lifehash

A beautiful method of hash visualization based on Conway’s Game of Life: reference library in C/C++

bips icon bips

Bitcoin (BSV) Improvement Proposals

bitcoin-sv icon bitcoin-sv

Bitcoin SV (Satoshi Vision) is the original Bitcoin. This Github repository provides open-source software to enable use of Bitcoin SV.

electrumsv-dpp-proxy icon electrumsv-dpp-proxy

This repo has a single purpose: To compile unofficial binaries of the dpp-proxy server for use in the SDK

electrumsv-mapi icon electrumsv-mapi

Provides unofficial binaries for the Bitcoin SV merchant api reference implementation, for use in the ElectrumSV SDK.

electrumsv-node icon electrumsv-node

A convenient way to install and run a Bitcoin node in RegTest mode on 64-bit Windows, MacOS or Linux.

electrumsv-peer-channels icon electrumsv-peer-channels

The sole purpose of this repo is to compile standalone unofficial binaries of peer-channels for use in the ElectrumSV-SDK project

electrumsv-reference-server icon electrumsv-reference-server

This service is designed to contain virtually all of the APIs that ElectrumSV depends on under 'one roof' (except for seed-based restorations).

electrumsv-sdk icon electrumsv-sdk

Libraries to facilitate development and testing of ElectrumSV and applications based on it

go-dpp icon go-dpp

The go-to Bitcoin Direct Payment Protocol Go library.

header-sv-binaries icon header-sv-binaries

The sole purpose of this repo is to compile standalone unofficial binaries of HeaderSV for use in the ElectrumSV-SDK project

headless-sdk icon headless-sdk

Produce bundled portable python distributions ready for executing all SDK components in a fully self-contained way

pyinstaller icon pyinstaller

Freeze (package) Python programs into stand-alone executables

secp256k1 icon secp256k1

Optimized C library for EC operations on curve secp256k1

simple-indexer icon simple-indexer

This is a strictly RegTest-only, pushdata-based blockchain indexer that implements the new APIs that ElectrumSV needs moving forward. No consideration is given to its scalability.

zbar icon zbar

ZBar is an open source software suite for reading bar codes from various sources, including webcams. As its development stopped in 2012, I took the task of keeping it updated with the V4L2 API. This is the main repository for it. There's a clone at at LinuxTV.org, and another one at gitlab.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.