This is a milestone release which introduces support for withdrawals/peg-outs together with a number of other fixes and improvements.
Highlights • Images • Upgrade Instructions • What's Changed
✨ Highlights
- Full support for withdrawals (peg-outs) 🎉
- A number of security and reliability improvements
🐳 Images:
⚠️ 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 Dockerhub.
sBTC Signer
- 🏷️
blockstack/sbtc:signer-v1.0.0
- 🔒
sha256:71ec6b812bab0d5ba637ab88d00986e8751967ec5bf8be178eb7ed28e09224f9
Blocklist Client
- 🏷️
blockstack/sbtc:blocklist-client-v1.0.0
- 🔒
sha256:f5967f0e1e8b847dbbbe4d4275dbf04a5c830382b5eadb3ee88a2ce91114a5dc
📙 Database migrations
Migrations can be found at signer/migrations
.
🛠️ Upgrade Instructions:
- Stop your sBTC signer
- Backup your database
- Database migrations:
- (recommended) If you run your signer with
--migrate-db
, database migrations will automatically be applied upon startup, - (advanced) Otherwise, apply database migrations manually
- (recommended) If you run your signer with
- Update your sBTC images to those specified above
- Restart your sBTC signer and blocklist client
What's Changed
Protocol Breaking Changes 🚨
- feat: implement validation using the
WithdrawalRequestReport
by @djordon in #1352 - Update to wsts 13 by @xoloki in #1265
- feat: remove signer vote bitmaps from transactions by @djordon in #1508
Other Changes
Click to expand
- Revert "[feature] Ignore withdrawals in transaction coordinator (#1011)" by @Jiloc in #1332
- [chore] consolidate withdrawals tables by @Jiloc in #1341
- Chore/withdrawals pass validation by @Jiloc in #1343
- fix: add pagination to deposit fetching by @Jiloc in #1252
- feat: some dkg verification integration tests by @cylewitruk in #1346
- feat: implement query returning
WithdrawalRequestReport
by @djordon in #1344 - feat: add withdraw to demo-cli by @matteojug in #1347
- chore: update devenv with less building by @djordon in #1307
- fix: enable TLS in the blocklist client (#1349) by @djordon in #1351
- fix: emily validate deposits by @Jiloc in #1197
- chore: small
signers.sh
fixes by @djordon in #1358 - feat: create accept withdrawal transactions by @Jiloc in #1357
- chore: remove get_accepted_deposit_requests by @matteojug in #1361
- fix: correctly generate stacks chain in TestData by @matteojug in #1360
- Updates
flake.lock
so thatrust-overlay
includes Rust 1.84 by @aldur in #1320 - feat: query for pending rejected withdrawals by @matteojug in #1362
- ci: add integration tests to
WithdrawalRequestReport::validate
by @djordon in #1359 - feat: Disable nightly Docker builds on CI by @aldur in #1378
- feat: add function for using smart contract for deposit status by @djordon in #1306
- feat: implement validatation of reject-withdrawal-request contract calls by @xoloki in #1336
- feat: add function to construct reject withdrawals tx by @matteojug in #1382
- feat: add function for getting withdrawal status from smart contract by @djordon in #1377
- fix: Remove Bitcoin RPC by @fabergat in #1381
- feat: add Emily private mainnet stage by @fabergat in #1380
- chore: fix bitcoin-miner image in devenv by @matteojug in #1387
- feat: additional test helpers, conversion primitives and minor refactors by @cylewitruk in #1390
- [feat] Update Withdrawal Request Validation by @setzeus in #1389
- feat: emily version endpoint by @Jiloc in #1379
- [feat] query for swept withdrawals by @MCJOHN974 in #1339
- fix: update code from #1339 according to changes in main by @MCJOHN974 in #1402
- feat: emily get transactions by reclaim pubkey by @Jiloc in #1294
- fix: swept withdrawal in case of forked accepts by @matteojug in #1404
- feat: add withdrawal rejection to the coordinator loop by @matteojug in #1398
- feat: update validation logic of accepted withdrawal requests by @djordon in #1394
- feat: check the withdrawal status during validation by @djordon in #1396
- feat: query withdrawals by recipient by @Jiloc in #1383
- feat: check mempool for withdrawal outputs before rejection by @djordon in #1406
- feat: concretize pending accepted withdrawals query and implement tests by @cylewitruk in #1397
- [fix] remove api key requirement from health endpoint by @Jiloc in #1414
- feat: sign and broadcast
accept-withdrawal
contract call by @MCJOHN974 in #1403 - feat: feature wait before rejecting a withdrawal request by @djordon in #1411
- [fix]: fix rc in coordinator by @MCJOHN974 in #1429
- chore: remove discord badge by @matteojug in #1435
- [chore] Remove no longer used code by @matteojug in #1437
- feat: setup devenv observability by @djordon in #1105
- [chore] remove emily calls from signer's new_block handler by @Jiloc in #1421
- chore: enhance comments by @threewebcode in #1325
- feat: improve_release_notes by @fabergat in #1401
- feat: more efficient validation complete deposit contract calls by @djordon in #1436
- [chore] duplicate check on create_deposit by @Jiloc in #1425
- chore: don't
continue
on rejected peer connection by @cylewitruk in #1451 - feat: Push nighties docker images to AWS ECR by @fabergat in #1447
- 1444 chorebug restrict wipe databases to testing api by @Jiloc in #1445
- chore: update devenv for the bridge by @matteojug in #1450
- ci: use ubuntu 24.04 for cargo vet by @djordon in #1469
- build: do not compile signer crate with testing feature by @djordon in #1446
- [feat] emily new block handler by @Jiloc in #1416
- [chore] sidecar send new block updates by @Jiloc in #1409
- [fix] sidecar merge by @Jiloc in #1471
- feat: Add example deployer address by @fabergat in #1477
- feat: get withdrawals for sender by @Jiloc in #1467
- chore: add comments for
get_swept_*
queries near context boundary by @matteojug in #1482 - chore: remove signer's emily-client implementations to call private endpoints by @Jiloc in #1473
- chore: emily remove private endpoints by @Jiloc in #1474
- chore: emily filter updates from signers by @Jiloc in #1472
- [fix] add missing sender field after merge by @Jiloc in #1487
- feat:
get_deposits
returns accepted and pending by @Jiloc in #1479 - feature: coordinator checks deposit status before mint signing round by @matteojug in #1488
- [feat] add output index to
SweptWithdrawalRequest
by @MCJOHN974 in #1475 - fix: check recipient against blocklist client in withdrawals by @MCJOHN974 in #1428
- fix: random update_withdrawals_is_forbidden fails by @Jiloc in #1496
- chore: sidecar use uv for dependency management by @Jiloc in #1494
- [feat] rebroadcast withdrawals by @MCJOHN974 in #1485
- [chore]: import audits to cargo vet by @MCJOHN974 in #1272
- fix: stop logging the trusted api key on deployment by @Jiloc in #1514
- feat: new behavior for network bootstrapping by @cylewitruk in #1257
- feat: emily rolling withdrawal limits by @Jiloc in #1511
- feat: signer get rolling withdrawals limits from Emily by @Jiloc in #1513
- feat: emily validate rolling limits by @Jiloc in #1522
- feat: validate stacks fees by @AshtonStephens in #1430
- feat: add query that computes aggregate withdrawn amounts by @djordon in #1503
- fix: stop coordinator activities when tenure finishes by @djordon in #1518
- [feat]: Update Emily about accepted withdrawal requests by @MCJOHN974 in #1492
- feat: add leb128 variable length integer implementation to
sbtc
crate by @cylewitruk in #1523 - feat: validation checks withdrawal amounts against rolling cap by @djordon in #1515
- feat: coordinator checks withdrawal amounts against caps by @djordon in #1526
- feat: Improve deployment changes visibility adding CDK Diff by @fabergat in #1521
- feat: Update recommended configurations to ensure signer endpoints are locked down by @fabergat in #1510
- feat: add encoder/decoder for withdrawal id compression (for storage in OP_RETURN) by @cylewitruk in #1525
- feat: encode withdrawal id's on-chain in their respective transaction's
OP_RETURN
by @cylewitruk in #1512 - chore: update base transaction size constants after
OP_RETURN
updates by @djordon in #1535 - feat: save withdrawal ids from bitcoin tx outs by @matteojug in #1509
- chore: bump WSTS by @djordon in #1536
New Contributors
- @threewebcode made their first contribution in #1325
Full Changelog: 0.0.9-rc7...v1.0.0