Subject: [bitcoin-dev] Taproot Assets on Mainnet: Announcing tapd v0.3.0-alpha

From: Olaoluwa Osuntokun <[email-masked]>
Date: Wed, 18 Oct 2023 13:20:03 -0700

I'm excited to announce tapd v0.3.0-alpha, the first software release that
supports the Taproot Asset Protocol on mainnet!

The deterministic+reproducible release can be found here:
https://github.com/lightninglabs/taproot-assets/releases/tag/v0.3.0

Our launch blog post can be found here:
https://lightning.engineering/posts/2023-10-18-taproot-assets-v0.3/

For those interested in keeping tabs on usage/activity of the protocol,
we're running two Universes servers:

  * mainnet:
https://universe.lightning.finance/v1/taproot-assets/universe/roots

  * testnet:
https://testnet.universe.lightning.finance/v1/taproot-assets/universe/roots

REST API documentation for the Universe servers can be found here:
https://lightning.engineering/api-docs/api/taproot-assets/rest-endpoints.
Users can also interact directly via gRPC as well.

Users can run their own Universe server, and also federate with other
universe servers using the relevant as of command (`tapcli universe
federation`).

A technical specification for the Universe/Multiverse protocol can be found
here in the BIP:
https://github.com/Roasbeef/bips/blob/bip-tap-pr/bip-tap-universe.mediawiki.

At a high level, a Universe server is used by clients to verify new asset
issuance, archive off-chain transaction data, and transmit proof information
for transfers. A Universe data structure is an authenticated merkle-sum
sparse merkle tree that maps an `(outpoint, scriptKey)` tuple to proof data.
A `scriptKey` is the protocol's version of the pkScript/scriptPubkey we all
know and love today.

In the initial version of the protocol, the `scriptKey` is actually just a
normal taproot output public key. Ultimately, Bitcoin transactions are
signed+verified under the hood, as we map a logical state transition to a
1-in-1-out Bitcoin transaction. The mapping from an asset state transition
to a "virtual" transaction can be found here:
https://github.com/Roasbeef/bips/blob/bip-tap-pr/bip-tap-vm.mediawiki.

One cool thing about reusing Bitcoin Script in the first asset script
version is that higher level applications can use a familiar PSBT like
structure (vPSBTs) to construct off-chain multi-party interactions. Here's
an example of using PSTBs, vPSBTs, and `SIGHASH_NONE` (on the TAP layer) to
construct a protocol for non-interactive, non-custodial swaps:
https://github.com/lightninglabs/taproot-assets/issues/577.

We look forward to experimentation and feedback for this mainnet alpha
release to continue to evolve and improve the protocol! Thanks to all those
that experimented with earlier versions, providing the critical feedback
that made this release possible.

Onwards!

-- Laolu