satstack

Bitcoin full node with Ledger Live

BSD-2-CLAUSE License

Stars
158
Committers
12

Bot releases are hidden (Show)

satstack - v0.12.0

Published by onyb almost 4 years ago

SatStack is now out of beta! 🎉

Thanks to everyone who contributed to the project, especially the early testers on Twitter and members of our Beta testers programme.

Read about the motivations and design rationale behind this project here: https://blog.ledger.com/satstack
To get started, please follow our dedicated Support article: https://support.ledger.com/hc/en-us/articles/360017551659

(this release has no changelog)

satstack - v0.11.1-beta

Published by onyb almost 4 years ago

Changelog

  • Fix bug with auto-detection of lss.json file.
satstack - v0.11.0-beta

Published by onyb almost 4 years ago

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)

satstack - v0.10.0-beta

Published by onyb almost 4 years ago

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

satstack - v0.9.0-alpha

Published by onyb almost 4 years ago

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.
satstack - v0.8.1-alpha

Published by onyb about 4 years ago

Changelog

satstack - v0.8.0-alpha

Published by onyb about 4 years ago

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.
satstack - v0.7.0-alpha

Published by onyb about 4 years ago

Changelog

  • SatStack has a new home under the LedgerHQ GitHub organization. (de190b7) 🏡
  • Auto-detect BIP-157 compact block filters. (5405578931ab15343ad167774562bebbc9aff113)
    • 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. (7434ec00f48f69d55d0a863e7c703162fd8ef220) 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)
satstack - v0.6.0-alpha

Published by onyb about 4 years ago

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.
satstack - v0.5.0-alpha

Published by onyb about 4 years ago

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.
satstack - v0.4.0-alpha

Published by onyb about 4 years ago

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.
satstack - v0.3.0-alpha

Published by onyb over 4 years ago

Changelog

  • Main entrypoint command is now called lss, instead of main.
  • The configuration file is now expected to be called .lss.json in user's home directory.
    • Please remember to do mv ~/.sats.json ~/.lss.json to avoid a crash while starting lss.
satstack - v0.2.0-alpha

Published by onyb over 4 years ago

Changelog

  • New script scripts/getdescriptor to retrieve output descriptor from Ledger device.
    • Added support for main, test, and regtest chains.
    • Introduce a class to make the representation of BIP32 derivations less prone to errors.
  • Support configuration using output descriptors.
    • Legacy configuration using xpub, index, and derivationMode is still supported, for backwards compatibility.
satstack - First alpha release

Published by onyb over 4 years ago

This release is the first testable version of Ledger Sats Stack. Users are invited to try out the software and provide feedback. Please refer to the instructions in README.md file to get started.

⚠️ Warning: Please expect breaking changes until a stable v1.0.0 release, especially in the configuration format.

Package Rankings
Top 5.38% on Proxy.golang.org