Repository navigation
Releases
1.3.0
BitBlocks Core version 1.3.0 is now available from:
This is a new minor version release. It lets nodes that ended up on a fork
return to the main chain on their own, adds a -resync option, replaces the
unlimited zero-fee relay with an anti-spam policy that keeps transactions
free, and fixes several security and stability bugs. Upgrading is strongly
recommended for all users, and especially for masternode operators and
stakers.
Please report bugs using the issue tracker at github:
How to Upgrade
Shut down the old wallet completely, then install the new version over it
(Windows) or replace the binaries (Linux). Your wallet and block data are kept.
Always keep a backup of wallet.dat before upgrading.
No reindex is required. A node that is on one of the known forks undoes the
forked blocks automatically on the first start (see below); this can take a
few minutes and shows "Returning to the correct block chain..." while it runs.
Compatibility
Release binaries are provided for 64-bit Linux (x86_64) and 64-bit Windows.
BitBlocks Core should also build and run on most other Unix-like systems but
is not frequently tested on them.
This release does not change the protocol version (71001) and has no hard
fork or activation height: 1.3.0 nodes stay compatible with 1.2.x and 1.1.x
nodes. Blocks built on the main chain are judged exactly as before. The
changes to block checks only apply rules that older versions already enforced
elsewhere or only in some situations (see "Block validation" below).
Relay policy is stricter than in 1.2.0. Transactions created by a 1.2.0
wallet are always zero-fee, even when the coins are too young to qualify for
free relay; 1.3.0 nodes refuse those transactions, so they only propagate
through older nodes. Upgrade wallets that send transactions.
Notable Changes
Returning from forks
Several nodes were left stuck on minority forks of the main chain, unable to
reorganize back to it. This release fixes the causes and recovers nodes that
are already stuck:
- Fork-aware stake checks. Stake kernels of blocks from another branch
were checked against our own chain past the fork point, so honest blocks of
the majority chain failed validation and a node on a minority fork never
learned that the main chain had more work. The stake modifier and the stake
input are now taken from the block's own branch. For blocks on top of our
tip the result is identical to before. - Checkpoints after the known forks. New checkpoints at blocks 3814154,
4143878 and 4159094, the first main-chain blocks after the splits found on
the network. - Automatic rewind on startup. If the local chain disagrees with a
checkpoint, the node undoes it back to the split on startup and then syncs
the main chain as usual. This can be disabled with-checkpointrewind=0.
Forks more than 50000 blocks past the checkpoint are not undone
automatically: the GUI offers to download the block chain again, and
bitblocksdstops with a message suggesting-resync. - SwiftTX locks no longer reject blocks. A block conflicting with a
local SwiftTX lock was marked invalid for good, leaving the node stuck on
its own branch, and the spork key needed to undo that is no longer
available. Locks still protect the mempool. No node was ever required to
reject these blocks, so this is not a consensus change. - SwiftTX inputs are only locked by complete locks. Before, a rejected
lock request, which carries no masternode signatures, already locked its
inputs, so any peer could make a node reject honest transactions and
blocks. - Masternode pings must reference the active chain. Pings referencing a
block outside our active chain are no longer accepted, so masternodes
running on a fork stop being shown as enabled.
New -resync option
-resync deletes the local block chain (the blocks and chainstate
folders) and downloads it again from the network on startup. The wallet, its
backups, peers.dat and the masternode caches are kept. The GUI offers the
same action as a "Resync" button in the Repair tab of the Tools window. Use
it once, not in bitblocks.conf.
Free transactions and anti-spam policy
BitBlocks transactions stay free, but 1.2.0 accepted and relayed every
zero-fee transaction without limit and had an unlimited mempool, which let
anyone flood the network at no cost. Spam now costs coin age instead of a fee.
See doc/free-transactions.md for the details.
- A free transaction must reach the free priority threshold (a typical
payment needs about 1800 BBK-blocks of coin age: 1000 BBK held for about
2 minutes, 100 BBK for about 18 minutes, or 1 BBK for about 30 hours), spend
only confirmed outputs and be smaller than 49 KB. Free relay is rate
limited (-limitfreerelay, now 500 kB per minute). - Each block reserves 250 KB for free transactions (
-blockprioritysize,
was 50 KB). - The mempool is capped at 100 MB (
-maxmempool), of which free
transactions may use half. Transactions expire after 24 hours
(-mempoolexpiry). - Standard transactions are limited to 100 KB (was 1 MB).
- Signatures must use low S values to be relayed and mined. Block validity is
unchanged.
Wallet behaviour:
-sendfreetransactionsnow defaults to on, and the wallet decides whether
a transaction can be free with exactly the rules nodes apply.- When the coins cannot be sent for free yet, the wallet adds the minimum
fee (0.0001 BBK/kB). The GUI asks first whether to pay the fee or wait, and
estimates how long until the coins can be sent for free. RPC calls such as
sendtoaddresspay the minimum fee without asking. -maxtxfeenow defaults to 1 BBK. It was 0, which forced every fee to zero.- Wallet transactions that expire from the mempool are put back and
rebroadcast automatically.
Block validation
- Proof-of-work blocks after the last proof-of-work height (and
proof-of-stake blocks before it) are now rejected as soon as they arrive,
not only when they are connected. A coinbase-only proof-of-work block on
top of the tip could crash a synced node. - Block value is now always limited to the expected reward. While the
masternode list was still syncing, the first 100 blocks of each budget
cycle skipped the check. The budget is 0, so the limit is the regular
reward. - After a reorganization, outputs of fully spent coinstakes lost their
coinstake flag when the block spending them was undone. They then skipped
the maturity check, and undoing the coinstake block later failed. - Invalid blocks with an unknown parent are rejected before they are answered
with agetblocks, and repeated orphan blocks from the same peer are
throttled.
Security fixes
walletpassphrasealways checks the passphrase. Before, when the wallet
was unlocked for staking only, any passphrase turned it into a full unlock.- Fixed a buffer overflow when reading a domain name reply from a SOCKS5
proxy (CVE-2017-18350). - Block locators larger than 101 entries are refused and the peer is
disconnected. dumpwalletrefuses to overwrite an existing file.- The legacy P2P alert system is disabled by default (
-alerts=1turns it
back on), as Bitcoin Core and PIVX did (CVE-2016-10724, CVE-2016-10725).
Staking
- Coins that were spent or locked (for example a masternode collateral)
after the staking coin set was built are skipped, instead of producing
invalid blocks or conflicts with pending payments. - The stake coin set is rebuilt at every new block.
- The staker checks for stakeable coins again while it runs, so coins that
reach the minimum age after startup start staking without a restart.
Other changes
- The default number of automatic wallet backups is now 30
(-createwalletbackups, up to 100).
New and changed options
| Option | Change |
|---|---|
-resync |
New. Delete the block chain and download it again on startup. |
-checkpointrewind |
New, default 1. Undo a chain that left a checkpoint back to the split on startup. |
-maxmempool=<n> |
New, default 100 (MB). |
-mempoolexpiry=<n> |
New, default 24 (hours). |
-sendfreetransactions |
Default changed from 0 to 1. |
-maxtxfee |
Default changed from 0 to 1 BBK. |
-blockprioritysize |
Default changed from 50000 to 250000 bytes. |
-limitfreerelay |
Default changed from 15 to 500 (kB per minute). |
-alerts |
Default changed from 1 to 0. |
-createwalletbackups |
Default changed from 10 to 30, maximum from 10 to 100. |
-testcheckpoint, -maxcheckpointrewind |
New, regtest only, for tests. |
1.3.0 Change log
Detailed release notes follow. This overview includes changes that affect
behavior, not code moves, refactors and string updates.
Consensus and block validation
4fe0640kernel: follow the block's own chain for stake checks on forks88d8d47main: reject PoW blocks after the last PoW height in CheckBlock24b6153masternode-payments: cap block value while masternode sync is incompletea2fc221main: restore the coinstake flag when undoing a spent transactionc8db6b4main: stop rejecting blocks that conflict with SwiftTX locks4876a61swifttx: only lock inputs once a lock is completea9c73a9chainparams: add checkpoints after the known forks9cac087main: rewind to the first mismatching checkpoint on startupdc81c68main: don't answer invalid orphan blocks with getblocks
Mempool and relay policy
b2fc781policy: limit standard transaction size to 100 KBf58331fmempool: cap total size and the share used by free transactions8ba87a4mempool: expire transactions after 24 hours6b77425policy: restore fee, priority and free-relay limits for mempool acceptancea044e7cpolic...
1.2.0
BitBlocks Core version 1.2.0 is now available from:
This is a new minor version release. It moves consensus signature
verification from OpenSSL to libsecp256k1, hardens proof-of-stake validation
against fake stake attacks, improves peer discovery, and updates the GUI and
the build dependencies. Upgrading is strongly recommended for all users.
Please report bugs using the issue tracker at github:
How to Upgrade
Shut down the old wallet completely, then install the new version over it
(Windows) or replace the binaries (Linux). Your wallet and block data are kept.
Always keep a backup of wallet.dat before upgrading.
No reindex is required.
Compatibility
Release binaries are provided for 64-bit Linux (x86_64) and 64-bit Windows.
BitBlocks Core should also build and run on most other Unix-like systems but
is not frequently tested on them.
This release does not change the consensus rules or the protocol version
(71001). 1.2.0 nodes stay fully compatible with 1.1.x nodes on the network.
Notable Changes
Consensus signature verification uses libsecp256k1
Signatures were previously verified with whichever OpenSSL the binary was
linked against. OpenSSL versions disagree on some non-canonical signature
encodings, so two nodes built with different OpenSSL versions could disagree
about whether a block is valid. Verification now uses the libsecp256k1
library vendored in the source tree, which is the same on every build.
This is not a consensus rule change and has no activation height: both
verifiers accept the same signatures on the existing chain. The node now logs
which verifier it uses at startup (Signature verification: libsecp256k1).
The OpenSSL path is kept only for testing and can be selected at build time
with --enable-openssl-ecdsa. See doc/secp256k1-migration.md for the full
analysis.
Fake stake mitigation
Proof-of-stake validation has been hardened against peers sending invalid or
duplicated stake blocks:
- The coinstake prevout index is now validated before use.
- Peers sending proof-of-stake blocks with invalid stake signatures, or blocks
that fail other checks the peer could verify itself, now receive a DoS
score and are eventually banned. Failures that depend on local state (for
example, still syncing) are never scored, so honest peers are not banned. - Two different blocks that reuse the same stake at the same time are dropped
locally. This check is applied only to blocks received from the network,
never during-reindexor-loadblock.
Peer discovery
- The mainnet DNS seeds and fixed seeds have been updated.
- The node now keeps querying the DNS seeds while it has fewer than two
outbound peers, instead of querying only once at startup. - If there is still no outbound peer after 60 seconds, the node connects
directly to the seed nodes as a fallback.
This fixes nodes that previously stayed at zero connections after a failed
first lookup.
Mainnet checkpoints
Checkpoints were added at blocks 4000000 and 4100000.
Wallet
- On startup, the wallet now always rescans from its last known block.
Previously it skipped the rescan when it was fewer than 10 blocks behind,
which could miss transactions after restoring a backup. - Wallet rescans no longer freeze the GUI, and a crash caused by a null
dereference during rescan has been fixed.
GUI
- Refreshed wallet artwork, navigation icons, and splash screen.
- The layout is optimized for 1366x768 displays.
- High-DPI scaling is enabled.
- The Inter font is now bundled, so the GUI looks the same on every system.
- The splash screen and the About dialog show the exact build version.
- Fixed the "last month" transaction filter in January.
Build system and dependencies
- Qt was updated to 5.15.5, Boost to 1.81.0, and OpenSSL to 3.0.16.
- BIP70 payment requests are now optional and disabled by default
(--enable-bip70).bitblocks:URIs keep working without it. - The code builds with modern compilers and current versions of Boost.Asio,
OpenSSL, Qt 5, and LevelDB. - Added release packaging scripts for Linux and Windows
(contrib/release/). - Generated autotools files are no longer tracked in the repository.
Run./autogen.shbefore./configurewhen building from source.
1.2.0 Change log
Detailed release notes follow. This overview includes changes that affect
behavior, not code moves, refactors and string updates.
Consensus
88ceca4consensus: use libsecp256k1 for signature verificatione7187fdscript: harden secp256k1 verification0735a8ckey: update libsecp256k1 API and initialize verification36e3c07kernel: validate coinstake prevout index6f15fe6main: score invalid proof-of-stake blocks03298d5main: score invalid stake signatures9624f11main: reject duplicate network stakes790495emain: remove unused stake cache
Network
3e95fadFix mainnet DNS and fixed seeds7bf3a9fnet: retry DNS seeds and connect to seed fallbacks006c1a3chainparams: update mainnet checkpoints
Wallet
080b669init: always rescan from best block2e67b66wallet: fix rescan responsiveness and null dereference
GUI
86943e5qt: refresh wallet artwork and navigation icons1b46783qt: optimize wallet layout for 1366x768 displays49a1753qt: embed branded logo in splash background13237c2qt: enable high-DPI scaling9ed85e8qt: bundle Inter font78e3efdqt: show build version in UI2f29366qt: load stylesheet as UTF-85afc2caqt: remove startup fade-inb6db0d4qt: remove page transition opacity effect6bb1d4fqt: fix January last-month filter9fd2050qt: keep URI handling without BIP70
Build System
4f62309qt: update depends to Qt 5.15 and make BIP70 optionalf332cfbdepends: update Boost and OpenSSLe2ce97bdepends: update OpenSSL and fix miniupnpc cross-build565add1depends: build Qt XCB platform with depends libraries139fef0build: link static Qt XCB plugin878f95ddepends: add rpath-link for X11 librariesc0dcaa6build: detect Qt 5.8+ platform support libraries5d2e19cbuild: pass configure defines to moc950d362build: fix secp256k1 build and tests63d1636Update for modern C++ compatibility8c7be4ashare: fix NSIS out-of-tree buildsa7d07decontrib: add Linux and Windows release packaging47d627bbuild: bump version to 1.2.03a9909abuild: stop tracking generated files
Tests
8a48d30test: scan both signature verifiers
Documentation
d51c073doc: document verifier migration results4c18f29Update build DOC to use PIVX PPA for Berkeley DB 4.8
1.1.3
BitBlocks Core version 1.1.3 is now available from:
This is a new patch version release, including various bug fixes, performance improvements, GUI enhancements, and updated translations.
Please report bugs using the issue tracker at github:
Compatibility
BitBlocks Core is extensively tested on multiple operating systems using
the Linux kernel, macOS 10.8+, and Windows Vista and later.
BitBlocks Core should also work on most other Unix-like systems but is not
frequently tested on them.
Notable Changes
GUI Improvements
- Modernized GUI with card-based design, improved UX, and visual enhancements
- Implemented stable sort in TransactionFilterProxy using sortKey and hash
Performance Improvements
- Optimized wallet rescan performance and prevented UI freezing
Network and Consensus
- Updated mainnet checkpoints to block 3685080
- Added new DNS seeds
- Refactored: Separated PoW and PoS target spacing/timespan parameters
- Fixed: Corrected fShouldBan flag in Misbehaving()
Build System
- Fixed Windows compilation with MinGW-w64
- Cleaned repository: removed autotools generated files
- Added .gitignore to prevent committing generated files
Translations
- Completed pt_BR translations and fixed typo
Bug Fixes
- Fixed block reward error
1.1.3 Change log
Detailed release notes follow. This overview includes changes that affect
behavior, not code moves, refactors and string updates.
GUI
- Modernized GUI with card-based design, improved UX, and visual enhancements
- Implemented stable sort in TransactionFilterProxy using sortKey and hash
Wallet
- Optimized wallet rescan performance and prevented UI freezing
Network
- Updated mainnet checkpoints to block 3685080
- Added new DNS seeds
Consensus
- Refactored: Separated PoW and PoS target spacing/timespan parameters
- Fixed: Corrected fShouldBan flag in Misbehaving()
- Fixed block reward error (2022)
Build System
- Fixed Windows compilation with MinGW-w64
- Cleaned repository: removed autotools generated files
- Added .gitignore to prevent committing generated files
Translations
- Completed pt_BR translations and fixed typo
1.1.2
Version 1.1.2 of BitBlocks Core is now available at https://github.com/BitBlocksProject/BitBlocks/releases
This is a simple version update with code revision, fixes in GUI, and changes to default settings
Please use the GitHub issue tracker to report bugs: https://github.com/BitBlocksProject/BitBlocks/issues
How to update
Shut down any previous versions you may be using. Wait for it to completely shut down before running the installer (on Windows) or copying bitblocksd/bitblocks-qt (on Linux)
Changes:
GUI
- Fixes on PT-BR translations
- Remove the GUI widget for fee
- uint icons fixed
Wallet
- Checkpoints fixed
- Default maxorphantx changed
- Fixed max peers connections
1.1.1
Faster
Bug fixes
Chain split fixes
New seeds
More connections
Version 1.1.0
- Wallet 1.1.0 with new BitBlocks masternode collateral
- Some corrections in QT wallet
- New seeds
- Bootstrap updated!
1.0.3
- Wallet 1.0.3 with vote in budget!
- Bootstrap updated!
1.0.2
1.0.1
1.0
Update chainparams.cpp Update a wrong nMasternodeCollateralLimit Now is correct