Skip to content

Releases: CounterpartyXCP/counterparty-core

v10.0.0-beta.1

20 Mar 20:19
6f5e4e4
Compare
Choose a tag to compare
v10.0.0-beta.1 Pre-release
Pre-release

Release Notes - Counterparty Core v10.0.0-beta.1

Counterparty Core v10.0.0 is a very large release comprising many improvements across different portions of the codebase. “Counterparty Core” is also the new name for the codebase and repository that is the result of a merge between counterparty-lib, counterparty-cli and a new Rust library, counterparty-rs.

Upgrade Procedure

This release does not include any protocol changes, so there is no deadline for upgrading. However it is strongly recommended that all users upgrade as soon as possible, in particular to avoid consensus problems due to non-determinism in previous versions. The Counterparty Core API is also unchanged for this release.

Because this release includes numerous changes to the database schema, a full database rebuild is required and the major version number has been bumped from 9 to 10. Follow the updated installation instructions in the README to download and install the latest version of Counterparty Core, run counterparty-server kickstart (while bitcoind is not running), then start the server with counterparty-server start. The rebuild should happen automatically, and it should take between 8 and 24 hours hours to complete.

IMPORTANT Be certain that you are running the latest version of AddrIndexRs (v0.4.4).

ChangeLog

Codebase

  • Upgrade from Python 3.7 to Python >= 3.10
  • Support Ubuntu 22.04 and macOS officially
  • Upgrade packaging system: replace setup.py with pyproject.toml and use Hatchling as a build system
  • Upgrade all pip dependencies to the latest available version
  • Rename counterparty-lib repository to counterparty-core. NOTE: The normal redirect for GitHub URLs cannot be implemented.
  • Merge the counterparty-cli repository into the counterparty-core repository
  • Add Rust library, counterparty-rs, for performance-critical code
  • Synchronize versions of counterparty-rs, counterparty-lib and counterparty-cli
  • Update URL for hosting bootstrap files to https://bootstrap.counterparty.io/counterparty-*
  • Update URL for hosting notifications for protocol changes to https://counterparty.io/protocol_changes.json

Documentation and Testing

  • Fix test suite, with automated builds on supported operating systems
  • Add Github Workflows for building, testing and running automated code scanners:
    • PyLint
    • Bandit
    • CodeQL
    • License Scanner
    • Build and publish Docker image
    • Enable testnet test book
  • Add checkpoints for mainnet up to block 834,500 and for testnet up to block 2,580,000
  • Rewrite README

Stability and Correctness

  • Fix multiple sources of non-determinism caused by generic exception handling
  • Fix source of non-determinism in AddrIndexRs caused by txid_limit and get_oldest_tx
  • Fix consensus break due to missing support for segwit transactions in kickstart logic
  • Fix crash in software version checking caused by a format change of protocol_changes.json

Deployment

  • Rewrite Dockerfile and publish new official Docker images
  • Implement simplenode Docker Compose file, an alternative to Federated Node
  • Change default bitcoind user from bitcoinrpc to rpc
  • Changed default port for communication with AddrIndexRs to 8432 (and 81432 for testnet)

Command-Line Interface

  • Disable console logs except for with counterparty-server start
  • Show fancy spinners for all discrete operations
  • Rename checkdb command to check-db
  • Rename debugconfig to show-config; clean up output
  • Don't log values for transactions except with --verbose (for performance)
  • Move noisy log messages to DEBUG
  • Always log to a file, unless --no-log-files is set
  • Fix and refactor log.set_up()
  • Improve thread shutdown logic
  • Accept config args before and after the command

Refactoring and Performance Optimizations

  • Rewrite kickstart, splitting work across two Python processes using shared memory and queue for communication
  • Activate write-ahead-log in SQLite and implement apsw.best_pratices(), improving performance and fixing crashes from deadlocks
  • Fix database version checking which launched a rebuilds instead of rollbacks / reparses
  • Add numerous missing database indexes
  • Fix collisions between existing database indexes
  • DRY and refactor database index creation.
  • DRY and isolate all SQL queries in ledger.py (except first insertion still inside contracts)
  • Fix database integrity check and re-include assert conservation check
  • Migrate to log-structured database for simpler and faster rollback and reparse
    • Add block_index field to the balances table
    • Remove all UPDATE queries—use the ledger.insert_update() function, which adds a new row with a new block_index
    • Update all SELECT queries—always use MAX(rowid)
    • Remove the undolog completely
    • Implement rollback and reparse by deleting table rows using the block_index field
  • Migrate performance-critical logic to Rust library, counterparty-rs
    • b58_encode() and b58_decode()
    • script_to_asm()
    • script_to_address()
    • inverse_hash()
  • Refactor connection logic for AddrIndexRs RPC
  • Pre-fetch blocks with multiple threads for start
  • DRY and refactor get_tx_info*() functions
    • Isolate transaction parsing inside gettxinfo.py module
    • Heavily refactor code; eliminate unused code blocks
    • Isolate dispenser logic in get_dispensers_outputs() and get_dispensers_tx_info()
  • Activate check software version every 24H
  • Add the possibility to reparse from a given block on minor version change
  • Add Warning with Confirmation Dialogue to bootstrap Command and --no-confirm flag

Credits

  • Ouziel Slama
  • Adam Krellenstein
  • Warren Puffett

v10.0.0-alpha

15 Mar 19:39
fb958ea
Compare
Choose a tag to compare
v10.0.0-alpha Pre-release
Pre-release

Release Notes - Counterparty Core v10.0.0-alpha

Counterparty Core v10.0.0 is a very large release comprising many improvements across different portions of the codebase. “Counterparty Core” is also the new name for the codebase and repository that is the result of a merge between counterparty-lib, counterparty-cli and a new Rust library, counterparty-rs.

Upgrade Procedure

This release does not include any protocol changes, so there is no deadline for upgrading. However it is strongly recommended that all users upgrade as soon as possible, in particular to avoid consensus problems due to non-determinism in previous versions. The Counterparty Core API is also unchanged for this release.

Because this release includes numerous changes to the database schema, a full database rebuild is required and the major version number has been bumped from 9 to 10. Follow the updated installation instructions in the README to download and install the latest version of Counterparty Core, run counterparty-server kickstart (while bitcoind is not running), then start the server with counterparty-server start. The rebuild should happen automatically, and it should take between 8 and 24 hours hours to complete.

IMPORTANT Be certain that you are running the latest version of AddrIndexRs (v0.4.3).

ChangeLog

Codebase

  • Upgrade from Python 3.7 to Python >= 3.10
  • Support Ubuntu 22.04 and macOS officially
  • Upgrade packaging system: replace setup.py with pyproject.toml and use Hatchling as a build system
  • Upgrade all pip dependencies to the latest available version
  • Rename counterparty-lib repository to counterparty-core. NOTE: The normal redirect for GitHub URLs cannot be implemented.
  • Merge the counterparty-cli repository into the counterparty-core repository
  • Add Rust library, counterparty-rs, for performance-critical code
  • Synchronize versions of counterparty-rs, counterparty-lib and counterparty-cli
  • Update URL for hosting bootstrap files to https://bootstrap.counterparty.io/counterparty-*
  • Update URL for hosting notifications for protocol changes to https://counterparty.io/protocol_changes.json

Documentation and Testing

  • Fix test suite, with automated builds on supported operating systems
  • Add Github Workflows for building, testing and running automated code scanners:
    • PyLint
    • Bandit
    • CodeQL
    • License Scanner
  • Add checkpoints for mainnet up to block 825,000 and for testnet up to block 2,540,000
  • Rewrite README

Stability and Correctness

  • Fix multiple sources of non-determinism caused by generic exception handling
  • Fix source of non-determinism in AddrIndexRs caused by txid_limit and get_oldest_tx
  • Fix consensus break due to missing support for segwit transactions in kickstart logic
  • Fix crash in software version checking caused by a format change of protocol_changes.json

Deployment

  • Rewrite Dockerfile and publish new official Docker images
  • Implement simplenode Docker Compose file, an alternative to Federated Node
  • Change default bitcoind user from bitcoinrpc to rpc
  • Changed default port for communication with AddrIndexRs to 8432 (and 81432 for testnet)

Command-Line Interface

  • Disable console logs except for with counterparty-server start
  • Show fancy spinners for all discrete operations
  • Rename checkdb command to check-db
  • Rename debugconfig to show-config; clean up output
  • Don't log values for transactions except with --verbose (for performance)
  • Move noisy log messages to DEBUG
  • Always log to a file, unless --no-log-files is set
  • Fix and refactor log.set_up()
  • Improve thread shutdown logic

Refactoring and Performance Optimizations

  • Rewrite kickstart, splitting work across two Python processes using shared memory and queue for communication
  • Activate write-ahead-log in SQLite and implement apsw.best_pratices(), improving performance and fixing crashes from deadlocks
  • Fix database version checking which launched a rebuilds instead of rollbacks / reparses
  • Add numerous missing database indexes
  • Fix collisions between existing database indexes
  • DRY and refactor database index creation.
  • DRY and isolate all SQL queries in ledger.py (except first insertion still inside contracts)
  • Fix database integrity check and re-include assert conservation check
  • Migrate to log-structured database for simpler and faster rollback and reparse
    • Add block_index field to the balances table
    • Remove all UPDATE queries—use the ledger.insert_update() function, which adds a new row with a new block_index
    • Update all SELECT queries—always use MAX(rowid)
    • Remove the undolog completely
    • Implement rollback and reparse by deleting table rows using the block_index field
  • Migrate performance-critical logic to Rust library, counterparty-rs
    • b58_encode() and b58_decode()
    • script_to_asm()
    • script_to_address()
    • inverse_hash()
  • Refactor connection logic for AddrIndexRs RPC
  • Pre-fetch blocks with multiple threads for start
  • DRY and refactor get_tx_info*() functions
    • Isolate transaction parsing inside gettxinfo.py module
    • Heavily refactor code; eliminate unused code blocks
    • Isolate dispenser logic in get_dispensers_outputs() and get_dispensers_tx_info()

Credits

  • Ouziel Slama
  • Adam Krellenstein
  • Warren Puffett

v9.61.2

27 Feb 20:38
af78ad5
Compare
Choose a tag to compare

9.61.2 Release Notes

This is a hotfix release:

  • Fix integer overflow in dispensers.
  • Invalidate broadcast with malformed text.
  • Fix Logging for Destructions with Invalid Asset.

Upgrade Commands

fednode update counterparty counterparty-testnet
fednode rebuild counterparty counterparty-testnet

v9.61.1

02 Dec 01:49
23bfc8b
Compare
Choose a tag to compare

9.61.1 Release Notes

This is a hotfix release which fixes a parsing issue which stops counterparty from parsing.

  • Fixed invalid null description on first issuance (PR #1283)
  • Fixed issue with transaction_outputs table not handling reorgs properly (PR #1286)

Upgrade Commands

fednode update counterparty counterparty-testnet
fednode rebuild counterparty counterparty-testnet

v9.61.0

17 Nov 20:57
fffdb01
Compare
Choose a tag to compare

9.61.0 Release Notes

  • Bumped bitcoin core version to 25.1 (view)
  • Adjusted DEFAULT_MULTISIG_DUST_SIZE (7800->1000) (view)
  • Fixed issue with oracle function returning bad values (view)
  • Fixed issue with change smaller than DUST throwing error (view)
  • Fixed issue with issuances and callability error (view)
  • Fixed issue with issuance backwards compatability (view)
  • Fixed issue with dividends not working on reset assets (view)
  • Redefined EMPTY address to mean no XCP or BTC history (view)
  • Fixed issue with skipping owner validation on numeric issuances (view)
  • Fixed issue with sweeps not transferring asset ownership if no supply issued (view)
  • Added origin field to dispensers (allows refill/close/reopen from origin) (view)
  • Added support for triggering dispenses on all tx outputs (view)
  • Fixed issue with Asset description deleted when null (view)
  • Added max dispense limit of 1000 (view)
  • Fixed issue with being unable to lock and change asset description (view)
  • Added DISPENSER_CLOSE_DELAY to delay closing dispensers 5 blocks (view)
  • Added MAX_REFILLS limit of 5 (view)
  • Added dynamic XCP fee on sweeps (view)

Note: Activation block on mainnet is block # 819,300

Upgrade commands

cd federatednode/
git pull
fednode stop
fednode update
fednode stop
fednode rebuild bitcoin bitcoin-testnet --no-cache
fednode rebuild addrindexrs addrindexrs-testnet --no-cache
fednode rebuild counterparty counterparty-testnet --no-cache
fednode stop
sudo su
rm -rf data/addrindexrs/*
rm -rf data/counterparty/*
exit
fednode start

v9.60.2

16 May 22:06
09b20b3
Compare
Choose a tag to compare

9.60.2 Release Notes

  • Fix to send change smaller than DUST to miners fee instead of error - [more info]
  • Mempool optimizations - [more info]

Upgrade commands

cd federatednode
fednode stop counterparty counterparty-testnet
sudo su 
rm -f data/counterparty/counterparty.*
exit
fednode update counterparty counterparty-testnet
fednode rebuild counterparty counterparty-testnet

v9.60.1

13 Dec 18:18
bb680cc
Compare
Choose a tag to compare

9.60.1 Release Notes

  • Fixed full-parse / reparse issues - [more info]
  • Bumped Bitcoin Core version to 24.0 - [more info]
  • Added validate action to fednode to validate counterparty database integrity - [more info]
  • Added --no-cache option to fednode to handle rebuilds without using the cache - [more info] [more info]
  • Added --no-bootstrap option to fednode to prevent downloading of bootstrap database - [more info] [more info]
  • Updated xcp-proxy service with realtime notifications of mempool and mined Counterparty transactions - [more info]

Upgrade commands

cd federatednode/
git pull
cd
fednode rebuild bitcoin bitcoin-testnet
fednode update counterparty counterparty-testnet xcp-proxy xcp-proxy-testnet
fednode stop counterparty counterparty-testnet
sudo su
rm -f federatednode/data/counterparty/counterparty.db*
exit
fednode rebuild counterparty counterparty-testnet xcp-proxy xcp-proxy-testnet --no-cache

v9.60.0

29 Aug 16:11
ff495c7
Compare
Choose a tag to compare

This release contains a number of bug fixes, updates, and new features.

  • Removed callable,call_date, and call_price from issuances - [more info]
  • Added support for CIP24 (Oracled Dispensers) - [more info]
  • Added support for CIP03 (Reset Token & Divisibility Statuses) - [more info]
  • Added tx_index field in bindings on dispenser close - [more info]
  • Added divisible field to get_balances API calls - [more info]
  • Added asset param to get_asset_info() API calls - [more info]
  • Added transactions table to get_{table} API calls - [more info]
  • Added network address validation to MPMA sends - [more info]
  • Added segwit format check for provided pubkeys when creating a send - [more info]
  • Update p2sh dust limit from 5640 to 546 (10x fee reduction) - [more info]
  • Update MPMA sends to adjust dust output to get to exact miners fee - [more info]
  • Update get_supply() with more efficient asset queries (thx @jotapea) - [more info]
  • Fixed issue with get_destructions and invalid UTF-8 characters - [more info]
  • Fixed issue with using 'BEGIN' keyword in API calls - [more info]
  • Fixed issue with transfering asset ownership to segwit addresses - [more info]
  • Fixed issue with locking subassets when parent owner is different - [more info]
  • Fixed "filled" order status when a BTCpay expires and another is successful - [more info]
  • Fixed issue with dispensers not working with p2sh addresses - [more info]
  • Fixed a bunch of CircleCI automated tests (thx @windsok) - [more info]

Note: Activation block for CIP03 and CIP24 on mainnet is block # 753,500

All users running servers are encouraged to upgrade ASAP.

Upgrade Procedure

For those running a federated node you should run the following commands:

fednode update counterparty counterparty-testnet
fednode rebuild counterparty counterparty-testnet
fednode stop counterparty counterparty-testnet
sudo su
rm -f federatednode/data/counterparty/counterparty.*
exit
fednode start counterparty

Running the above commands will upgrade your counterparty fednode to the 9.60.0 release and start the download of the counterparty bootstrap databases. Once counterparty is back up and parsing blocks, you can start counterparty-testnet up if desired via the fednode start counterparty-testnet command.

v9.59.6

23 Feb 18:17
127d5c6
Compare
Choose a tag to compare

Fixes issue with dispensers not working with addresses that start with 3 (p2sh addresses)

Upgrade Procedure
For those running a federated node you should run the following commands:

cd federatednode/
fednode update counterparty counterparty-testnet
fednode rebuild counterparty counterparty-testnet
fednode rollback 724000 counterparty
fednode start counterparty

MPMA Updates

11 Feb 02:01
478fb28
Compare
Choose a tag to compare

Minor revision that fixes some issues including :

  • Limited MPMA Sends to 1000
  • Started using DUST amount of BTC for MPMA encoded outputs
  • Added support for chunk size calculation
  • Fixed bad source parsing when reading MPMA segwit sends
  • Fixed issue with bad change address with MPMA segwit sends

Upgrade Procedure
For those running a federated node you should run the following commands:

cd federatednode/
fednode update counterparty counterparty-testnet
fednode rebuild counterparty counterparty-testnet
fednode rollback 722700 counterparty
fednode start counterparty