Skip to content

v0.3.0-alpha

Compare
Choose a tag to compare
@guggero guggero released this 18 Oct 14:59
· 669 commits to main since this release
v0.3.0
9939102

What’s new

  • Automatically generated test vectors for all TLV encodings and MS-SMT tree and virtual machine logic
  • Chain re-organization protection and automatic proof re-generation
  • Add ability to burn assets
  • Asset-level coin locking/leasing
  • Fully implemented Multiverse tree structure to support syncing both issuance and transfer proofs
  • New type of proof courier: Universe RPC courier, transfers proofs from sender to recipient via any public or private universe server
  • Proof courier type and server address can now be specified
  • Prometheus metrics export support
  • Added load test utility for generating asset mints and transfers on regtest
  • Improved universe sync speed by batching database calls
  • Easy distinguishability between proof files and individual proofs with magic byte prefixes
  • Future proof all data structures by adding version fields
  • Tapscript support for group keys to enable richer reissuance workflows
  • Enable mainnet as a supported Bitcoin network for tapd
  • Many many bugs fixed and a lot of code cleaned up

RPC changes

  • Support for exporting and importing proofs for individual transfers to/from Universes
  • The DecodeProof RPC now supports both proof files and individual proofs
  • Support for custom asset metadata types
  • Metadata is limited to 1 MiB
  • Statistics on the total number of issuances and asset groups for Universe servers
  • Better information in the Universe individual asset statistics RPC responses
  • Added more information on the minting RPC calls, can now see assets in batch and correct batch state
  • Runtime configuration of universe sync settings
  • Asset related RPCs now have the asset’s version as a new field
  • Proof related Universe RPC calls now expect a proof type alongside the ID to distinguish between issuance and transfer proofs

Migration from previous versions

  • There is no migration path, you HAVE to start with a fresh data directory by completely deleting the ~/.tapd directory.
  • The public Lightning Labs Universe server was reset as well, all assets minted before v0.3.0-alpha cannot be used anymore
  • This is the last breaking version, all assets minted with v0.3.0-alpha and later will be working in all future versions
  • The ImportProof RPC call is now only available in development mode, since transferring proofs over private Universe servers is now possible and should be used
  • Issuance proofs now have two new fields, one for the genesis reveal and one for the group key reveal

Notes on mainnet

Starting with the release of version v0.3.0 the daemon does support the Bitcoin mainnet.

IMPORTANT NOTE: To avoid loss of funds, it's imperative that you read the Operational Safety Guidelines before using tapd on mainnet!

The daemon is still in alpha state, which means there can still be bugs and not all desired data safety and backup mechanisms have been implemented yet.
Releasing on mainnet mainly signals that there will be no breaking changes in the future and that assets minted with v0.3.0 will be compatible with later versions.

What's Changed

  • taprpc: fix api docs generator hint by @guggero in #411
  • cmd/tapcli: add universe info sub command by @guggero in #413
  • Preliminary refactor in preparation for adding multiverse support by @ffranr in #346
  • multi: add test vectors for asset/address/proof/PSBT TLV encoding and VM/MS-SMT validation by @guggero in #326
  • Move importproof RPC endpoint into new tapdev RPC server by @ffranr in #420
  • multi: use filepath instead of path to support Windows by @guggero in #422
  • GitHub: add automated docker build on tag push by @guggero in #425
  • tappsbt: fix incorrect test vectors by @guggero in #429
  • re-org safety: preparatory commits by @guggero in #424
  • Multiverse fetch/register issuance by @ffranr in #416
  • Fix REST parameter issue in GET call by @guggero in #445
  • Rename universe forest instances to multiverse by @ffranr in #447
  • wallet: add asset coin locking by @guggero in #431
  • re-org safety: watch asset transactions and re-create proofs when necessary by @guggero in #419
  • Update README.md by @Liongrass in #454
  • address: add and populate proof courier addr field in Tap address by @ffranr in #450
  • monitoring: add prometheus metrics collector by @positiveblue in #452
  • Cleanup proof courier addr by @ffranr in #463
  • GitHub: use maintained version of docker layer cache action by @guggero in #471
  • itest: abstract the mint batch stress test by @positiveblue in #457
  • Chain porter proof courier service initialised using configurable address by @ffranr in #459
  • Fix regeneration of static proof files by @guggero in #481
  • Small fixes in freighter and wallet by @guggero in #482
  • Fix proof courier in integration test by @guggero in #484
  • tapdb: allow batch inserting proofs when syncing universe, remove write lock for RegisterIssuance by @guggero in #449
  • build: update to Go 1.21.0 by @Roasbeef in #474
  • rpcserver: validate rpc requests by @positiveblue in #489
  • Fix docker build by @guggero in #491
  • Rename aperture courier type to hashmail courier type by @ffranr in #493
  • proof: add magic bytes to individual proofs and proof files by @guggero in #488
  • tapfreighter: validate proof courier address before commencing send by @ffranr in #497
  • Implement sorting functionality and add total_supply for Universe Ass… by @ben2077 in #485
  • CLI: Improve minting user experience by @guggero in #492
  • Add version field to Tap address by @ffranr in #501
  • mssmt: fuzz test for CompressedProof by @Crypt-iQ in #505
  • Provable asset burning by @guggero in #477
  • Add multiverse RPC proof courier by @ffranr in #473
  • multi: add address version to database by @guggero in #509
  • proof: fuzz test for File and Proof by @Crypt-iQ in #504
  • multi: add CLI flag to enable public access to uni proof courier RPCs by @ffranr in #499
  • proof: fix unnecessary trailing newline by @ffranr in #519
  • tapgarden: pre proof retrieval delay respects context done signal by @ffranr in #516
  • tapgarden: enhance Seedling.validateFields() doc and remove TODO by @ffranr in #521
  • Generalise multiverse method names to support all proofs. by @ffranr in #496
  • Sanitise asset name by @ffranr in #518
  • universe: update pushProofToFederation to make sure all servers are tried by @Roasbeef in #528
  • Backoff procedure erroneously resumed between two different send events by @ffranr in #529
  • build: update sqlite+sqlc versions by @Roasbeef in #531
  • tapdb: fix time zone issue with timestamps by @guggero in #532
  • itest: add perf testing binary by @positiveblue in #487
  • Generalise universe structs/methods/variables to support transfer proofs in addition to issuance proofs by @ffranr in #534
  • Group key witness support by @jharveyb in #490
  • multi: merge staging branch into main by @Roasbeef in #542
  • tapgarden: use lru.Cache for various new group caches by @Roasbeef in #543
  • build: update to lnd 0.17.0 by @Roasbeef in #536
  • Use 64bit primary keys in DB by @guggero in #548
  • build: prep for Go 1.22 by using GOEXPERIMENT=loopvar for tests by @Roasbeef in #546
  • decoding: fix panics by limiting max decode sizes in proofs, commitments and assets by @guggero in #525
  • Fix instances of time.Now() which should be set to UTC by @ffranr in #551
  • loadtest: prepare for multiple consecutive runs by @guggero in #550
  • Use even/odd TLV numbers everywhere by @guggero in #547
  • asset: introduce new asset version v1 for segwit-like encoding by @Roasbeef in #520
  • tapfreighter: don't send proofs for tombstones, remove tombstones and burns from commitments by @guggero in #556
  • loadtest: add multi send test by @guggero in #558
  • Improve clarity on asset mint and universe stats RPC responses by @guggero in #553
  • tapdb: add unit test for universe leaf overflow by @Roasbeef in #560
  • Add proof type to universe identifer by @ffranr in #540
  • Federation sync config by @ffranr in #563
  • rpc: unconstrain meta field for MintAssets by @Roasbeef in #559
  • Universe events stats handle universe identity proof type by @ffranr in #561
  • Use federation sync config in syncer by @ffranr in #564
  • tapfreighter+tapgarden: prevent fee overpayment by @jharveyb in #555
  • tapcfg: allow using mainnet, enable universe proof courier by default by @guggero in #567
  • make: enable monitoring build tag by default for release builds by @guggero in #570
  • docs+README: add mainnet safety guidelines by @guggero in #569
  • tapcfg: fix defaults for testnet universe courier by @Roasbeef in #580
  • tapcli: expose universe sync config settings by @jharveyb in #568
  • tapdb: populate proof type when fetching uni roots by @Roasbeef in #584
  • fn: fix linter issue by @guggero in #588
  • tapdb: Federation DB fixes by @jharveyb in #583
  • Fix runtime ID, check amount when minting collectibles, rebase GetInfo RPC fixes commit by @guggero in #589
  • Multiple fixes around commitments and group keys by @guggero in #594
  • Manual fee rate support by @jharveyb in #595
  • make+vm: increase vm test coverage, improve the coverage target by @jharveyb in #598
  • tapfreighter: don't attempt to send burns with courier by @guggero in #600
  • build: bump version to v0.3.0-alpha by @guggero in #602

New Contributors

Full Changelog: v0.2.3...v0.3.0