From e8e0f85bd3b3ec3a01750124659f6cc18f087af1 Mon Sep 17 00:00:00 2001 From: Adam Krellenstein Date: Thu, 12 Dec 2024 11:56:59 -0500 Subject: [PATCH] Update Release Notes for v10.8.0 --- release-notes/release-notes-v10.8.0.md | 84 +++++++++++++------------- 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/release-notes/release-notes-v10.8.0.md b/release-notes/release-notes-v10.8.0.md index 2e1dd38d7f..97b63ace49 100644 --- a/release-notes/release-notes-v10.8.0.md +++ b/release-notes/release-notes-v10.8.0.md @@ -1,8 +1,12 @@ -# Release Notes - Counterparty Core v10.8.0 (2024-12-??) +# Release Notes - Counterparty Core v10.8.0 (2024-12-12) + +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 reparse from block 871780. + # ChangeLog @@ -10,68 +14,62 @@ ## Bugfixes -- Fix `block.close_block_index` field type -- Set `issuances.reset` and `issuances.locked` default value to False instead None -- Save also `utxo_address` in `address_events` table -- Clean useless indexes -- Don't rollback or reparse to a block index higher than current block index -- Fix dividend distribution to UTXO order after a rollback -- Exclude zero balances when getting balances by address and asset -- Remove lock file from RSFetcher -- Handle correctly RSFetcher invalid version -- Clean shutdown; Correctly close the Ledger DB and State DB (ensure that all connections are closed and that the one with write permission is closed last) -- Fix `get_price` and `give_price` fields: returns 0 not null -- Always includes all outputs in transaction decoded by RSFetcher -- Fix UTXO balances cache: don't cache `detach`, add cache fir `attach`, clean cache when balance is empty -- Fix XCP price calculation in `fairmint.validate()` +- Set `issuances.reset` and `issuances.locked` default values to `False` rather than `None` +- Fix `get_price` and `give_price` fields: return `0` rather than `null` +- Store `utxo_address` in the `address_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 for `attach`; 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` with `state.db` -- Add `issuances.asset_events`, `dispenses.btc_amount` and `mempool.addresses` field in Ledger DB -- Remove duplicate table from `state.db` -- Add `api/dbbuilder.py` module and refactor migrations to build `state.db` -- Use migrations to rollback `state.db` -- Remove rollback event by event in `state.db` -- Add version checking for `state.db`: launch a rollback when a reparse or a rollback is necessary for the Ledger DB -- Use `event_hash` to detect Blockchain reorganization and launch a rollback of `state.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` and `mempool.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` in `wsgi.py` -- Remove `compose_utxo()` function and clean `compose_attach()` and `compose_detach` -- Add `transaction_type` field in `transactions` table -- Clean `block.parse_tx()`; One `TRANSACTION_PARSED` event for each `NEW_TRANSACTION` event -- API Watcher checks reorg if no event to parse and not on each block +- Remove `compose_utxo()` function and clean up `compose_attach()` and `compose_detach` +- Add `transaction_type` field to the`transactions` table +- Refactor `block.parse_tx()` +- Include only one `TRANSACTION_PARSED` event for each `NEW_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 transaction with SIGHASH +- Restart RSFetcher when it returns `None` too many times ## API -- Add `description_locked` in asset info -- Tweak `compose_movetoutxo` documentation -- Add `transaction_type` parameter for Get Transactions endpoints -- Add `transaction_types_count` table in State DB +- Exclude zero balances when retreiving balances by address and asset +- Add `description_locked` to the `asset_info` field +- Add `transaction_type` parameter for `Get Transactions` endpoints +- Add `transaction_types_count` table to the State DB - Add the following routes: - `/v2/transactions/counts` - `/v2/blocks//transactions/counts` - `/v2/addresses/
/transactions/counts` -- Add sortable field `asset_longname` in `balances` table -- Add the ability to retrieve balances by asset long name +- Add sortable field `asset_longname` to the `balances` 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 `send_type` filter for `sends` table (`send`, `attach`, `move` or `detach`) -- Document how mempool events work -- Add `events` field in transactions results when `verbose=true` +- Add the `send_type` filter for `sends` table (`send`, `attach`, `move` or `detach`) +- Add `events` field to transactions results when `verbose=true` ## CLI -- Add `build-state-db` command -- `rollback` and `reparse` commands trigger a re-build of the State DB -- Add current process name and current thread name in logging messages +- Have `rollback` and `reparse` 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 -* droplister -* Ouziel Slama -* Adam Krellenstein +- Ouziel Slama +- Warren Puffet +- Adam Krellenstein