v10.8.0
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.resetandissuances.lockeddefault values toFalserather thanNone - Fix
get_priceandgive_pricefields: return0rather thannull - Store
utxo_addressin theaddress_eventstable - 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_indexfield 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.dbwithstate.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_amountandmempool.addressesfield 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_INDEXinwsgi.py - Remove
compose_utxo()function and clean upcompose_attach()andcompose_detach - Add
transaction_typefield to thetransactionstable - Refactor
block.parse_tx() - Include only one
TRANSACTION_PARSEDevent for eachNEW_TRANSACTIONevent - Fix API Watcher reorg checks
- Use
multiprocessing.Eventto stop API process when the Ledger process dies - Catch up with RPC when ZMQ is late
- Restart RSFetcher when it returns
Nonetoo 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_SIZEto 1000
API
- Exclude zero balances when retreiving balances by address and asset
- Add
description_lockedto theasset_infofield - Add
transaction_typeparameter forGet Transactionsendpoints - Add
transaction_types_counttable 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_longnameto thebalancestable - 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_typefilter forsendstable (send,attach,moveordetach) - Add
eventsfield to transactions results whenverbose=true
CLI
- Have
rollbackandreparsecommands trigger a re-build of the State DB - Add current process name and current thread name to log messages
- Add
--log-exclude-filtersand--log-include-filtersflags
Credits
- Ouziel Slama
- Warren Puffet
- Adam Krellenstein