mirror of
https://github.com/alexgo-io/stacks-puppet-node.git
synced 2026-06-18 03:38:57 +08:00
754 lines
34 KiB
Markdown
754 lines
34 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to the versioning scheme outlined in the [README.md](README.md).
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
|
|
- When the Clarity library is built with feature flag `developer-mode`, comments
|
|
from the source code are now attached to the `SymbolicExpression` nodes. This
|
|
will be useful for tools that use the Clarity library to analyze and
|
|
manipulate Clarity source code, e.g. a formatter.
|
|
- New RPC endpoint at /v2/constant_val to fetch a constant from a contract.
|
|
- Message definitions and codecs for Stacker DB, a replicated off-chain DB
|
|
hosted by subscribed Stacks nodes and controlled by smart contracts
|
|
|
|
### Fixed
|
|
|
|
- The transaction receipts for smart contract publish transactions now indicate
|
|
a result of `(err none)` if the top-level code of the smart contract contained
|
|
runtime error and include details about the error in the `vm_error` field of
|
|
the receipt. Fixes issues #3154, #3328.
|
|
- Added config setting `burnchain.wallet_name` which addresses blank wallets no
|
|
longer being created by default in recent bitcoin versions. Fixes issue #3596
|
|
- Use the current burnchain tip to lookup UTXOs (Issue #3733)
|
|
- The node now gracefully shuts down even if it is in the middle of a handshake with
|
|
bitcoind. Fixes issue #3734.
|
|
|
|
## [2.4.0.0.0]
|
|
This is a **consensus-breaking** release to revert consensus to PoX, and is the second fork proposed in SIP-022.
|
|
|
|
- [SIP-022](https://github.com/stacksgov/sips/blob/main/sips/sip-022/sip-022-emergency-pox-fix.md)
|
|
- [SIP-024](https://github.com/stacksgov/sips/blob/main/sips/sip-024/sip-024-least-supertype-fix.md)
|
|
|
|
### Fixed
|
|
- PoX is re-enabled and stacking resumes starting at Bitcoin block `791551`
|
|
- Peer network id is updated to `0x18000009`
|
|
- Adds the type sanitization described in SIP-024
|
|
|
|
This release is compatible with chainstate directories from 2.1.0.0.x and 2.3.0.0.x
|
|
|
|
## [2.3.0.0.2]
|
|
|
|
This is a high-priority hotfix release to address a bug in the
|
|
stacks-node miner logic which could impact miner availability.
|
|
|
|
This release is compatible with chainstate directories from 2.3.0.0.x and 2.1.0.0.x
|
|
|
|
## [2.3.0.0.1]
|
|
|
|
This is a hotfix release to update:
|
|
- peer version identifier used by the stacks-node p2p network.
|
|
- yield interpreter errors in deser_hex
|
|
|
|
This release is compatible with chainstate directories from 2.3.0.0.x and 2.1.0.0.x
|
|
|
|
## [2.3.0.0.0]
|
|
|
|
This is a **consensus-breaking** release to address a Clarity VM bug discovered in 2.2.0.0.1.
|
|
Tx and read-only calls to functions with traits as parameters are rejected with unchecked TypeValueError.
|
|
Additional context and rationale can be found in [SIP-023](https://github.com/stacksgov/sips/blob/main/sips/sip-023/sip-023-emergency-fix-traits.md).
|
|
|
|
This release is compatible with chainstate directories from 2.1.0.0.x.
|
|
|
|
## [2.2.0.0.1]
|
|
|
|
This is a **consensus-breaking** release to address a bug and DoS vector in pox-2's `stack-increase` function.
|
|
Additional context and rationale can be found in [SIP-022](https://github.com/stacksgov/sips/blob/main/sips/sip-022/sip-022-emergency-pox-fix.md).
|
|
|
|
This release is compatible with chainstate directories from 2.1.0.0.x.
|
|
|
|
## [2.1.0.0.3]
|
|
|
|
This is a high-priority hotfix release to address a bug in the
|
|
stacks-node miner logic which could impact miner availability. This
|
|
release's chainstate directory is compatible with chainstate
|
|
directories from 2.1.0.0.2.
|
|
|
|
## [2.1.0.0.2]
|
|
|
|
This software update is a hotfix to resolve improper unlock handling
|
|
in mempool admission. This release's chainstate directory is
|
|
compatible with chainstate directories from 2.1.0.0.1.
|
|
|
|
### Fixed
|
|
|
|
- Fix mempool admission logic's improper handling of PoX unlocks. This would
|
|
cause users to get spurious `NotEnoughFunds` rejections when trying to submit
|
|
their transactions (#3623)
|
|
|
|
## [2.1.0.0.1]
|
|
|
|
### Fixed
|
|
|
|
- Handle the case where a bitcoin node returns zero headers (#3588)
|
|
- The default value for `always_use_affirmation_maps` is now set to `false`,
|
|
instead of `true`. This was preventing testnet nodes from reaching the chain
|
|
tip with the default configuration.
|
|
- Reduce default poll time of the `chain-liveness` thread which reduces the
|
|
possibility that a miner thread will get interrupted (#3610).
|
|
|
|
## [2.1]
|
|
|
|
This is a **consensus-breaking** release that introduces a _lot_ of new
|
|
functionality. Details on the how and why can be found in [SIP-015](https://github.com/stacksgov/sips/blob/feat/sip-015/sips/sip-015/sip-015-network-upgrade.md),
|
|
[SIP-018](https://github.com/MarvinJanssen/sips/blob/feat/signed-structured-data/sips/sip-018/sip-018-signed-structured-data.md),
|
|
and [SIP-20](https://github.com/obycode/sips/blob/bitwise-ops/sips/sip-020/sip-020-bitwise-ops.md).
|
|
|
|
The changelog for this release is a high-level summary of these SIPs.
|
|
|
|
### Added
|
|
|
|
- There is a new `.pox-2` contract for implementing proof-of-transfer. This PoX
|
|
contract enables re-stacking while the user's STX are locked, and incrementing
|
|
the amount stacked on top of a locked batch of STX.
|
|
- The Clarity function `stx-account` has been added, which returns the account's
|
|
locked and unlocked balances.
|
|
- The Clarity functions `principal-destruct` and `principal-construct?`
|
|
functions have been added, which provide the means to convert between a
|
|
`principal` instance and the `buff`s and `string-ascii`s that constitute it.
|
|
- The Clarity function `get-burn-block-info?` has been added to support
|
|
fetching the burnchain header hash of _any_ burnchain block starting from the
|
|
sortition height of the Stacks genesis block, and to support fetching the PoX
|
|
addresses and rewards paid by miners for a particular burnchain block height.
|
|
- The Clarity function `slice` has been added for obtaining a sub-sequence of a
|
|
`buff`, `string-ascii`, `string-utf8`, or `list`.
|
|
- Clarity functions for converting between `string-ascii`, `string-utf8`,
|
|
`uint`, and `int` have been added.
|
|
- Clarity functions for converting between big- and little-endian
|
|
`buff` representations of `int` and `uint` have been added.
|
|
- The Clarity function `stx-transfer-memo?` has been added, which behaves the
|
|
same as `stx-transfer?` but also takes a memo argument.
|
|
- The Clarity function `is-standard` has been added to identify whether or not a
|
|
`principal` instance is a standard or contract principal.
|
|
- Clarity functions have been added for converting an arbitrary Clarity type to
|
|
and from its canonical byte string representation.
|
|
- The Clarity function `replace-at?` has been added for replacing a single item
|
|
in a `list`, `string-ascii`, `string-utf8`, or `buff`.
|
|
- The Clarity global variable `tx-sponsor?` has been added, which evaluates to
|
|
the sponsor of the transaction if the transaction is sponsored.
|
|
- The Clarity global variable `chain-id` has been added, which evaluates to the
|
|
4-byte chain ID of this Stacks network.
|
|
- The Clarity parser has been rewritten to be about 3x faster than the parser in
|
|
Stacks 2.05.x.x.x.
|
|
- Clarity trait semantics have been refined and made more explicit, so as to
|
|
avoid certain corner cases where a trait reference might be downgraded to a
|
|
`principal` in Clarity 1.
|
|
* Trait values can be passed to compatible sub-trait types
|
|
* Traits can be embedded in compound types, e.g. `(optional <my-trait>)`
|
|
* Traits can be assigned to a let-variable
|
|
- Fixes to unexpected behavior in traits
|
|
* A trait with duplicate function names is now an error
|
|
* Aliased trait names do not interfere with local trait definitions
|
|
- The comparison functions `<`, `<=`, `>`, and `>=` now work on `string-ascii`,
|
|
`string-utf8`, and `buff` based on byte-by-byte comparison (note that this is
|
|
_not_ lexicographic comparison).
|
|
- It is now possible to call `delegate-stx` from a burnchain transaction, just
|
|
as it is for `stack-stx` and `transfer-stx`.
|
|
|
|
### Changed
|
|
|
|
- The `delegate-stx` function in `.pox-2` can be called while the user's STX are
|
|
locked.
|
|
- If a batch of STX is not enough to clinch even a single reward slot, then the
|
|
STX are automatically unlocked at the start of the reward cycle in which they
|
|
are rendered useless in this capacity.
|
|
- The PoX sunset has been removed. PoX rewards will continue in perpetuity.
|
|
- Support for segwit and taproot addresses (v0 and v1 witness programs) has been
|
|
added for Stacking.
|
|
- The Clarity function `get-block-info?` now supports querying a block's total
|
|
burnchain spend by miners who tried to mine it, the spend by the winner, and
|
|
the total block reward (coinbase plus transaction fees).
|
|
- A block's coinbase transaction may specify an alternative recipient principal,
|
|
which can be either a standard or contract principal.
|
|
- A smart contract transaction can specify which version of Clarity to use. If
|
|
no version is given, then the epoch-default version will be used (in Stacks
|
|
2.1, this is Clarity 2).
|
|
- The Stacks node now includes the number of PoX anchor blocks in its
|
|
fork-choice rules. The best Stacks fork is the fork that (1) is on the best
|
|
Bitcoin fork, (2) has the most PoX anchor blocks known, and (3) is the longest.
|
|
- On-burnchain operations -- `stack-stx`, `delegate-stx`, and `transfer-stx` --
|
|
can take effect within six (6) burnchain blocks in which they are mined,
|
|
instead of one.
|
|
- Transaction fees are debited from accounts _before_ the transaction is
|
|
processed.
|
|
- All smart contract analysis errors are now treated as runtime errors, meaning
|
|
that smart contract transactions which don't pass analysis will still be mined
|
|
(so miners get paid for partially validating them).
|
|
- The default Clarity version is now 2. Users can opt for version 1 by using
|
|
the new smart contract transaction wire format and explicitly setting version
|
|
|
|
### Fixed
|
|
|
|
- The authorization of a `contract-caller` in `.pox-2` for stacking will now
|
|
expire at the user-specified height, if given.
|
|
- The Clarity function `principal-of?` now works on mainnet.
|
|
- One or more late block-commits no longer result in the miner losing its
|
|
sortition weight.
|
|
- Documentation will indicate explicitly which Clarity version introduced each
|
|
keyword or function.
|
|
|
|
## [2.05.0.6.0]
|
|
|
|
### Changed
|
|
|
|
- The `/v2/neighbors` endpoint now reports a node's bootstrap peers, so other
|
|
nodes can find high-quality nodes to boot from (#3401)
|
|
- If there are two or more Stacks chain tips that are tied for the canonical
|
|
tip, the node deterministically chooses one _independent_ of the arrival order
|
|
(#3419).
|
|
- If Stacks blocks for a different fork arrive out-of-order and, in doing so,
|
|
constitute a better fork than the fork the node considers canonical, the node
|
|
will update the canonical Stacks tip pointer in the sortition DB before
|
|
processing the next sortition (#3419).
|
|
|
|
### Fixed
|
|
|
|
- The node keychain no longer maintains any internal state, but instead derives
|
|
keys based on the chain tip the miner is building off of. This prevents the
|
|
node from accidentally producing an invalid block that reuses a microblock
|
|
public key hash (#3387).
|
|
- If a node mines an invalid block for some reason, it will no longer stall
|
|
forever. Instead, it will detect that its last-mined block is not the chain
|
|
tip, and resume mining (#3406).
|
|
|
|
## [2.05.0.5.0]
|
|
|
|
### Changed
|
|
|
|
- The new minimum Rust version is 1.61
|
|
- The act of walking the mempool will now cache address nonces in RAM and to a
|
|
temporary mempool table used for the purpose, instead of unconditionally
|
|
querying them from the chainstate MARF. This builds upon improvements to mempool
|
|
goodput over 2.05.0.4.0 (#3337).
|
|
- The node and miner implementation has been refactored to remove write-lock
|
|
contention that can arise when the node's chains-coordinator thread attempts to store and
|
|
process newly-discovered (or newly-mined) blocks, and when the node's relayer
|
|
thread attempts to mine a new block. In addition, the miner logic has been
|
|
moved to a separate thread in order to avoid starving the relayer thread (which
|
|
must handle block and transaction propagation, as well as block-processing).
|
|
The refactored miner thread will be preemptively terminated and restarted
|
|
by the arrival of new Stacks blocks or burnchain blocks, which further
|
|
prevents the miner from holding open write-locks in the underlying
|
|
chainstate databases when there is new chain data to discover (which would
|
|
invalidate the miner's work anyway). (#3335).
|
|
|
|
### Fixed
|
|
|
|
- Fixed `pow` documentation in Clarity (#3338).
|
|
- Backported unit tests that were omitted in the 2.05.0.3.0 release (#3348).
|
|
|
|
## [2.05.0.4.0]
|
|
|
|
### Fixed
|
|
|
|
- Denormalize the mempool database so as to remove a `LEFT JOIN` from the SQL
|
|
query for choosing transactions in order by estimated fee rate. This
|
|
drastically speeds up mempool transaction iteration in the miner (#3314)
|
|
|
|
|
|
## [2.05.0.3.0]
|
|
|
|
### Added
|
|
|
|
- Added prometheus output for "transactions in last block" (#3138).
|
|
- Added envrionement variable STACKS_LOG_FORMAT_TIME to set the time format
|
|
stacks-node uses for logging. (#3219)
|
|
Example: STACKS_LOG_FORMAT_TIME="%Y-%m-%d %H:%M:%S" cargo stacks-node
|
|
- Added mock-miner sample config (#3225)
|
|
|
|
### Changed
|
|
|
|
- Updates to the logging of transaction events (#3139).
|
|
- Moved puppet-chain to `./contrib/tools` directory and disabled compiling by default (#3200)
|
|
|
|
### Fixed
|
|
|
|
- Make it so that a new peer private key in the config file will propagate to
|
|
the peer database (#3165).
|
|
- Fixed default miner behavior regarding block assembly
|
|
attempts. Previously, the miner would only attempt to assemble a
|
|
larger block after their first attempt (by Bitcoin RBF) if new
|
|
microblock or block data arrived. This changes the miner to always
|
|
attempt a second block assembly (#3184).
|
|
- Fixed a bug in the node whereby the node would encounter a deadlock when
|
|
processing attachment requests before the P2P thread had started (#3236).
|
|
- Fixed a bug in the P2P state machine whereby it would not absorb all transient errors
|
|
from sockets, but instead propagate them to the outer caller. This would lead
|
|
to a node crash in nodes connected to event observers, which expect the P2P
|
|
state machine to only report fatal errors (#3228)
|
|
- Spawn the p2p thread before processing number of sortitions. Fixes issue (#3216) where sync from genesis paused (#3236)
|
|
- Drop well-formed "problematic" transactions that result in miner performance degradation (#3212)
|
|
- Ignore blocks that include problematic transactions
|
|
|
|
|
|
## [2.05.0.2.1]
|
|
|
|
### Fixed
|
|
- Fixed a security bug in the SPV client whereby the chain work was not being
|
|
considered at all when determining the canonical Bitcoin fork. The SPV client
|
|
now only accepts a new Bitcoin fork if it has a higher chain work than any other
|
|
previously-seen chain (#3152).
|
|
|
|
## [2.05.0.2.0]
|
|
|
|
### IMPORTANT! READ THIS FIRST
|
|
|
|
Please read the following **WARNINGs** in their entirety before upgrading.
|
|
|
|
WARNING: Please be aware that using this node on chainstate prior to this release will cause
|
|
the node to spend **up to 30 minutes** migrating the data to a new schema.
|
|
Depending on the storage medium, this may take even longer.
|
|
|
|
WARNING: This migration process cannot be interrupted. If it is, the chainstate
|
|
will be **irrecovarably corrupted and require a sync from genesis.**
|
|
|
|
WARNING: You will need **at least 2x the disk space** for the migration to work.
|
|
This is because a copy of the chainstate will be made in the same directory in
|
|
order to apply the new schema.
|
|
|
|
It is highly recommended that you **back up your chainstate** before running
|
|
this version of the software on it.
|
|
|
|
### Changed
|
|
- The MARF implementation will now defer calculating the root hash of a new trie
|
|
until the moment the trie is committed to disk. This avoids gratuitous hash
|
|
calculations, and yields a performance improvement of anywhere between 10x and
|
|
200x (#3041).
|
|
- The MARF implementation will now store tries to an external file for instances
|
|
where the tries are expected to exceed the SQLite page size (namely, the
|
|
Clarity database). This improves read performance by a factor of 10x to 14x
|
|
(#3059).
|
|
- The MARF implementation may now cache trie nodes in RAM if directed to do so
|
|
by an environment variable (#3042).
|
|
- Sortition processing performance has been improved by about an order of
|
|
magnitude, by avoiding a slew of expensive database reads (#3045).
|
|
- Updated chains coordinator so that before a Stacks block or a burn block is processed,
|
|
an event is sent through the event dispatcher. This fixes #3015.
|
|
- Expose a node's public key and public key hash160 (i.e. what appears in
|
|
/v2/neighbors) via the /v2/info API endpoint (#3046)
|
|
- Reduced the default subsequent block attempt timeout from 180 seconds to 30
|
|
seconds, based on benchmarking the new MARF performance data during a period
|
|
of network congestion (#3098)
|
|
- The `blockstack-core` binary has been renamed to `stacks-inspect`.
|
|
This binary provides CLI tools for chain and mempool inspection.
|
|
|
|
### Fixed
|
|
- The AtlasDB previously could lose `AttachmentInstance` data during shutdown
|
|
or crashes (#3082). This release resolves that.
|
|
|
|
## [2.05.0.1.0]
|
|
|
|
### Added
|
|
- A new fee estimator intended to produce fewer over-estimates, by having less
|
|
sensitivity to outliers. Its characteristic features are: 1) use a window to
|
|
forget past estimates instead of exponential averaging, 2) use weighted
|
|
percentiles, so that bigger transactions influence the estimates more, 3)
|
|
assess empty space in blocks as having paid the "minimum fee", so that empty
|
|
space is accounted for, 4) use random "fuzz" so that in busy times the fees can
|
|
change dynamically. (#2972)
|
|
- Implements anti-entropy protocol for querying transactions from other
|
|
nodes' mempools. Before, nodes wouldn't sync mempool contents with one another.
|
|
(#2884)
|
|
- Structured logging in the mining code paths. This will shine light
|
|
on what happens to transactions (successfully added, skipped or errored) that the
|
|
miner considers while buildings blocks. (#2975)
|
|
- Added the mined microblock event, which includes information on transaction
|
|
events that occurred in the course of mining (will provide insight
|
|
on whether a transaction was successfully added to the block,
|
|
skipped, or had a processing error). (#2975)
|
|
- For v2 endpoints, can now specify the `tip` parameter to `latest`. If
|
|
`tip=latest`, the node will try to run the query off of the latest tip. (#2778)
|
|
- Adds the /v2/headers endpoint, which returns a sequence of SIP-003-encoded
|
|
block headers and consensus hashes (see the ExtendedStacksHeader struct that
|
|
this PR adds to represent this data). (#2862)
|
|
- Adds the /v2/data_var endpoint, which returns a contract's data variable
|
|
value and a MARF proof of its existence. (#2862)
|
|
- Fixed a bug in the unconfirmed state processing logic that could lead to a
|
|
denial of service (node crash) for nodes that mine microblocks (#2970)
|
|
- Added prometheus metric that tracks block fullness by logging the percentage of each
|
|
cost dimension that is consumed in a given block (#3025).
|
|
|
|
|
|
### Changed
|
|
- Updated the mined block event. It now includes information on transaction
|
|
events that occurred in the course of mining (will provide insight
|
|
on whether a transaction was successfully added to the block,
|
|
skipped, or had a processing error). (#2975)
|
|
- Updated some of the logic in the block assembly for the miner and the follower
|
|
to consolidate similar logic. Added functions `setup_block` and `finish_block`.
|
|
(#2946)
|
|
- Makes the p2p state machine more reactive to newly-arrived
|
|
`BlocksAvailable` and `MicroblocksAvailable` messages for block and microblock
|
|
streams that this node does not have. If such messages arrive during an inventory
|
|
sync, the p2p state machine will immediately transition from the inventory sync
|
|
work state to the block downloader work state, and immediately proceed to fetch
|
|
the available block or microblock stream. (#2862)
|
|
- Nodes will push recently-obtained blocks and microblock streams to outbound
|
|
neighbors if their cached inventories indicate that they do not yet have them
|
|
(#2986).
|
|
- Nodes will no longer perform full inventory scans on their peers, except
|
|
during boot-up, in a bid to minimize block-download stalls (#2986).
|
|
- Nodes will process sortitions in parallel to downloading the Stacks blocks for
|
|
a reward cycle, instead of doing these tasks sequentially (#2986).
|
|
- The node's runloop will coalesce and expire stale requests to mine blocks on
|
|
top of parent blocks that are no longer the chain tip (#2969).
|
|
- Several database indexes have been updated to avoid table scans, which
|
|
significantly improves most RPC endpoint speed and cuts node spin-up time in
|
|
half (#2989, #3005).
|
|
- Fixed a rare denial-of-service bug whereby a node that processes a very deep
|
|
burnchain reorg can get stuck, and be rendered unable to process further
|
|
sortitions. This has never happened in production, but it can be replicated in
|
|
tests (#2989).
|
|
- Updated what indices are created, and ensures that indices are created even
|
|
after the database is initialized (#3029).
|
|
|
|
### Fixed
|
|
- Updates the lookup key for contracts in the pessimistic cost estimator. Before, contracts
|
|
published by different principals with the same name would have had the same
|
|
key in the cost estimator. (#2984)
|
|
- Fixed a few prometheus metrics to be more accurate compared to `/v2` endpoints
|
|
when polling data (#2987)
|
|
- Fixed an error message from the type-checker that shows up when the type of a
|
|
parameter refers to a trait defined in the same contract (#3064).
|
|
|
|
## [2.05.0.0.0]
|
|
|
|
This software update is a consensus changing release and the
|
|
implementation of the proposed cost changes in SIP-012. This release's
|
|
chainstate directory is compatible with chainstate directories from
|
|
2.0.11.4.0. However, this release is only compatible with chainstate
|
|
directories before the 2.05 consensus changes activate (Bitcoin height
|
|
713,000). If you run a 2.00 stacks-node beyond this point, and wish to
|
|
run a 2.05 node afterwards, you must start from a new chainstate
|
|
directory.
|
|
|
|
### Added
|
|
|
|
- At height 713,000 a new `costs-2` contract will be launched by the
|
|
Stacks boot address.
|
|
|
|
### Changed
|
|
|
|
- Stacks blocks whose parents are mined >= 713,000 will use default costs
|
|
from the new `costs-2` contract.
|
|
- Stacks blocks whose parents are mined >= 713,000 will use the real
|
|
serialized length of Clarity values as the cost inputs to several methods
|
|
that previously used the maximum possible size for the associated types.
|
|
- Stacks blocks whose parents are mined >= 713,000 will use the new block
|
|
limit defined in SIP-012.
|
|
|
|
### Fixed
|
|
|
|
- Miners are now more aggressive in calculating their block limits
|
|
when confirming microblocks (#2916)
|
|
|
|
## [2.0.11.4.0]
|
|
|
|
This software update is a point-release to change the transaction
|
|
selection logic in the default miner to prioritize by an estimated fee
|
|
rate instead of raw fee. This release's chainstate directory is
|
|
compatible with chainstate directories from 2.0.11.3.0.
|
|
|
|
### Added
|
|
|
|
- FeeEstimator and CostEstimator interfaces. These can be controlled
|
|
via node configuration options. See the `README.md` for more
|
|
information on the configuration.
|
|
- New fee rate estimation endpoint `/v2/fees/transaction` (#2872). See
|
|
`docs/rpc/openapi.yaml` for more information.
|
|
|
|
### Changed
|
|
|
|
- Prioritize transaction inclusion in blocks by estimated fee rates (#2859).
|
|
- MARF sqlite connections will now use `mmap`'ed connections with up to 256MB
|
|
space (#2869).
|
|
|
|
## [2.0.11.3.0]
|
|
|
|
This software update is a point-release to change the transaction selection
|
|
logic in the default miner to prioritize by fee instead of nonce sequence. This
|
|
release's chainstate directory is compatible with chainstate directories from
|
|
2.0.11.2.0.
|
|
|
|
## Added
|
|
|
|
- The node will enforce a soft deadline for mining a block, so that a node
|
|
operator can control how frequently their node attempts to mine a block
|
|
regardless of how congested the mempool is. The timeout parameters are
|
|
controlled in the `[miner]` section of the node's config file (#2823).
|
|
|
|
## Changed
|
|
|
|
- Prioritize transaction inclusion in the mempool by transaction fee (#2823).
|
|
|
|
## [2.0.11.2.0]
|
|
|
|
NOTE: This change resets the `testnet`. Users running a testnet node will need
|
|
to reset their chain states.
|
|
|
|
### Added
|
|
|
|
- `clarity-cli` will now also print a serialized version of the resulting
|
|
output from `eval` and `execute` commands. This serialization is in
|
|
hexademical string format and supports integration with other tools. (#2684)
|
|
- The creation of a Bitcoin wallet with BTC version `> 0.19` is now supported
|
|
on a private testnet. (#2647)
|
|
- `lcov`-compatible coverage reporting has been added to `clarity-cli` for
|
|
Clarity contract testing. (#2592)
|
|
- The `README.md` file has new documentation about the release process. (#2726)
|
|
|
|
### Changed
|
|
|
|
- This change resets the testnet. (#2742)
|
|
- Caching has been added to speed up `/v2/info` responses. (#2746)
|
|
|
|
### Fixed
|
|
|
|
- PoX syncing will only look back to the reward cycle prior to divergence,
|
|
instead of looking back over all history. This will speed up running a
|
|
follower node. (#2746)
|
|
- The UTXO staleness check is re-ordered so that it occurs before the RBF-limit
|
|
check. This way, if stale UTXOs reached the "RBF limit" a miner will recover
|
|
by resetting the UTXO cache. (#2694)
|
|
- Microblock events were being sent to the event observer when microblock data
|
|
was received by a peer, but were not emitted if the node mined the
|
|
microblocks itself. This made something like the private-testnet setup
|
|
incapable of emitting microblock events. Microblock events are now sent
|
|
even when self-mined. (#2653)
|
|
- A bug is fixed in the mocknet/helium miner that would lead to a panic if a
|
|
burn block occurred without a sortition in it. (#2711)
|
|
- Two bugs that caused problems syncing with the bitcoin chain during a
|
|
bitcoin reorg have been fixed (#2771, #2780).
|
|
- Documentation is fixed in cases where string and buffer types are allowed
|
|
but not covered in the documentation. (#2676)
|
|
|
|
## [2.0.11.1.0]
|
|
|
|
This software update is our monthly release. It introduces fixes and features for both developers and miners.
|
|
This release's chainstate directory is compatible with chainstate directories from 2.0.11.0.0.
|
|
|
|
## Added
|
|
|
|
- `/new_microblock` endpoint to notify event observers when a valid microblock
|
|
has been received (#2571).
|
|
- Added new features to `clarity-cli` (#2597)
|
|
- Exposing new mining-related metrics in prometheus (#2664)
|
|
- Miner's computed relative miner score as a percentage
|
|
- Miner's computed commitment, the min of their previous commitment and their median commitment
|
|
- Miner's current median commitment
|
|
- Add `key-for-seed` command to the `stacks-node` binary - outputs the associated secret key hex string
|
|
and WIF formatted secret key for a given "seed" value (#2658).
|
|
|
|
## Changed
|
|
|
|
- Improved mempool walk order (#2514).
|
|
- Renamed database `tx_tracking.db` to `tx_tracking.sqlite` (#2666).
|
|
|
|
## Fixed
|
|
|
|
- Alter the miner to prioritize spending the most recent UTXO when building a transaction,
|
|
instead of the largest UTXO. In the event of a tie, it uses the smallest UTXO first (#2661).
|
|
- Fix trait rpc lookups for implicitly implemented traits (#2602).
|
|
- Fix `v2/pox` endpoint, broken on Mocknet (#2634).
|
|
- Align cost limits on mocknet, testnet and mainnet (#2660).
|
|
- Log peer addresses in the HTTP server (#2667)
|
|
- Mine microblocks if there are no recent unprocessed Stacks blocks
|
|
|
|
## [2.0.11.0.0]
|
|
|
|
The chainstate directory has been restructured in this release. It is not
|
|
compatible with prior chainstate directories.
|
|
|
|
## Added
|
|
|
|
- `/drop_mempool_tx` endpoint to notify event observers when a mempool
|
|
transaction has been removed the mempool.
|
|
- `"reward_slot_holders"` field to the `new_burn_block` event
|
|
- CTRL-C handler for safe shutdown of `stacks-node`
|
|
- Log transactions in local db table via setting env `STACKS_TRANSACTION_LOG=1`
|
|
- New prometheus metrics for mempool transaction processing times and
|
|
outstanding mempool transactions
|
|
- New RPC endpoint with path `/v2/traits/contractAddr/contractName/traitContractName
|
|
/traitContractAddr/traitName` to determine whether a given trait is implemented
|
|
within the specified contract (either explicitly or implicitly).
|
|
- Re-activate the Atlas network for propagating and storing transaction
|
|
attachments. This re-enables off-chain BNS name storage.
|
|
- Re-activate microblock mining.
|
|
|
|
## Changed
|
|
|
|
- Improved chainstate directory layout
|
|
- Improved node boot up time
|
|
- Better handling of flash blocks
|
|
- The `/v2/pox` RPC endpoint was updated to include more useful
|
|
information about the current and next PoX cycles. For details, see
|
|
`docs/rpc-endpoints.md`
|
|
|
|
## Fixed
|
|
|
|
- Fixed faulty logic in the mempool that was still treating the transaction fee
|
|
as a fee rate, which prevented replace-by-fee from working as expected.
|
|
|
|
## [2.0.10.0.1]
|
|
|
|
This is a low-priority hotfix release to address a bug in the deserialization logic. The
|
|
chainstate directory of 2.0.10.0.1 is compatible with 2.0.10. This release also begins the
|
|
usage of the versioning scheme outlined in the [README.md](README.md).
|
|
|
|
## [2.0.10]
|
|
|
|
This is a low-priority hotfix release to address two bugs in the block downloader. The
|
|
chainstate directory of 2.0.10 is compatible with 2.0.9. If booting up a node from genesis, or
|
|
an existing node has stalled in downloading blocks, this hotfix is necessary for your
|
|
node.
|
|
|
|
## Fixed
|
|
|
|
- Bug in microblocks inventory vector calculation that included invalidated microblocks
|
|
as present bit. This bug will impact nodes booting up from genesis, but not affect nodes
|
|
currently running at the chain tip (#2518).
|
|
- Bug in microblocks downloader logic that would cause the stacks-node to fail to wake-up
|
|
to process newly arrived microblocks in certain instances (#2491).
|
|
|
|
## [2.0.9]
|
|
|
|
This is a hotfix release for improved handling of arriving Stacks blocks through
|
|
both the RPC interface and the P2P ineterface. The chainstate directory of
|
|
2.0.9 is compatible with the 2.0.8 chainstate.
|
|
|
|
## Fixed
|
|
|
|
- TOCTTOU bug fixed in the chain processing logic that, which now ensures that
|
|
an arriving Stacks block is processed at most once.
|
|
|
|
## [2.0.8] - 2021-03-02
|
|
|
|
This is a hotfix release for improved handling of static analysis storage and
|
|
improved `at-block` behavior. The chainstate directory of 2.0.8 is compatible with
|
|
the 2.0.7 chainstate.
|
|
|
|
## Fixed
|
|
|
|
- Improved static analysis storage
|
|
- `at-block` behavior in `clarity-cli` and unit tests (no changes in `stacks-node`
|
|
behavior).
|
|
|
|
## [2.0.7] - 2021-02-26
|
|
|
|
This is an emergency hotfix that prevents the node from accidentally deleting
|
|
valid block data if its descendant microblock stream is invalid for some reason.
|
|
|
|
## Fixed
|
|
|
|
- Do not delete a valid parent Stacks block.
|
|
|
|
|
|
## [2.0.6] - 2021-02-15
|
|
|
|
The database schema has not changed since 2.0.5, so when spinning up a
|
|
2.0.6 node from a 2.0.5 chainstate, you do not need to use a fresh
|
|
working directory. Earlier versions' chainstate directories are
|
|
incompatible, however.
|
|
|
|
### Fixed
|
|
|
|
- Miner RBF logic has two "fallback" logic changes. First, if the RBF
|
|
logic has increased fees by more than 50%, do not submit a new
|
|
transaction. Second, fix the "same chainstate hash" fallback check.
|
|
- Winning block txid lookups in the SortitionDB have been corrected
|
|
to use the txid during the lookup.
|
|
- The miner will no longer attempt to mine a new Stacks block if it receives a
|
|
microblock in a discontinuous microblock stream.
|
|
|
|
## [2.0.5] - 2021-02-12
|
|
|
|
The database schema has changed since 2.0.4, so when spinning up a 2.0.5
|
|
node from an earlier chainstate, you must use a fresh working directory.
|
|
|
|
### Added
|
|
|
|
- Miner heuristic for handling relatively large or computationally
|
|
expensive transactions: such transactions will be dropped from the
|
|
mempool to prevent miners from re-attempting them once they fail.
|
|
Miners can also now continue processing transactions that are
|
|
behind those transactions in the mempool "queue".
|
|
|
|
### Fixed
|
|
|
|
- Miner block assembly now uses the correct block limit available via
|
|
the node config
|
|
- `tx_fees_streamed_produced` fees are included in miner coinbase
|
|
events for event observers
|
|
- SQLite indexes are now correctly created on database instantion
|
|
|
|
### Changed
|
|
|
|
- STX unlock events are now sent over the events endpoint bundled
|
|
into an associated unlock transaction
|
|
- Atlas attachments networking endpoints are disabled for this
|
|
release, while networking issues are addressed in the
|
|
implementation
|
|
|
|
## [2.0.4] - 2021-02-07
|
|
|
|
### Changed
|
|
|
|
- Atlas attachments networking endpoints are disabled for this
|
|
release, while networking issues are addressed in the
|
|
implementation.
|
|
|
|
## [2.0.3] - 2021-02-04
|
|
|
|
### Added
|
|
|
|
- `stacks-node --mine-at-height` commandline option, which tells the
|
|
`stacks-node` not to mine until it has synchronized to the given
|
|
Stacks block height
|
|
- A new RPC endpoint `/v2/blocks/upload/{consensus_hash}` that accepts
|
|
an uploaded a Stacks block for a given sortition
|
|
|
|
### Changed
|
|
|
|
- Enabled WAL mode for the chainstate databases. This allows much more
|
|
concurrency in the `stacks-node`, and improves network performance
|
|
across the board. **NOTE:** *This changed the database schema, any
|
|
running node would need to re-initialize their nodes from a new chain
|
|
state when upgrading*.
|
|
- Default value `wait_time_for_microblocks`: from 60s to 30s
|
|
- The mempool now performs more transfer semantics checks before admitting
|
|
a transaction (e.g., reject if origin = recipient): see issue #2354
|
|
- Improved the performance of the code that handles `GetBlocksInv` p2p
|
|
messages by an order of magnitude.
|
|
- Improved the performance of the block-downloader's block and
|
|
microblock search code by a factor of 5x.
|
|
|
|
### Fixed
|
|
|
|
- Miner mempool querying now works across short-lived forks: see issue #2389
|
|
- JSON deserialization for high-depth JSON objects
|
|
- Atlas attachment serving: see PR #2390
|
|
- Address issues #2379, #2356, #2347, #2346. The tracking of the
|
|
`LeaderBlockCommit` operations inflight is improved, drastically
|
|
reducing the number of block commit rejections. When
|
|
a`LeaderBlockCommit` is not included in the Bitcoin block it was
|
|
targeting, it is condemned to be rejected, per the Stacks
|
|
consensus. To avoid wasting BTC, the miner now tries to send its
|
|
next `LeaderBlockCommit` operations using the UTXOs of the previous
|
|
transaction with a replacement by fee. The fee increase increments
|
|
can be configured with the setting `rbf_fee_increment`.
|