Skip to content

Releases: CounterpartyXCP/counterparty-core

v10.7.1

19 Nov 11:56
0c67b18
Compare
Choose a tag to compare

Release Notes - Counterparty Core v10.7.1 (2024-11-19)

This is a hotfix release that must be installed immediately. It fixes a bug in the parsing of Fairminters transactions that crashes the server.

Upgrading

ChangeLog

Protocol Changes

Bugfixes

  • Don't raise error on unpack exceptions

Codebase

API

CLI

Credits

  • Ouziel Slama

v10.7.0

11 Nov 22:04
6c47c00
Compare
Choose a tag to compare

Release Notes - Counterparty Core v10.7.0 (2024-11-11)

This is a protocol upgrade that includes a refactor of the UTXO Support feature that fixes some bugs in the original design and simplifies the implementation significantly. It also includes bugfixes for the fair minting functionality in addition to the usual set of miscellaneous improvements to the node API.

Upgrading

This upgrade is mandatory and must be performed before block 871,900 (around November 25th).
A reparse from the block 869,900 block is mandatory and will be performed automatically.

Composition functions for attach and detach transactions are disabled between block 871,888 and 871,900.

ChangeLog

Protocol Changes

UTXO Support

This update includes significant changes to the UTXO Support feature, and in particular to address a vulnerability where an atomic swap could be frontrun by a detach transaction. Further feedback from the community, in particular the OpenStamps team and DerpHerpenstein, have allowed us to simplify the implementation of this feature significantly. With this protocol change, messages with ID 100 will be disabled at the same block that messages with IDs 101 and 102 are enabled. 12 blocks before this activation block, the functions compose_attach and compose_detach will be deactivated to avoid having transactions with ID 100 confirmed after activation. The protocol and API have changed as follows:

  1. The attach function no longer accepts a destination parameter. It now accepts an optional destination_vout parameter (by default the first non-OP_RETURN output). This parameter allows one to designate the index of the output to use as the destination. The transaction is invalid if destination_vout does not exist or if it is an OP_RETURN.
  2. The destination parameter of the detach function is now optional. If not provided, the default destination is the address corresponding to the UTXO.
  3. The detach function no longer accepts asset and quantity parameters. The detach function detaches all assets attached to all transaction inputs every time.

In addition to resolving the above frontrunning vulnerability, this update brings a number of improvements:

  1. It is now cheaper and easier to construct attach and detach transactions. The size of messages is always less than 80 bytes, so an OP_RETURN output can store all of the necessary data.
  2. It is possible to execute several detach operations in a single transaction to save fees.
  3. It is no longer possible to make a detach and a UTXO move in the same transaction.
  4. A UTXO move with a transaction that contains only a single OP_RETURN output behaves like a detach
  5. Correct the gas calculation for attach operations

Fairminter

  1. When there are fewer tokens remaining than max_mint_per_tx in a free Fair Minter with a hard cap, the last mint receives whatever remains instead of triggering an error.

  2. Fixed a bug that prevents updating an asset's description after a fairminter's automatic closure.

Bugfixes

  • Take Rust fetcher's rollback_height into account in the block-height ordering check
  • Fix subasset name handling when creating a Fair Minter by preserving the asset_longname field when asset=<subasset_name> is specified and asset_parent is not specified
  • Fix disable_utxo_locks parameter in compose API
  • Fix gas.get_transaction_count_for_last_period()
  • Fix update_assets_info() when a fairmint is parsed into the mempool before the corresponding fairminter
  • Fix asset cache initialization
  • Takes into account the commission to check if the hard cap is reached
  • Soft cap deadline block must be greater than start block
  • Fix legder.get_fairmint_quantities() function
  • Fix `fee_paid`` field when closing fairminter
  • Fix premint_quantity checking when no hardcap
  • Fix premint_quantity destruction when soft cap is not reached
  • Add an index on (utxo, asset) fields in the balances tables

Codebase

  • Have transactions.compose() accept a tx_info that contains a source in the form of a UTXO instead of an address. When a UTXO is used, this UTXO must be spent in the corresponding transaction.
  • Refactor compose_moveutxo() to use this new transactions.compose() feature
  • Have the Rust fetcher now only store entries in its database required for Bitcoin reorganization checks. This greatly reduces the size of the database and significantly increases the speed of the catch-up process.
  • Support Bitcoin Core 28.0, having updated the Rust Bitcoin dependencies (bitcoin 0.32.4 and bitcoincore-rpc 0.19.0)

API

  • Make the destination, asset and quantity parameters to compose_detach() optional (asset and quantity will be ignored after the protocol change)
  • Add a destination_vout parameter to the compose_attach() endpoint (the destination parameter will be ignored after protocol change)
  • Add the validate argument to compose API
  • Add sortable get_price and give_price fields for orders
  • Add sortable price field for dispensers
  • Fix locked in asset_info field
  • Add /v2/bitcoin/transaction/decode route to proxy bitcoin decoderawtransaction method
  • inputs_set now supports UTXOs in the format <txid>:<vout>:<amount>:<script_pub_key>
  • Skip transaction sanity check when validate=false
  • Take asset_longname into consideration when sorting on asset field

CLI

Credits

  • OpenStamp
  • DerpHerpenstein
  • Ouziel Slama
  • Wilfred Denton
  • Adam Krellenstein

v10.6.1

28 Oct 22:16
3096f79
Compare
Choose a tag to compare

Release Notes - Counterparty Core v10.6.1 (2024-10-28)

This is a minor release to address a few small bugs in the v2 API, especially for MPMA, and to fill out API support for the management of assets attached to UTXOs.

Upgrading

This upgrade is not a protocol change and no automatic reparse is necessary.

ChangeLog

Protocol Changes

Bugfixes

  • Fix heavy healthz check
  • Raise a ComposeError in mpma.compose() if memo is not a string or if memo_is_hex is not a boolean
  • Send API v2 log messages to the config.API_LOG logfile
  • Create a dust output when attaching an asset to a UTXO without a destination address

Codebase

API

  • Add memos and memos_are_hex parameters to the MPMA compose API. When using MPMA sends, one memo must be provided for each destination if these parameters are used.
  • Add the /v2/utxos/<utxo>/balances route
  • Exclude UTXOs containing balances by default when composing transactions
  • Add use_utxos_with_balances and exclude_utxos_with_balances parameters to the compose API

CLI

Credits

  • Ouziel Slama
  • Adam Krellenstein

v10.6.0

25 Oct 18:10
2521b0b
Compare
Choose a tag to compare

Release Notes - Counterparty Core v10.6.0 (2024-10-25)

This release includes a protocol change to fix a regression for the case when there have been multiple dispensers opened at a single address. The bug prevents users from triggering dispensers at addresses where there have previously been closed dispensers (rather than simply re-opened dispensers).

Upgrading

This release is a protocol change from mainnet block 868,300 (in about one week). It also includes a backwards-incompatible change in the API:

  • /v2/addresses/<address>/balances/<asset> and /v2/assets/<asset>/balances/<address> now return a list that may include balances attached to UTXOs of <address>.

This release also includes a bugfix for chained UTXO movements within the same block. This bugfix requires an automatic reparse starting from block 867000. Given the current slowdowns in catching up with the API database, we recommend using counterparty-server bootstrap before restarting your server.

IMPORTANT All wallets should use the compose_dispense() call to trigger dispenses rather than the legacy create_send(). Due to the above bug, using create_send() can make it possible for users to send BTC to an address where the dispenser will fail. All node hosts should migrate to compose_dispense() ASAP.

ChangeLog

Protocol Changes

  • Block 868300: Dispenses are now triggered if at least one dispenser on the address is valid rather than only if all of them are valid.

Bugfixes

  • Catch invalid pubkeys in the compose API correctly
  • Run reparse only if necessary
  • Fix message_data when retrieving information about fairminter or fairmint transactions
  • Use threading.Event() to cleanly stop threads and subprocesses started by counterparty-server
  • Don't update UTXOs balances cache on mempool transaction
  • Update UTXOs balances cache before transacation parsing to catch chained UTXO moves in the same block

Codebase

  • Use a lock file for RS Fetcher thread
  • Add checkpoint for block 867290

API

  • Have /v2/addresses/<address>/balances/<asset> and /v2/assets/<asset>/balances/<address> now return a list that may include balances attached to UTXOs of <address>
  • Add the following routes:
    • /v2/blocks/<int:block_index>/fairminters
    • /v2/blocks/<int:block_index>/fairmints
    • /v2/compose/attach/estimatexcpfees
  • Add status argument for Fairminters routes
  • Make /blocks/last faster by adding an index to the ledger_hash field
  • Have /v2/addresses/<address>/sweeps now also search by the destination field
  • Add asset_events argument for Issuances routes
  • Raise an error on fairmint.compose() when the fairminter is free and the quantity is not zero
  • Add get_asset and give_asset arguments for /v2/orders route

CLI

  • Add support for --bootstrap-url to start command

Credits

  • Ouziel Slama
  • Adam Krellenstein

v10.5.0

22 Oct 16:07
22f14da
Compare
Choose a tag to compare

Release Notes - Counterparty Core v10.5.0 (2024-10-22)

This release includes fixes for a number of critical stability bugs as well as significant performance optimizations for parsing Fair Mint transactions. We have also made many other bugfixes and tweaks to the API and CLI in response to user feedback.

Upgrading

IMPORTANT: This update requires an automatic reparse from block 865999. However, reparses have become very slow recently due to the high transaction volume. We recommend that users upgrade to this version (even if they were running a pre-release version) either by bootstrapping their databases or by rebuilding them from scratch. You can bootstrap either by running counterparty-server bootstrap (if your node is not Dockerized) or by temporarily adding --catch-up=bootstrap-always as an argument to counterparty-server in your Docker Compose file. If you would like to rebuild your node from scratch, simply delete your existing database and restart the server.

ChangeLog

Bugfixes

  • Fix critical non-determinism in asset name generation
  • Fix subasset name in issuances table when created by a fairminter
  • Fix check for when a fairmint reachs its hard cap
  • Fix missing check for locked asset descriptions
  • Fix missing balance check for fairminter creation
  • Fix divisibility check for fairminter creation
  • Fix description check for fairminter creation
  • Fix null fields in fairminters API (earned_quantity, paid_quantity and commission)
  • Fix Gunicorn stability issue due to bad signal handling
  • Use a different log file for each Gunicorn worker
  • Populate address_events table on new fairmint and fairminter
  • Have bootstrap respect the --data-dir flag
  • Add normalized quantities to fairminters and fairmints API

Codebase

  • Redo mandatory reparses for all pre-release versions
  • Add missing index to address_events table
  • Add missing compound index to issuances table
  • Add missing compound index on status, tx_index and asset_longname
  • Optimize database rowtracer
  • Optimize ledger.get_last_issuance(), ledger.asset_issued_total() and ledger.asset_destroyed_total()

API

  • Have --force properly bypass checks that node is caught up
  • Have /v2/blocks/last return the last-parsed block and not the block currently being parsed
  • Change route /v2/fairminters/<tx_hash>/mints to /v2/fairminters/<tx_hash>/fairmints
  • Add the following new routes:
    • /v2/fairmints
    • /v2/fairmints/<tx_hash>
  • /v2/addresses/<address>/balances/<asset> and /v2/assets/<asset>/balances/<address> now return a list that may include balances attached to UTXOs of <address>

CLI

  • Add --max-log-file-size and --max-log-file-rotations flags
  • Disable mempool synchronization when --no-mempool is passed
  • Make the number of Waitress threads configurable
  • Make the number of Gunicorn threads per worker configurable
  • Log all configuration options on startup at the DEBUG level
  • Have --force skip mandatory reparses
  • Add bootstrap-always option for the --catch-up flag
  • Replace --database-file flag by --data-dir flag
  • Have GUnicorn log TRACE

Credits

  • Ouziel Slama
  • Adam Krellenstein

v10.5.0-rc.1

20 Oct 20:09
8e06816
Compare
Choose a tag to compare
v10.5.0-rc.1 Pre-release
Pre-release

Release Notes - Counterparty Core v10.5.0-rc.1(2024-10-20)

This is a hotfix release and includes fixes for a number of critical stability bugs in the nodes software as well as significant performance optimizations for parsing Fair Mint transactions.

Upgrading

This update requires an automatic reparse from block 865999.

ChangeLog

Bugfixes

  • Fix non-deterministic bug in asset name generation
  • Fix subasset name in issuances table when created by a fairminter
  • Fix missing balance check for fairminter creation
  • Fix missing check of locked description
  • Fix missing compound index on status, tx_index and asset_longname
  • Fix checking when a fairmint reach the hard cap
  • Fix divisibility check when creating a fairminter
  • Fix description checking when creating a fairminter

Codebase

  • Mandatory reparse for all alphas and betas
  • Add missing index to address_events table
  • Add missing compound index to issuances table
  • Support several required reparsing by major version
  • Optimize database rowtracer
  • Optimize ledger.get_last_issuance(), ledger.asset_issued_total() and ledger.asset_destroyed_total()
  • Tweak thread handling logic

API

  • Have --force bypass checks that node is caught up
  • Have /v2/blocks/last return the last parsed block and not the block currently being parsed
  • Change route /v2/fairminters/<tx_hash>/mints to /v2/fairminters/<tx_hash>/fairmints
  • Add the following new routes:
    • /v2/fairmints
    • /v2/fairmints/<tx_hash>

CLI

  • Add --max-log-file-size and --max-log-file-rotations flags
  • Disable mempool synchronization when --no-mempool is passed
  • Make the number of Waitress threads configurable
  • Make the number of Gunicorn threads per worker configurable
  • Log all configuration options on startup at DEBUG level

Credits

  • Ouziel Slama
  • Adam Krellenstein

v10.5.0-alpha.3

19 Oct 12:34
edea73e
Compare
Choose a tag to compare
v10.5.0-alpha.3 Pre-release
Pre-release

Release Notes - Counterparty Core v10.5.0-alpha.3 (2024-10-19)

This is a hotfix release to fix a non-deterministic bug in asset name generation.

Upgrading

This update requires an automatic reparse from block 865999.

ChangeLog

Bugfixes

  • Fix non-deterministic bug in asset name generation
  • Fix sub-asset name in issuances table when created by a fairminter
  • Fix missing index on address_events.event_index
  • Fix missing balance checking when creating a fairminter
  • Fix missing check of locked description
  • Fix missing compound index on status, tx_index and asset_longname
  • Fix divisibility checking when creating a fairminter

Codebase

  • Support several required reparsing by major version
  • Optimize database rowtracer
  • Optimize ledger.get_last_issuance() and ledger.asset_issued_total()

API

  • Have --force bypass checks that node is caught up
  • /v2/blocks/last returns the last parsed block and not the block currently being parsed

CLI

  • Add --max-log-file-size and --max-log-file-rotations flags

Credits

  • Ouziel Slama
  • Warren Puffett
  • Adam Krellenstein

v10.5.0-alpha.2

18 Oct 18:54
57ede8a
Compare
Choose a tag to compare
v10.5.0-alpha.2 Pre-release
Pre-release

Release Notes - Counterparty Core v10.5.0 (2024-10-18)

This is a hotfix release to fix a non-deterministic bug in asset name generation.

Upgrading

This update requires an automatic reparse from block 865999.

ChangeLog

Bugfixes

  • Fix non-deterministic bug in asset name generation
  • Fix sub-asset name in issuances table when created by a fairminter
  • Fix missing index on address_events.event_index
  • Fix missing balance checking when creating a fairminter
  • Fix missing check of locked description
  • Fix missing compound index on status, tx_index and asset_longname

Codebase

  • Support several required reparsing by major version
  • Optimize database rowtracer

API

CLI

  • Add --max-log-file-size and --max-log-file-rotations flags

Credits

  • Ouziel Slama
  • Warren Puffett
  • Adam Krellenstein

v10.5.0-alpha.1

18 Oct 12:59
1b2ac23
Compare
Choose a tag to compare
v10.5.0-alpha.1 Pre-release
Pre-release

Release Notes - Counterparty Core v10.5.0 (2024-10-18)

This is a hotfix release to fix a non-deterministic bug in asset name generation.

Upgrading

This update requires an automatic reparse from block 865999.

ChangeLog

Bugfixes

  • Fix non-deterministic bug in asset name generation
  • Fix sub-asset name in issuances table when created by a fairminter

Codebase

  • Support several required reparsing by major version

API

CLI

  • Add --max-log-file-size and --max-log-file-rotations flags

Credits

  • Ouziel Slama
  • Warren Puffett
  • Adam Krellenstein

v10.4.8

17 Oct 19:42
34d4436
Compare
Choose a tag to compare

Release Notes - Counterparty Core v10.4.8 (2024-10-17)

This is a hotfix release to fix a number of additional issues that arose with the recent protocol changes.

Upgrading

This is not a protocol change, and no database reparsing is necessary.

ChangeLog

Bugfixes

  • Fix fair minting rollback
  • Fix API server crash due to missing sanity check
  • Retry maximum 10 times on Bitcoin Core RPC call error

Codebase

API

CLI

Credits

  • Ouziel Slama
  • Warren Puffett
  • Adam Krellenstein