Releases: LedgerHQ/satstack
v0.11.1-beta
Changelog
- Fix bug with auto-detection of
lss.json
file.
v0.11.0-beta
Changelog
-
Utilize
txindex
for synchronizing, whenever possible. Havingtxindex
enabled in bitcoind, while not essential for synchronizing accounts or creating transactions, is useful for building the full transaction history. (f55dd59)If missing fields such as "from address" and "fees" bother you, consider setting
txindex=1
in yourbitcoin.conf
. SatStack will automatically detect the presence oftxindex
and use it whenever possible. -
Expose satstack version in the status endpoint. See example response below. (8fe3e2e)
GET /blockchain/v3/explorer/status { "version": "v0.10.0-beta", "txindex": false, "block_filter": false, "pruned": false, "chain": "test", "currency": "btc_testnet", "status": "scanning", "scan_progress": 19.805744612838293 }
-
Add endpoint to check if descriptor has been imported. (3188311)
It checks if the first address derived from the given descriptor is being watched by bitcoind. See an example below.
POST /control/descriptors/has { "descriptor": "sh(wpkh(tpubDCuopxz...rhHqhsW/0/*))" } Response: { "exists": false }
⚠️ A response of{"exists": true}
does NOT imply that the descriptor is ready to be used for synchronization. You should wait thestatus
to beready
. -
Add some new fortunes for the cowsay. (332801e)
v0.10.0-beta
Changelog
v0.10.0-beta
is the first beta release of satstack, going into an internal QA phase at Ledger.
👉 Introduce workers for Initial Block Download and importing descriptors
This refactoring allows for better control over long-running tasks, and gracefully shutting down RPC connections, goroutines, and explorer server. It also fixes some long-standing memory leaks in connection objects. As a result of this refactoring, we also now have progress logs for descriptor imports! 🎉
👉 Consistent statuses
The Bus
status (exposed by the /blockchain/v3/explorer/status
endpoint) is now (almost) stateless. Instead of querying the status from the Bus
state, it is computed on the fly, thereby always reflecting the truth. As of this release, satstack supports the following statuses:
node-disconnected
→ bitcoind is unreachablesyncing
→ during IBDpending-scan
→ sync is complete, waiting for descriptor scan. Typically Satstack is performing some checks (ex, circulating supply) in the background.scanning
→ importing descriptorsready
→ satstack is ready to receive explorer requests from Ledger Live.
/blockchain/v3/explorer/status
endpoint is now slightly heavier due to the underlying RPC calls. Please consider throttling your HTTP requests to this endpoint. Depending on the busyness of the node, the response time could be anything in between 5ms - 5s.
initializing
- this is no longer used in the code but still kept for the future.
👉 Bitcoin fortunes
On startup, satstack displays a randomly picked Bitcoin fortune from a curated collection of interesting quotes, facts, email excerpts, and relics of the past. There are 47 fortunes included in this release. Contributions are most welcome!
v0.9.0-alpha
Changelog
Implement native transaction parser to improve performance
Fetching transaction details in satstack involves two operations:
- Obtaining the raw transaction hex.
- Decoding the raw hex according to the Bitcoin wire protocol.
Both these operations are performed by bitcoind, and therefore incurs the cost of RPC communication. SatStack is now able to decode the raw transactions natively, thus saving an extra round-trip to the Bitcoin node. This is possible thanks to btcd's wire package.
An average speedup of ~33% was observed for synchronization from scratch and ~45% for subsequent synchronizations.
Miscellaneous fixes and improvements
- Handle coinbase transactions with witness data.
⚠️ Remove theGET /blockchain/<version>/<network>/transaction/:hash
endpoint.- This endpoint was unused.
- Never use Bitcoin Core's
txindex
to build decoded transactions, since building transactions withouttxindex
is now just as fast. - Refactor UTXO map builder to make it more lightweight.
- Fix regression with broadcasting transactions to the network.
- The bug has been fixed upstream. (btcsuite/btcd@9e8bb3e)
v0.8.1-alpha
Changelog
- Fix regression causing panic when node disconnected. (a27aec9)
- Bug reported here: https://twitter.com/lounes_kmt/status/1314974600116293632
v0.8.0-alpha
Changelog
- Check if wallet features are disabled on startup. (f5cda55)
- Create and use a dedicated wallet in the Bitcoin node called
satstack
, to avoid polluting the default wallet. (fef8f7f)⚠️ If you previously imported accounts via SatStack, it's recommended to delete your node's wallet before upgrading.
- Gracefully unload the wallet on an interrupt signal. (82aac02)
- Fix bug encountered when multiple wallets are already loaded in the node.
v0.7.0-alpha
Changelog
- SatStack has a new home under the LedgerHQ GitHub organization. (de190b7) 🏡
- Auto-detect BIP-157 compact block filters. (5405578)
- Can offer minor speedup during chain rescans. A benchmark is available here.
- A new boolean field called
block_filter
is now available in the response ofGET /blockchain/v?/explorer/status
.
- Implement zero-configuration mode (see #35) for dynamically importing descriptors. (7434ec0) 0️⃣
- #RunTheNumbers on startup. (faefe98)
- Performs inflation checks on the Bitcoin supply. Works for both mainnet and testnet3.
- Perform Bitcoin Core version check on startup. (d9b89f7)
v0.6.0-alpha
Changelog
- Automatically load config file from Ledger Live user data folder, if available.
- Upstream all commits on the onyb/btcd fork to btcsuite/btcd. LSS now uses an unmodified version of btcd! 🎉
- Track the node sync and descriptor scanning status on the Bitcoin node.
- Add a new handler to return explorer status:
GET /blockchain/v2/explorer/status
Example response:{ "txindex": false, "pruned": false, "chain": "test", "currency": "btc_testnet", "status": "ready" }
- Implement RPC client pooling using a buffered channel. 🎱
- This brings concurrency to LSS and opens the door to future performance improvements.
- Update the
getdescriptor
Python script to extract descriptors on both external and internal chains. - Update the Go module system and build scripts.
v0.5.0-alpha
Changelog
- Account birthday is now set to
2013/09/10
by default. - Specify external and internal output descriptors in the config file, based on feedback received in #24.
- This makes configuration of accounts based on receive and change output descriptors, which is the canonical form in Bitcoin Core.
⚠️ This is a breaking change. Please update your config file to the new format.
- Avoid unnecessary
getblock
RPC calls while fetching transactions for addresses.⚠️ Upgrade of Bitcoin Core necessary. Minimum required version of Bitcoin Core bumped to0.20.0
in order to support this.
- LSS is now agnostic of Ledger Blockchain Explorer API v2 and v3.
- Setting of
EXPERIMENTAL_EXPLORERS=1
is no longer necessary. The LSS API provides dual-support for both versions.
- Setting of
- Enable sending transactions WITHOUT
txindex=1
. - Small improvements to the CI setup with GitHub Actions.
v0.4.0-alpha
Changelog
- Migrate to Go 1.15.
- Migrate to mage as the build tool.
- Use
-ldflags
to display build-time information at startup. - Revamp
config
package with better error handling and validation. - Assume account birthday to be
2016/06/01
by default.- Based on the launch date of Ledger Nano S.
- Search for the config file in multiple standard paths.
- LSS will look in the current directory first, followed by the user's home directory.
- Switch to a configuration format purely based on output descriptors.
⚠️ This is a breaking change. Please update your config file to the new format.