Release Notes - Counterparty Core v10.8.0 (2024-12-15)
This release includes some significant architectural changes to the codebase to improve node stability and performance. Most notably, the data storage requirements of the Counterparty database have been reduced from ~50 GB to ~25 GB. Numerous bugs have been fixed, and all node hosts are recommended to upgrade ASAP.
Upgrading
This upgrade requires a mandatory, automatic rollback from block 871780.
ChangeLog
Protocol Changes
Bugfixes
- Set
issuances.reset
andissuances.locked
default values toFalse
rather thanNone
- Fix
get_price
andgive_price
fields: return0
rather thannull
- Store
utxo_address
in theaddress_events
table - Fix order of results during dividend distribution to UTXOs
- Fix XCP price calculation for fair mints
- Handle RSFetcher version mismatches correctly
- Improve shutdown process and correctly close the Ledger DB and State DB
- Always include all outputs in transactions decoded by RSFetcher
- Fix UTXO balances cache: don't cache
detach
; add cache forattach
; clean the cache when the balance is empty
Codebase
- Fix
block.close_block_index
field type - Eliminate unnecessary database indexes
- Don't rollback or reparse to a block index higher than current block index
- Remove the lockfile for the RSFetcher process
- Replace
counterparty.api.db
withstate.db
- Rollback State DB from Ledger DB rather than rolling back event-by-event
- Remove duplicate tables from State DB
- Add
issuances.asset_events
,dispenses.btc_amount
andmempool.addresses
field to the Ledger DB - Add version checking for State DB: launch a rollback when a reparse or a rollback is necessary for the Ledger DB
- Refactor functions to refresh
util.CURRENT_BLOCK_INDEX
inwsgi.py
- Remove
compose_utxo()
function and clean upcompose_attach()
andcompose_detach
- Add
transaction_type
field to thetransactions
table - Refactor
block.parse_tx()
- Include only one
TRANSACTION_PARSED
event for eachNEW_TRANSACTION
event - Fix API Watcher reorg checks
- Use
multiprocessing.Event
to stop API process when the Ledger process dies - Catch up with RPC when ZMQ is late
- Restart RSFetcher when it returns
None
too many times - Exclude transactions by
SIGHASH
- Be able to trigger a rollback on a minor version change
- Add several new checkpoints
- Parse raw mempool by batch before following
- Set
BACKEND_RAW_TRANSACTIONS_CACHE_SIZE
to 1000
API
- Exclude zero balances when retreiving balances by address and asset
- Add
description_locked
to theasset_info
field - Add
transaction_type
parameter forGet Transactions
endpoints - Add
transaction_types_count
table to the State DB - Add the following routes:
/v2/transactions/counts
/v2/blocks/<int:block_index>/transactions/counts
/v2/addresses/<address>/transactions/counts
- Add sortable field
asset_longname
to thebalances
table - Add the ability to retrieve balances by asset longname
- When composing an attach / move, use 10,000 sats for the value, rather than 546
- Add the
send_type
filter forsends
table (send
,attach
,move
ordetach
) - Add
events
field to transactions results whenverbose=true
CLI
- Have
rollback
andreparse
commands trigger a re-build of the State DB - Add current process name and current thread name to log messages
- Add
--log-exclude-filters
and--log-include-filters
flags
Credits
- Ouziel Slama
- Warren Puffet
- Adam Krellenstein