github stacks-sbtc/sbtc v1.1.0

27 days ago

A feature release of the sBTC signer which provides the required functionality for altering the set of signers in the signing set, as well as a number of fixes and improvements addressing the security, performance, robustness of the signer.

Highlights • Images • Upgrade Instructions • What's Changed

✨ Highlights

  • Reliance on Bitcoin Core's ZMQ functionality has been removed in favor of RPC-polling
  • Support for signer rotation (growing/shrinking/altering the active signer set and/or re-keying)
  • Additional prometheus metrics (P2P + Stacks contract reads)

🐳 Images:

Important

Always use immutable image tags - the image digests are provided below. Verify the attestation of these images using this guide.

We publish our images on GitHub Container Registry.

sBTC Signer

ghcr.io/stacks-sbtc/sbtc:signer-v1.1.0@sha256:8d1776001c57e8b6086239a111c96b490593a378d48525a8f2b27a859451d5e3

  • 🏷️ stacks-sbtc/sbtc:signer-v1.1.0
  • 🔒 sha256:8d1776001c57e8b6086239a111c96b490593a378d48525a8f2b27a859451d5e3

Blocklist Client

ghcr.io/stacks-sbtc/sbtc:blocklist-client-v1.1.0@sha256:5250cb8acd3b112d85b8ed10c848d61fdb4089104067dc1df8ad444da7e68b0f

  • 🏷️ stacks-sbtc/sbtc:blocklist-client-v1.1.0
  • 🔒 sha256:5250cb8acd3b112d85b8ed10c848d61fdb4089104067dc1df8ad444da7e68b0f

📙 Database migrations

Important

If you run your signer using the --migrate-db flag, database migrations will be applied automatically. If you do not use this flag, you must manually apply the migrations.

--migrate-db is enabled by default in our official Docker images.

Database migrations may be found at signer/migrations.

🛠️ Upgrade Instructions:

Note

  • No configuration updates are required at this time.
  • This release contains database migrations.
  1. Stop your sBTC signer
  2. Backup your database
  3. Database migrations:
    • (recommended) If you run your signer with --migrate-db, database migrations will be automatically applied upon startup,
    • (advanced) Otherwise, apply database migrations manually
  4. Update your sBTC images to those specified above
  5. Restart your sBTC signer and blocklist client

📝 What's Changed

Other Changes

Click to expand
  • feat: drop stacks transactions and transactions tables by @djordon in #1601
  • fix: add dependencies to build ecdsa on mac by @Jiloc in #1611
  • fix: emily-cron hiro api usage by @Jiloc in #1608
  • [chore]: use wrapper structs for heights by @MCJOHN974 in #1614
  • fix: Adjust the Build Reference by @fabergat in #1621
  • feat: write stacks block hash with key rotation events by @djordon in #1599
  • [fix]: Emily don't return Error on limits/ if rolling window calculation failed by @MCJOHN974 in #1623
  • [feat] add fund-btc command to signers.sh by @cylewitruk in #1624
  • fix(tests): fixes for signer utxo tests by @djordon in #1600
  • feat: fetch stacks block headers instead of the blocks by @djordon in #1604
  • chore: clean-up logging in Emily v1 by @djordon in #1627
  • chore: make bootstrap_signer_set containing self pubkey mandatory by @MCJOHN974 in #1618
  • [feat] remove trusted api key from Emily by @MCJOHN974 in #1586
  • fix: add compound primary key to rotate_keys_transactions table by @djordon in #1640
  • chore: remove openssl by @MCJOHN974 in #1652
  • [chore]: use cargo clippy in tests by @MCJOHN974 in #1607
  • chore: add uv and python venvs installation by @Jiloc in #1650
  • chore: integrate python tests by @Jiloc in #1651
  • feat: sidecar RBF management by @Jiloc in #1506
  • [chore]: remove bitcoin::fees module by @MCJOHN974 in #1663
  • CI: Use Wrapped External Actions From stacks-sbtc/actions Repository by @BowTiedDevOps in #1606
  • build: do not build emily with testing feature by @djordon in #1660
  • feat: coordinator processes requests on DKG failure by @setzeus in #1612
  • chore: use get_rng in should_process_withdrawals by @matteojug in #1655
  • feat: make the getblock RPC return detailed transacation info by @djordon in #1642
  • chore: add missing drop_db in tests by @matteojug in #1675
  • [chore] use display implementations in Emily reply by @MCJOHN974 in #1665
  • chore: bump rust to 1.87 and address new clippy lint warnings by @cylewitruk in #1679
  • feat: read chain of sweep transactions as part of updating by @djordon in #1669
  • chore: don't sort items in packaging by @MCJOHN974 in #1664
  • feat: sidecar long pending deposits management by @Jiloc in #1507
  • fix: EMILY_API_KEY name mismatch in docker by @Jiloc in #1687
  • feat: add timestamp support for sqlx+postgres integration by @cylewitruk in #1682
  • test: add devenv forking test for deposit by @matteojug in #1585
  • [feat] trigger dkg on changed signer set by @MCJOHN974 in #1602
  • fix: emily-cron local mempool by @Jiloc in #1692
  • [feat]: restrict more then 16 signers by @MCJOHN974 in #1695
  • feat: implement core storage transaction support + in-memory implementation by @cylewitruk in #1674
  • feat: Emily process all update events. by @MCJOHN974 in #1653
  • fix: Update docker compose to the last version by @fabergat in #1646
  • fix: sign stacks tx once per tenure per request by @matteojug in #1691
  • Update Actions Versions, Fix Outputs by @BowTiedDevOps in #1680
  • fix: skip DKG if latest shares are unverified by @matteojug in #1705
  • fix: clear sources in Dockerfile before the COPY by @djordon in #1704
  • refactor: centralize more metric logic by @djordon in #1699
  • Add Workflow to Deploy Emily by @BowTiedDevOps in #1681
  • chore: update bitcoin testnet chainstate archive by @matteojug in #1710
  • [feat]: Emily don't reorg for very old chaintips by @MCJOHN974 in #1667
  • P2P Metric by @setzeus in #1702
  • feat: store hashes of reclaim scripts in signer db by @MCJOHN974 in #1703
  • feat: enhance signers script pubkey check by @djordon in #1722
  • fix: use the correct signer set during DKG and signing rounds by @djordon in #1707
  • fix: don't decrement nonce on mempool conflict by @matteojug in #1735
  • feat: integral support for storage transactions + bitcoin transaction processing in transaction by @cylewitruk in #1673
  • feat: skip coordinator tenure after a key rotation by @djordon in #1740
  • feat: do not use aggregate key in stacks sign requests by @djordon in #1732
  • fix: Fix the Git Commit Reference during image building by @fabergat in #1754
  • feat: additional test helpers & utilities (part 1) by @cylewitruk in #1726
  • [chore]: fix some markdown lint issues by @MCJOHN974 in #1758
  • fix: specify the event name in the wait-list of wait-other-jobs by @djordon in #1762
  • chore: use transactions in database migrations by @djordon in #1761
  • [feat]: add RBF status to Emily by @MCJOHN974 in #1686
  • fix: support brand new bootstrap signer set by @djordon in #1752
  • chore: Split deposit and withdrawal status on Emily by @MCJOHN974 in #1745
  • chore: remove reprocessing status from Emily by @MCJOHN974 in #1744
  • feat: use stacks core for signer set data by @djordon in #1734
  • [feat] allow one pre-sign request per block by @MCJOHN974 in #1757
  • chore: introduce make fix command by @MCJOHN974 in #1748
  • feat: return proper error in Emily batch requests by @MCJOHN974 in #1743
  • feat: generate recoverable private shares during dkg by @djordon in #1746
  • feat: remove verification if past verification window by @setzeus in #1768
  • feat: forgo unnecessary db query when fetching pending deposits by @djordon in #1774
  • feat: add metrics for smart contract read requests by @djordon in #1769
  • feat: set the sign and dkg IDs in wsts coordinator state machines by @djordon in #1776
  • fix: do not fetch bitcoin chain tip from db by @djordon in #1771
  • feat: update action hash by @djordon in #1786
  • [chore]: exclude codegen from clippy by @MCJOHN974 in #1784
  • [chore]: bump rust & use Makefile in CI lints by @MCJOHN974 in #1783
  • testing: skip importing already-loaded descriptors when initializing the local faucet by @cylewitruk in #1779
  • chore: bump stacks to 3.2 by @matteojug in #1790
  • chore: fix the bitcoin-miner's script in devenv to not crash if bitcoin is unavailable by @cylewitruk in #1794
  • feat: skip running DKG if config differs from registry but latest shares matches config by @matteojug in #1795
  • feat: consistent waiting per observed bitcoin block by @djordon in #1793
  • feat: log presign on send and validate by @matteojug in #1798
  • chore: update wsts dependency by @xoloki in #1789
  • feat: #1136 persist known, valid p2p peers & consider them during bootstrapping by @cylewitruk in #1689
  • feat: remove bitcoin-core ZMQ in favor of RPC polling for new-block detection by @cylewitruk in #1780
  • [feat]: add node info logger && enable debug logs in devenv by @MCJOHN974 in #1787
  • Revert "chore: update wsts dependency" by @djordon in #1808
  • fix: no more flaky sign_bitcoin_transaction integration test by @djordon in #1813
  • feat: move coordinator checks for smart contract deployment to block observer by @djordon in #1812

Full Changelog: v1.0.2...v1.1.0

Don't miss a new sbtc release

NewReleases is sending notifications on new releases.