Skip to content

Releases: LedgerHQ/satstack

v0.11.1-beta

02 Dec 13:04
Compare
Choose a tag to compare

Changelog

  • Fix bug with auto-detection of lss.json file.

v0.11.0-beta

01 Dec 01:34
Compare
Choose a tag to compare

Changelog

  • Utilize txindex for synchronizing, whenever possible. Having txindex 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 your bitcoin.conf. SatStack will automatically detect the presence of txindex 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 the status to be ready.

  • Add some new fortunes for the cowsay. (332801e)

v0.10.0-beta

24 Nov 09:08
Compare
Choose a tag to compare

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! 🎉

Screenshot 2020-11-24 at 02 17 13

👉 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 unreachable
  • syncing → during IBD
  • pending-scan → sync is complete, waiting for descriptor scan. Typically Satstack is performing some checks (ex, circulating supply) in the background.
  • scanning → importing descriptors
  • ready → satstack is ready to receive explorer requests from Ledger Live.

⚠️ The /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.

⚠️ There was a status called 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!

Screenshot 2020-11-24 at 02 19 11

v0.9.0-alpha

16 Nov 12:11
Compare
Choose a tag to compare
v0.9.0-alpha Pre-release
Pre-release

Changelog

Implement native transaction parser to improve performance

Fetching transaction details in satstack involves two operations:

  1. Obtaining the raw transaction hex.
  2. 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 the GET /blockchain/<version>/<network>/transaction/:hash endpoint.
    • This endpoint was unused.
  • Never use Bitcoin Core's txindex to build decoded transactions, since building transactions without txindex is now just as fast.
  • Refactor UTXO map builder to make it more lightweight.
  • Fix regression with broadcasting transactions to the network.

v0.8.1-alpha

10 Oct 19:00
Compare
Choose a tag to compare
v0.8.1-alpha Pre-release
Pre-release

Changelog

v0.8.0-alpha

10 Oct 16:02
Compare
Choose a tag to compare
v0.8.0-alpha Pre-release
Pre-release

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

05 Oct 10:03
Compare
Choose a tag to compare
v0.7.0-alpha Pre-release
Pre-release

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 of GET /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

28 Sep 13:53
Compare
Choose a tag to compare
v0.6.0-alpha Pre-release
Pre-release

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.
    • This value is stored in the Bus struct.
    • Possible values and their meanings can be found here.
  • 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

07 Sep 00:32
Compare
Choose a tag to compare
v0.5.0-alpha Pre-release
Pre-release

Changelog

  • Account birthday is now set to 2013/09/10 by default.
    • This corresponds to the date on which BIP-0039 was proposed.
    • The README has also been updated to help users choose safe dates for account birthdays.
  • 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 to 0.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.
  • Enable sending transactions WITHOUT txindex=1.
  • Small improvements to the CI setup with GitHub Actions.

v0.4.0-alpha

30 Aug 00:32
Compare
Choose a tag to compare
v0.4.0-alpha Pre-release
Pre-release

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.