Qtum is a decentralized blockchain project built on Bitcoin's UTXO model, with support for Ethereum Virtual Machine based smart contracts, and secured by a proof of stake consensus model. It achieves this through the revolutionary Account Abstraction Layer which allows the EVM to communicate with Qtum's Bitcoin-like UTXO blockchain. For more general information about Qtum as well as links to join our community, go to https://qtum.org
Welcome to the Qtum Fastlane Main Network. This is the main network where the tokens hold value and should be guarded very carefully. If you are testing the network, or developing unstable software on Qtum, we highly recommend using either testnet or regtest mode.
The major features of the Qtum network include:
Note: Qtum Core is considered beta software. We make no warranties or guarantees of its security or stability.
These are some resources that might be helpful in understanding Qtum.
Basic usage resources:
Development resources:
General Info about Qtum:
Qtum Core is our primary mainnet wallet. It implements a full node and is capable of storing, validating, and distributing all history of the Qtum network. Qtum Core is considered the reference implementation for the Qtum network.
Qtum Core currently implements the following:
Qtum Core uses a full node model, and thus requires downloading the entire blockchain. If you do not need the entire blockchain, and do not intend on developing smart contracts, it may be more ideal to use an alternative wallet such as one of our light wallets that can be synchronized in a matter of seconds.
A browser wallet that supports the Ledger hardware wallet, offline cold wallet, restoration from mobile wallets, creation of QRC20 tokens and QRC1155 NFTs.
Web site https://qtumwallet.org
User documentation https://github.com/qtumproject/documents/tree/master/en/QTUM-WebWallet-usage
A light wallet that supports the Ledger and Trezor hardware wallets and is based on the well-known Electrum wallet software.
Download: https://github.com/qtumproject/qtum-electrum/releases
These wallets run on mobile devices and synchronize quickly.
Android Download: https://play.google.com/store/apps/details?id=org.qtum.newwallet
iOS Download: https://github.com/qtumproject/qtum-ios (open source, deprecated)
This light wallet runs in your Chrome browser as a browser extension, based on the popular MetaMask wallet.
Make sure to check out these resources as well for more information and to keep up to date with all the latest news about Qtum. At least 1 developer is always around, so if you're developing on Qtum and need help, we'd love to welcome you to our community.
Qtum uses a tool called Gitian to make reproducible builds that can be verified by anyone. Instructions on setting up a Gitian VM and building Qtum are provided in Gitan Building
This is a quick start script for compiling Qtum on Ubuntu
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils git cmake libboost-all-dev libgmp3-dev bison libtool-bin
sudo apt-get install software-properties-common
# If you want to build the Qt GUI:
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler qrencode
git clone https://github.com/qtumproject/qtum
cd qtum
git submodule update --init --recursive
./contrib/install_db4.sh `pwd`
export BDB_PREFIX='/path/to/qtum/db4'
cd depends
make
# replace x86_64-pc-linux-gnu with the appropriate folder name for your system
libtool --finish depends/x86_64-pc-linux-gnu/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/x86_64-pc-linux-gnu/lib
# Note: autogen will prompt to install some more dependencies if needed
./contrib/install_db4.sh `pwd`
./autogen.sh
./configure --prefix=`pwd`/depends/x86_64-pc-linux-gnu
make -j$(nproc)
Here is a brief description for compiling Qtum on CentOS, for more details please refer to the specific document
# Compiling boost manually
sudo yum install python-devel bzip2-devel
git clone https://github.com/boostorg/boost.git
cd boost
git checkout boost-1.66.0
git submodule update --init --recursive
./bootstrap.sh --prefix=/usr --libdir=/usr/lib64
./b2 headers
sudo ./b2 -j4 install
# Installing Dependencies for Qtum
sudo yum install epel-release
sudo yum install libtool libdb4-cxx-devel openssl-devel libevent-devel gmp-devel
# If you want to build the Qt GUI:
sudo yum install qt5-qttools-devel protobuf-devel qrencode-devel
# Building Qtum
git clone --recursive https://github.com/qtumproject/qtum.git
cd qtum
./autogen.sh
./configure
make -j4
The commands in this guide should be executed in a Terminal application.
The built-in one is located in /Applications/Utilities/Terminal.app
.
Install the Mac OS command line tools:
xcode-select --install
When the popup appears, click Install
.
Then install Homebrew.
brew install cmake automake berkeley-db@4 libtool boost miniupnpc openssl pkg-config protobuf qt@5 libevent imagemagick librsvg qrencode gmp
NOTE: This will work for building on Intel Macs and Apple Silicon Macs
NOTE: Building with Qt4 is still supported, however, could result in a broken UI. Building with Qt5 is recommended.
Clone the qtum source code and cd into qtum
git clone --recursive https://github.com/qtumproject/qtum.git
cd qtum
Build qtum-core:
Configure and build the headless qtum binaries as well as the GUI (if Qt is found).
You can disable the GUI build by passing --without-gui
to configure.
./autogen.sh
./configure
make
It is recommended to build and run the unit tests:
make check
Then you can either run the command-line daemon using src/qtumd
and src/qtum-cli
, or you can run the Qt GUI using src/qt/qtum-qt
Qtum is GPLv3 licensed.
The master
branch is regularly built and tested, but is not guaranteed to be
completely stable. Tags are created
regularly to indicate new official, stable release versions of Qtum.
The contribution workflow is described in CONTRIBUTING.md and useful hints for developers can be found in doc/developer-notes.md.
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people's pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.
Developers are strongly encouraged to write unit tests for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run
(assuming they weren't disabled in configure) with: make check
. Further details on running
and extending unit tests can be found in /src/test/README.md.
There are also regression and integration tests, written
in Python.
These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py
The CI (Continuous Integration) systems make sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.
Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.
Changes to translations as well as new translations can be submitted to Bitcoin Core's Transifex page.
Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.