Skip to content

Mainnet Ignition v0.17.6 - Soft fork - Mandatory update

Compare
Choose a tag to compare
@qtum-neil qtum-neil released this 24 Jun 17:40
· 22540 commits to master since this release
6c1d36e

About Qtum and Mainnet Ignition

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 Ignition Main Network. This is the main network where the tokens hold value and should be guarded very carefully. There will be a testnet setup soon for developers, in the meantime you can use -regtest mode for testing needs. We will announce details about the token swap from QTUM ERC20 coins to QTUM mainnet tokens soon, watch our website for details about that.

The major features implemented in Qtum Ignition include:

  1. The Ethereum Virtual Machine, which allows for compatibility with most existing Solidity based smart contracts.
  2. The Smart Staking Protocol is complete, which is an optimized Proof of Stake implementation designed for a smart contract platform (however, smart contracts can not participate in staking yet).
  3. An improved smart contract GUI has been implemented that can be used for creating contracts, sending data and Qtum to them, and checking their status by executing them locally, The GUI also offers easy QRC20 tokens management.
  4. Regtest mode, which is ideal for developers who wish to create their own private blockchain. It is tuned specifically to make development easier. It will stake blocks automatically every 30 seconds, and can generate proof-of-work blocks instantly as needed.
  5. The Decentralized Governance Protocol is completely implemented and functional, which allows certain network parameters to be modified without a fork.

For more technical information for how to start developing with Qtum please read the Guide and also see this tutorial for deploying a simple faucet smart contract (it hasn't yet been updated for Mainnet for obvious reasons, but all the instructions are the same and you can try them in regtest mode)

Note: Qtum Core is considered beta software. We make no warranties or guarantees of its security or stability.

Update History

  • v0.17.6 - Soft fork - Mandatory update
    • Add header signature verification (soft fork at block 399100 for mainnet/391993 for testnet).
    • Add support for bitcore RPC calls, configure with ./configure --enable-bitcore-rpc to enable.
    • Make spam filter ban list persistent.
    • Enable spam filter for blocks.
    • Add support for hardened checkpoints.
    • Fix a bug that prevented seen stake set from working properly.
    • Fix a bug that prevented opening qtum.conf file from Qt wallet in OSX.
    • Fix getblockstats rpc call for PoS blocks.
    • Fix a bug with callcontract that caused msg.sender to return a wrong value when gasLimit was specified.
    • Fix linearize python script.
    • Rename argument -notusechangeaddress to -usechangeaddress.
  • v0.17.5 - Highly recommended update - Bug fix
    • Fix a bug introduced in 0.17.4 that caused some nodes not to be able to properly do reorg when receiving a duplicate stake block.
    • Add a recent checkpoint.
    • Fix gitian script filename in gitian build docs.
  • v0.17.4 - Recommended update - Bug fixes
    • Enforce PoS checks when receiving blocks/headers.
    • Fix a bug that would cause Qt wallet to become unresponsive in Windows when machine time is inaccurate.
    • Fix wrong port numbers in some RPC help messages.
    • Update nMinimumChainWork, ChainTxData and defaultAssumeValid using recent chain data.
  • v0.17.3 - Mandatory update for stakers - Bug fixes
    • Fix a bug where a staking node would stop producing valid blocks when it receives an invalid header.
    • Fix a bug that would cause a node to fail at syncing when started with -checklevel>3.
    • Add new checkpoints.
  • v0.17.2 - Recommended update - Bug fixes
    • Update ZMQ version to 4.3.1 (CVE-2019-6250)
    • Change the behavior of the EVM's event emitter to match ethereum's behavior in some cases.
    • Fix a bug where the staking icon would not show accurate information.
    • Fix a bug where compilation would fail if the system has secp256k1 library already installed.
    • Fix a minor typo in Qt wallet.
  • v0.17.1 - Upgrade Qtum core to bitcoin core 0.17.1 plus other improvements and bug fixes
    • Upgrade Qtum core to bitcoin core 0.17.1 including partially signed transactions support, external wallet files and more. Check bitcoin 0.17.0 and 0.17.1 release notes for more details.
    • Fix a bug which allowed using P2SH addresses as transaction sender in RPC interface, which caused that transaction to be rejected.
    • Fix an issue which prevented the correct logs to be printed when a state divergence was detected.
    • Prioritize create contract transactions over send to contract ones when staking.
    • Fix a bug which allowed node's time manipulation in some cases.
    • Fix a bug which prevented some EVM globals to be returned correctly when using callcontract RPC call.
    • Fix a bug which caused fee estimation to be excessively high in some cases.
    • Fix Solidity compiler link in the GUI wallet.
    • Make getaccountinfo RPC call help message clearer.
    • Improve the way encrypted wallet related RPC calls help messages were displayed.
    • Fix a bug that caused build description to be inaccurate.
  • v0.16.2 - Recommended update - Improved network security and bug fixes
    • Implement network spam protection
    • Only request blocks from peers when their chainwork is strictly greater than the current tip
    • Add extra header checks for PoS timestamp, block indexes, signature type (LowS), synchronized and rolling checkpoints.
    • Add recent checkpoints
    • Update nMinimumChainWork, defaultAssumeValid and chainTxData
    • Update BLOCK_CHAIN_SIZE
    • Fix failing Qt tests in make check on OSX Mojave
    • Fix getblocktemplate rpc call for PoS blocks
    • Fix help messages for walletpassphrase and getnetworkhashps rpc calls
  • v0.16.1 - Mandatory Update - Critical bug fix
  • v0.16.0 - Upgrade Qtum core to bitcoin core 0.16 and bug fixes
    • Upgrade Qtum core to bitcoin core 0.16 including segwit wallet, bech32 addresses, HD-wallets by default and more
    • Fix a bug where contract transactions with no change would fail in some cases
    • Fix a display bug where multiple logs would not show corretly in Qt wallet
    • Update gitian build scripts to support ubuntu bionic as building host
  • v0.15.3 - Recommended update - Bug fix
    • Fix a bug with searchlogs and waitforlogs rpc calls that caused duplicacte logs to show in some cases
    • Add support for building with boost 1.67
  • v0.15.2 - Recommended update - Improved seeding and bug fixes
    • Fix a staker halving subsidy calculation bug
    • Fix some translations errors and typos
    • Add Support for openssl 1.1
    • Fix CVE-2018-12356 by hardening the regex
    • Fix a python tests bug that caused bulk running of tests to fail
    • Add static seeds
    • Add new dns seed nodes
    • Update copyright year
  • v0.15.1 - Upgrade Qtum core to bitcoin core 0.15.1 and bug fixes
    • Upgrade Qtum core code to bitcoin core 0.15.1 with important performance improvments and other features, read more about bitcoin core 0.15.0 and 0.15.1
    • Fix a bug with reindexing when the data directory is empty
    • Prevent sending QRC20 tokens to P2SH Qtum addresses in the Qt wallet
    • Restore JS number as string support for callcontract and sendtocontract rpc calls
    • Fix a bug where the wrong block hash would be stored in the transaction receipt for miners with -logevents enabled
  • v0.14.16 - Improvments and Bug fixes
    • Fixed a bug where transactions with low fees would get stuck in the local mempool.
    • Fix a bug with clearing cache of StorageResults
    • Add contract support to "createrawtransaction" rpc call
    • Add sender support to "sendtoaddress" rpc call
  • v0.14.15 - Recommended Update
    • Add EVM global variables to callcontract
    • Update gitian build script
    • Update CentOS build instructions
    • Add exception data to TransactionReceipt
    • Fixed a bug where the gas price could not be parsed correctly on certain platforms (reported by APIS)
    • Fixed a bug where the logs were not reverted on disconnect block in certain cases
  • v0.14.14 - Mandatory Update
    • New Qt GUI
    • Fix Qt wallet freeze when syncing from scratch with -logevents or -reindex
    • Fix a bug with cacheUTXO (hardfork at block 100000 in mainnet, 84500 in testnet)
    • Add update checking functionality to Qt wallet
    • Fix a bug in token transfers history dates
    • Fix a bug with searchlogs rpc call
    • Add an extra check when adding token addresses
    • Fix compatibility with boost 1.66
    • Add checkpoints
    • Update nMinimumChainWork and defaultAssumeValid chain params
    • Add minmempoolgaslimit startup argument
    • Add Gitian build signatures
  • v0.14.13 - Mandatory Update
    • Fix a callcontract bug which in very specific cases could cause the node to fail to sync the blockchain
    • Add ability to save and restore contract addresses and ABI data
    • Make the token confirmation view data correct
  • v0.14.12 - Recommended Update
    • Added option to disable change address usage
    • Fixed bug where heavy RPC usage could cause the wallet to crash
  • v0.14.11 - Optional Update
    • Changed our versioning scheme to be consistent and avoid the two version number confusion
    • Add feature to restore wallet in the Qt wallet
    • Add new RPC call "waitforlogs" that is particularly useful for Dapp developers
    • Add long-polling support to the gettransaction RPC call
  • v1.1.4 - Recommended update
    • Fixed a bug that would cause syncing to stop
    • Fixed a bug that would cause the wallet to crash when using -logevents
  • v1.1.3 - Highly recommended update
    • Fixed a bug that caused contact addresses to show in receive token address dropdown
  • v1.1.2 - Optional update, but recommended if using QRC tokens
    • Fixed a bug with token transactions where the transaction ID displayed was incorrect in the Qt wallet
    • Allow adding 0 balance addresses as the token receiver in the Qt wallet
  • v1.1.1: When sending to contracts, the sender address is now the default change address to reduce confusion; fix -salvagewallet so it works with token transactions
  • v1.1.0: Add GUI support Qtum QRC tokens, allowing full management of tokens on the Qtum blockchain from the Qt wallet
    • Sending to a contract no longer requires ABI data, allowing easy participation in simple crowdsale contracts
  • v1.0.4: Fix bug where certain circumstances when staking could cause the displayed balance to be inaccurate until completely redownloading the blockchain.
  • v1.0.3: Fix staker bug that reported false messages; slightly increases staking performance; optimize staker parameters; fix white send button in GUI
  • v1.0.2: Various UI fixes, minor gas overflow consensus fix, per-txout exploit fix, testnet mode setup and functioning
  • v1.0.1: Fixed network magic bytes and minimum version to ensure the main network does not conflict with the Skynet network
  • v1.0: Initial release

Reindex Required When Upgrading from v1.0.1

When you first start the Qtum 1.0.2 GUI wallet after using Qtum v1.0.1 it will prompt you that it must reindex the database. This is normal and is a result of switching our internal database format from per-transaction to per-txout. If you use qtumd -daemon it will silently fail to start. You need to use qtumd -daemon -reindex in this case.

Qtum Documentation and Usage Resources

Basic usage resources:

Development resources:

General Info about Qtum:

Build Qtum Core

If you want to build it from source, it's recommended to follow the specific "build" documentation for your platform. But mostly it boils down to the following:

  1. Clone the qtum source code and cd into qtum

     git clone --recursive https://github.com/qtumproject/qtum.git
     cd qtum
    
  2. 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
    
  3. It is recommended to build and run the unit tests to ensure everything is working correctly:

    make check
    

If you encounter an error like:

make[2]: *** No rule to make target ‘cpp-ethereum/utils/libscrypt/b64.c’, needed by ‘cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-b64.lo’. Stop.

Then you did not checkout the cpp-ethereum submodule for Qtum. To do that, simply:

cd qtum
git submodule update --init --recursive

Validate and Reproduce Binaries

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 doc/gitian-building.md

Community Resources

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 Smart Contract Limitations

  • EVM smart contracts can not receive coins from or send coins to any address type other than pay-to-pubkeyhash (starts with Q) addresses. This is due to a limitation in the EVM
  • Contracts are not allowed to create contracts with an initial endowment of coins. The contract must first be created, and then be sent coins in a separate transaction. Humans are also not allowed to create contracts with an initial endowment of coins.
  • Although all of the infrastructure is present, Qtum Core does not currently parse Solidity event data. You must parse this yourself using either searchlogs or -record-log-opcodes features.
  • It is not possible to send a contract coins without also executing the contract. This is also the case of Ethereum. This was promised in earlier discussions and technically does work, but due to lack of time for testing this feature was disabled. We hope to reenable this feature with release of the x86 virtual machine in 2018.
  • In Qtum there can be multiple addresses used to create a proof-of-stake block. However, the EVM can only see the first output using the coinbase operation in Solidity (this address is also the one registered for the continuous staker rewards after 500 blocks).

Hash Validation

If you would like to validate that the binaries you download are exactly the same as those provided and built by the Qtum team, then you can compare your binaries to the following sha256sum hashes:

33522d119a5c87e310661cc080253ed04e66109b277517e60befbe6ba02df60c  qtum-0.17.6-aarch64-linux-gnu-debug.tar.gz
1d49aae2b597a4a2f149200acbbee7c1ede4363fa5308aa333f61a3b22f1e9b3  qtum-0.17.6-aarch64-linux-gnu.tar.gz
6fd94e929d6842df581a65da5a7bbbd1f0e69b6849d0304e49418d35d18710bf  qtum-0.17.6-arm-linux-gnueabihf-debug.tar.gz
1f06ed09da0cda3f843c885ac4ef7de27bc68ca8203b7d3b404901193fb6097f  qtum-0.17.6-arm-linux-gnueabihf.tar.gz
b071a6fe3788a87df8fec120f72d252cb428763170f6873dd2baa5ac7c9801d0  qtum-0.17.6-i686-pc-linux-gnu-debug.tar.gz
ad5c4b74e7c3c23f215ea5335dff037e19815fc69c90b6f2123ec059bf2148ce  qtum-0.17.6-i686-pc-linux-gnu.tar.gz
e41442168cfebf9f938be68fdd6e31d10541f0ce8e730d176b00a373cbfc2a8b  qtum-0.17.6-x86_64-linux-gnu-debug.tar.gz
1b7a1e70e102ce4b7389b44ebc9f06661b44ef7a017932a112600bfb1c1e20f1  qtum-0.17.6-x86_64-linux-gnu.tar.gz
b6d674bb6412da0a043709d99f2b1ee7440686db441264e16924be940b0c58e8  src/qtum-0.17.6.tar.gz
c220189f6ccf0ada949b101b6908c87e6690ee17d41628fb0a938b5303486328  qtum-linux-0.17-res.yml

df1bd7611c67172151a13fa9c1f70d7ef2216dda223e010c92da0ea8767ef670  qtum-0.17.6-win-unsigned.tar.gz
568b3548fcbd64887f9c748d855ff6c40cb05bd110aaf937d78c2599ba82567f  qtum-0.17.6-win32-debug.zip
7406d8cdd19034b2cc4c66c4a1494388de79bec2927efdbecefeeda766360e83  qtum-0.17.6-win32-setup-unsigned.exe
9ec1df3fc9136ae045f17ddaf755dfa1de23f4ebac611d50855bbe31ffe21a8d  qtum-0.17.6-win32.zip
18479f1a9310f6b6b1bc407460112c16af36eade6a9542e834032694535b9786  qtum-0.17.6-win64-debug.zip
1af40fc3c0432bc9e1ccf0db03d23565f9e3b9ad22e4936608729ea70dd3ca8e  qtum-0.17.6-win64-setup-unsigned.exe
03f41b996d438942a94a78ad0badfb8140e853ecb832cd4fb188a0d4a2f20fbe  qtum-0.17.6-win64.zip
b6d674bb6412da0a043709d99f2b1ee7440686db441264e16924be940b0c58e8  src/qtum-0.17.6.tar.gz
19e2109a25881db85789fa30052a0d4d1c07f5be725681838e3cd2846bb0b356  qtum-win-0.17-res.yml

d57899992770d952505aaff4a2f42d990d415596bb87d9d94b5540d650d40adc  qtum-0.17.6-osx-unsigned.dmg
4678164138dadaa574391b8a5f64059dce9bd664b40ee1e4b1bf4bc17b5b3c43  qtum-0.17.6-osx-unsigned.tar.gz
eba54932a6bed6d42ec4a2c3cc4f7fced5a88d0cb169b16a8a162f7c0189c8c9  qtum-0.17.6-osx64.tar.gz
b6d674bb6412da0a043709d99f2b1ee7440686db441264e16924be940b0c58e8  src/qtum-0.17.6.tar.gz
0ee37947bf3e8f1985b1f9b03760fe3449910ab69600b5bce063e8a0cef85454  qtum-osx-0.17-res.yml