Database Migrations
tapd
v0.6.0
contains non-revertible database migrations. After running tapd
v0.6.0
, these database migrations prevent downgrading tapd
to a previous release. Create backups of tapd
database state, before upgrading to tapd
v0.6.0
. Please report any database migration issues.
Breaking changes
See previous version v0.5.1
release notes for changes prior to v0.5.x
.
There are no breaking changes between v0.5.1
and v0.6.0
, but grouped asset channel funding will only work with the next version of Lightning Terminal (v0.15.0-alpha
) which is going to be published soon.
Verifying the Release
In order to verify the release, you'll need to have gpg
or gpg2
installed on your system. Once you've obtained a copy (and hopefully verified that as well), you'll first need to import the keys that have signed this release if you haven't done so already:
curl https://raw.githubusercontent.com/lightninglabs/taproot-assets/main/scripts/keys/roasbeef.asc | gpg --import
Once you have the required PGP keys, you can verify the release (assuming manifest-roasbeef-v0.6.0.sig
and manifest-v0.6.0.txt
are in the current directory) with:
gpg --verify manifest-roasbeef-v0.6.0.sig manifest-v0.6.0.txt
You should see the following if the verification was successful:
gpg: Signature made Wed Sep 30 17:35:20 2020 PDT
gpg: using RSA key 60A1FA7DA5BFF08BDCBBE7903BBD59E99B280306
gpg: Good signature from "Olaoluwa Osuntokun <[email protected]>" [ultimate]
That will verify the signature of the manifest file, which ensures integrity and authenticity of the archive you've downloaded locally containing the binaries. Next, depending on your operating system, you should then re-compute the sha256
hash of the archive with shasum -a 256 <filename>
, compare it with the corresponding one in the manifest file, and ensure they match exactly.
Verifying the Release Timestamp
In addition to time-stamping the git tag with OpenTimestamps, we also timestamp the manifest file along with its signature. Two files are included in our release artifacts: manifest-roasbeef-v0.6.0.sig.ots
and manifest-v0.6.0.txt.ots
.
Assuming you have the opentimestamps client installed locally, the timestamps can be verified with the following commands:
ots verify manifest-roasbeef-v0.6.0.sig.ots -f manifest-roasbeef-v0.6.0.sig
ots verify manifest-v0.6.0.txt.ots -f manifest-v0.6.0.txt
Alternatively, the OpenTimestamps website can be used to verify these timestamps if one doesn't have a bitcoind
instance accessible locally.
Assuming you are using the OpenTimestamps ots-git-gpg-wrapper
you can verify the timestamp of the git tag by verifying the tag as explained in Verifying the Release Binaries.
These timestamps should give users confidence in the integrity of this release even after the key that signed the release expires.
Verifying the Release Binaries
Our release binaries are fully reproducible. Third parties are able to verify that the release binaries were produced properly without having to trust the release manager(s). See our reproducible builds guide for how this can be achieved.
The release binaries are compiled with go1.23.9
, which is required by verifiers to arrive at the same ones.
The make release
command can be used to ensure one rebuilds with all the same flags used for the release. If one wishes to build for only a single platform, then make release sys=<OS-ARCH> tag=<tag>
can be used.
Finally, you can also verify the tag itself with the following command:
$ git verify-tag v0.6.0
gpg: Signature made Tue Sep 15 18:55:00 2020 PDT
gpg: using RSA key 60A1FA7DA5BFF08BDCBBE7903BBD59E99B280306
gpg: Good signature from "Olaoluwa Osuntokun <[email protected]>" [ultimate]
Verifying the Docker Images
To verify the tapd
and tapcli
binaries inside the docker images against the signed, reproducible release binaries, there is a verification script in the image that can be called (before starting the container for example):
$ docker run --rm --entrypoint="" lightninglabs/taproot-assets:v0.6.0 /verify-install.sh v0.6.0
$ OK=$?
$ if [ "$OK" -ne "0" ]; then echo "Verification failed!"; exit 1; done
$ docker run lightninglabs/taproot-assets [command-line options]
Building the Contained Release
Users are able to rebuild the target release themselves without having to fetch any of the dependencies. In order to do so, assuming
that vendor.tar.gz
and tapd-source-v0.6.0.tar.gz
are in the current directory, follow these steps:
tar -xvzf vendor.tar.gz
tar -xvzf tapd-source-v0.6.0.tar.gz
go install -v -mod=vendor -ldflags "-X github.com/lightninglabs/taproot-assets/build.Commit=v0.6.0" ./cmd/tapd
go install -v -mod=vendor -ldflags "-X github.com/lightninglabs/taproot-assets/build.Commit=v0.6.0" ./cmd/tapcli
The -mod=vendor
flag tells the go build
command that it doesn't need to fetch the dependencies, and instead, they're all enclosed in the local vendor directory.
Additionally, it's now possible to use the enclosed release.sh
script to bundle a release for a specific system like so:
make release sys="linux-arm64 darwin-amd64"
⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️
Release Notes (auto generated)
What's Changed
- rpcserver: better rfq channel selection by @GeorgeTsagk in #1357
- Proof of Concept: Simplifying Concurrency with
ContextGuard.Goroutine
by @ffranr in #1380 - cmd/commands: add offset and limit params to roots cmd by @guggero in #1393
- Refactor Group Key Code by @ffranr in #1396
- scripts: update georgetsagk.asc gpg key by @GeorgeTsagk in #1394
- misc CI/build system improvements by @guggero in #1381
- rfq+rfqmath: fix sats-per-asset conversion in mock price oracle by @ffranr in #1399
- tapdb+sqlc: sqlc: add script to merge SQL migrations into consolidated schemas by @Roasbeef in #1387
- Remove redundant PayToTaprootScript functions by @ffranr in #1404
- Support Directory Exclusion in Golang Version Linter Check by @ffranr in #1405
- make: fix sqlc-check by @guggero in #1406
- Implement PrevId[] UTXO selection for FundVirtualPSBT RPC method; valid for single PrevId at first by @habibitcoin in #1172
- tapdb: expand allowed proof types in universe-related tables by @Roasbeef in #1386
- proof: add new IgnoreChecker proof rejection cache by @Roasbeef in #1400
- tapdb: fix aider mistakes and inconsistencies by @guggero in #1415
- [wallet 1/3]: refactor in preparation for group key channel funding by @guggero in #1402
- Add
sync
loadtest by @GeorgeTsagk in #1352 - [wallet 2/3]: refactor funding logic to use allocation code by @guggero in #1407
- Add pre-commitment output to mint anchor TX by @ffranr in #1325
- Support group keys for RFQ negotiation flows by @GeorgeTsagk in #1382
- Add itest oracle harness by @GeorgeTsagk in #1395
- Update lnd compile-time dependency to v0.19 by @guggero in #1422
- build(deps): bump the go_modules group across 2 directories with 1 update by @dependabot in #1449
- tapcli: Global flags to accept ENV vars overrides. by @gcaracuel in #1447
- multi: update to tagged lnd v0.19.0-beta.rc1 by @guggero in #1454
- tapchannel: validate proof courier before opening or accepting channels by @guggero in #1412
- [custom channels]: refactor channel JSON, add more custom data parsers by @guggero in #1441
- Support group keys on
SendPayment
&AddInvoice
by @GeorgeTsagk in #1423 - tapd+tapdb: return anchor block height in ListTransfers if available by @bhandras in #1461
- build(deps): bump golang.org/x/crypto from 0.33.0 to 0.35.0 in /tools in the go_modules group across 1 directory by @dependabot in #1469
- [wallet 3/3]: group key support for channel funding by @guggero in #1413
- Block on Proof Courier Service Connection Attempt by @ffranr in #1203
- tapdb+universe: implement initial version of universe ignore tree by @Roasbeef in #1420
- Add method
Proof.Bytes
by @ffranr in #1474 - build(deps): bump the go_modules group across 2 directories with 1 update by @dependabot in #1472
- Extract non-controversion commits from Proof-system-v1 PR by @guggero in #1465
- Updated ListAssetRequest to include additional filter options by @itsrachelfish in #1199
- taprpc: TransferOutputAnchor to include the anchor pkscript by @bhandras in #1473
- tapdb+universe: implement new Universe tree for 1st party burns by @Roasbeef in #1456
PaymentBandwidth
uses HtlcView by @GeorgeTsagk in #1462- mssmt: add new Copy method and InsertMany to optimize slightly by @Roasbeef in #1467
- Add Transfer Label Support for Asset Sends by @ffranr in #1468
- Add preliminary proof courier connection check to ChainPorter by @ffranr in #1470
- Allow setting sats/msats to
taprpc.AddInvoice
by @GeorgeTsagk in #1448 - Fix bandwidth related issues by @guggero in #1478
- Fix CI Unit Test Flakes by @ffranr in #1482
- basic-price-oracle: clarify price oracle demo asset rate documentation by @ffranr in #1479
- taprpc: support custom lock ID and expiration in CommitVirtualPsbts by @bhandras in #1475
- tapdb: correctly fill pkScript for outputs of QueryParcels by @bhandras in #1491
- tapchannel: add extra logging when we cancel incoming invoice HTLCs by @Roasbeef in #1490
- multi: Add label to
PublishTransaction
by @gijswijs in #1411 - GitHub: use master again for litd itests by @guggero in #1499
- Add chain_anchor with block_timestamp to AssetLeaves RPC by @jamaljsr in #1480
- [tapdb]: add script key type enum, run Golang based post migration checks by @guggero in #1198
- taprpc: extract as standalone Go submodule for WASM clients by @ffranr in #1487
- rfq: store outgoing request before sending message by @guggero in #1506
- rpcserver+taprpc: add issuance reveal data to proof leaf by @guggero in #1486
- channels: fix coop close asset distribution for grouped asset channels by @guggero in #1505
- rfq+rpcserver: match event to order by @guggero in #1509
- monitoring: expand Prometheus buckets for RPC endpoint latency by @ffranr in #1500
- itest flake: fixes flake in burn test by @guggero in #1514
- build: bump version to v0.6 rc1 by @Roasbeef in #1511
- minting: fix re-issuing into existing group with external key by @guggero in #1517
- fix itest flake: allow AssertNonInteractiveRecvComplete more time to execute by @ffranr in #1494
- rpcserver: stop SendPayment update stream when payment fails by @ffranr in #1532
- Fix panic when listing unfunded pending batch with verbose by @ffranr in #1536
- misc: fix litcli command docs, add group key support to DecodeAssetPayReq by @guggero in #1498
- tapchannel: don't break backward compatibility by @guggero in #1537
- Multi rfq receive (
AddInvoice
multiple hop hints) by @GeorgeTsagk in #1457 - Add support for skipping anchor transaction broadcast during asset transfer by @ffranr in #1530
- tapgarden: increase unit test default timeout from 10s to 30s by @ffranr in #1544
- rpcserver: fix "mutually exclusive" err when using sats by @guggero in #1546
- tapdb: fix unit race flakes by @guggero in #1547
- Refactor in Preparation for Ignore Tree RPC Endpoints by @ffranr in #1541
- Proof-system-v1 by @gijswijs in #1453
- multi: add testnet4 support by @guggero in #1553
- build: bump version to v0.6 rc2 by @Roasbeef in #1552
- tapdb: allow reinsertion of an existing address to the book by @bhandras in #1549
- mod+taprpc: bump lnd to final v0.19.0 version by @guggero in #1564
- tapd: allow skipping the funding step in CommitVirtualPsbts by @bhandras in #1563
- proof: verify stxo proofs if present in v0 proofs by @gijswijs in #1568
- taprpc: fix AddInvoice documentation by @GeorgeTsagk in #1561
- docs: add support for asset group key in price oracle by @ffranr in #1579
- sample-tapd.conf+tapcfg: add default signet/testnet4 uni servers by @guggero in #1555
- tapfreighter: fix
OutboundParcel.Copy
and add genericCopy
fn test by @bhandras in #1580 - channels: check RFQ quote compatibility with channel at pathfind time by @guggero in #1583
- version: bump version to v0.6.0-rc3 by @guggero in #1584
- rpcserver: add decimal display to asset stats rpc by @jamaljsr in #1566
- chain_bridge+fn: add retry logic for RPC calls to improve reliability in load-balanced environments by @Roasbeef in #1585
- rpc: allow minting assets with empty metadata by @Roasbeef in #1592
- tapdb: use testing.TB for common test utilities, downgrade universe pref test to benchmark by @Roasbeef in #1597
- Bump minimum compatible lnd version to v0.19.0, fix fee rounding issue in FundPsbt by @guggero in #1600
- asset: tighten GroupKey equality checks and update tests by @ffranr in #1599
- bugfix: fix btc-only balance force close, fix incorrect policy in invoice hop hint by @guggero in #1601
- tapchannel: add additional logging for commitment sort error cases by @Roasbeef in #1603
- proof: add debug utilities for manually fixing proofs by @guggero in #1604
- rpcserver: enforce keysend minimum carrier HTLC amount by @guggero in #1606
- build: bump version to v0.6.0 by @Roasbeef in #1605
New Contributors
- @gcaracuel made their first contribution in #1447
- @itsrachelfish made their first contribution in #1199
- @jamaljsr made their first contribution in #1480
Full Changelog: v0.5.1...v0.6.0