Builder's Guide
  • Welcome to the Builder's Guide to the LND Galaxy!
  • The Lightning Network
    • Overview
    • Payment Channels
      • Lifecycle of a Payment Channel
      • Watchtowers
      • Understanding Sweeping
      • Etymology
    • The Gossip Network
      • Identifying Good Peers on the Lightning Network
    • Pathfinding
      • Finding routes in the Lightning Network
      • Channel Fees
      • Multipath Payments (MPP)
    • Lightning Network Invoices
      • Understanding Lightning Invoices
    • Making Payments
      • The Payment Cycle
      • Timelocks
      • ⭐Hashed Timelock Contract (HTLC)
      • Payment Etymology
      • ⭐What Makes a Good Routing Node
      • Understanding Submarine Swaps
      • Instant Submarine Swaps
    • Liquidity
      • ⭐Understanding Liquidity
      • Managing Liquidity on the Lightning Network
      • Liquidity Management for Lightning Merchants
      • How to Get Inbound Capacity on the Lightning Network
      • Lightning Service Provider
    • L402: Lightning HTTP 402 Protocol
      • Macaroons
      • L402
      • 📋Protocol Specification
      • Implementations and Links
    • Taproot Assets
      • Taproot Assets Protocol
      • Taproot Assets on Lightning
      • Edge Nodes
      • Taproot Assets Trustless Swap
      • FAQ
      • Glossary
  • Lightning Network Tools
    • LND
      • 🛠️Get Started
      • lnd.conf
      • First Steps With LND
      • Wallet Management
      • Sending Payments
      • Atomic Multi-path Payments (AMP)
      • Receiving Payments
      • Unconfirmed Bitcoin Transactions
      • Channel Fees
      • Inbound Channel Fees
      • Macaroons
      • Configuring Watchtowers
      • Pathfinding
      • Blinded Paths
      • Key Import
      • Secure Your Lightning Network Node
      • Configuration of a Routing Node
      • Quick Tor Setup
      • Configuring Tor
      • Enable ‘Neutrino mode’ in Bitcoin Core
      • Send Messages With Keysend
      • Partially Signed Bitcoin Transactions
      • Bulk onchain actions with PSBTs
      • Sweeper
      • Debugging LND
      • Fuzzing LND
      • LND API documentation
      • Channel Acceptor
      • RPC Middleware Interceptor
      • HTLC Interceptor
      • NAT Traversal
      • Recovery: Planning for Failure
      • Migrating LND
      • Disaster recovery
      • Contribute to LND
    • Lightning Terminal
      • What is Lightning Terminal?
      • 🛠️Get litd
      • Run litd
      • Integrating litd
      • Demo: Litd Speed Run
      • Connect to Terminal
      • Recommended Channels
      • Rankings
      • Health Checks
      • Liquidity Report
      • Opening Lightning Network Channels
      • Managing Channel Liquidity
      • Autofees
      • AutoOpen
      • LND Accounts
      • Loop and Lightning Terminal
      • Loop Fees
      • Pool and Lightning Terminal
      • Command Line Interface
      • Troubleshooting
      • Lightning Node Connect: Under the hood
      • LNC Node Package
      • LITD API Documentation
      • Privacy and Security
      • Privacy Policy
      • Terms of Use
    • Loop
      • 🛠️Get Started
      • The Loop CLI
      • Autoloop
      • Static Loop In Addresses
      • Instant Loop Outs
      • Peer with Loop
      • Loop API Documentation
    • Pool
      • Overview
      • Quickstart
      • 🛠️Installation
      • First Steps
      • Accounts
      • Orders and Asks
      • Sidecar Channels
      • Zero-confirmation Channels
      • Channel Leases
      • Batch Execution
      • Account Recovery
      • Pool API Documentation
      • FAQs
    • Taproot Assets
      • Get Started
      • First Steps
      • Taproot Assets Channels
      • Asset Decimal Display
      • Become an Edge Node
      • RFQ
      • Collectibles
      • Universes
      • Asset Loop
      • Debugging Tapd
      • Multisignature
      • Minting Assets With an External Signer
      • Lightning Polar
      • Operational Safety Guidelines
      • Taproot Assets API Documentation
    • Aperture
      • ⚒️Get Aperture
      • LNC Backend
      • LNC Mailbox
      • Pricing
    • Faraday
      • 🛠️Get Started
      • The Faraday CLI
      • Faraday API Documentation
  • LAPPs
    • Guides
      • Use Polar to Build Your First LAPP
        • Setup: Local Cluster with Polar
        • Setup: Run the Completed App
        • Setup: Run the App Without LND
      • Add Features
        • Feature 1: Connect to LND
        • Feature 2: Display Node Alias and Balance
        • Feature 3: Sign and Verify Posts
        • Feature 4: Modify Upvote Action
      • Make Your own LNC-powered Application
    • Next Steps
  • Community Resources
    • Resource List
    • Lightning Bulb 💡
    • Glossary
    • FAQ
Powered by GitBook
On this page
  • Your local universe
  • Running a public universe
  • The default universe
  • Federations
  • Syncing to a universe
  • The Universe APIs

Was this helpful?

  1. Lightning Network Tools
  2. Taproot Assets

Universes

Learn how to run a universe and connect to other universes.

In the context of Taproot Assets, a universe is a service that acts as a repository for publicly minted assets. It contains knowledge of assets, mints, metadata, public transfers and their proofs. A universe is required for users to fetch data necessary to validate transfers, and may be public or private.

Anyone may run a universe, or use one or multiple universes provided by others, such as Lightning Labs.

Your local universe

When running tapd, you will run a private universe by default. In this mode, all RPC calls to the universe require authentication using the tapd macaroon. To disable macaroon authentication for the QueryProof and InsertProof RPC calls, you may set the following configuration flag:

allow-public-uni-proof-courier=true

You may further open up your local universe to serve the QueryAssetStats , UniverseStats and QueryEvents RPC calls:

allow-public-stats=true

You may do this to operate a public universe, or make it easier for other applications to reach your API endpoints.

Running a public universe

Running a universe is as simple as running tapd and amending your configuration file. You may run a universe over RPC or REST. By default, tapd is expected to listen on gRPC TCP port 10029 and REST TCP port 8089 , so ensure this port is open on your machine if you would like others to connect to you. Being publicly reachable is not a requirement for a universe, however. Your universe may only serve resources on a private network, or be otherwise restricted.

When running tapd as part of litd, you may also use port 8443 or define your own port. For example, as the REST universe is also usable through a browser over HTTPS, you may configure it over port 443 or set up a proxy.

Sampletapd.conf file:

rpclisten=0.0.0.0:10029 restlisten=0.0.0.0:8089 allow-public-uni-proof-courier=true allow-public-stats=true universe.public-access=rw

You can verify whether your universe is accepting proofs with the command tapcli universe federation config info

{
    "global_sync_configs": [
        {
            "proof_type": "PROOF_TYPE_ISSUANCE",
            "allow_sync_insert": true,
            "allow_sync_export": true
        },
        {
            "proof_type": "PROOF_TYPE_TRANSFER",
            "allow_sync_insert": true,
            "allow_sync_export": true
        }
    ],
    "asset_sync_configs": []
}

You can change the configuration from the CLI using tapcli universe federation config global --proof_type issuance --allow_insert true and again with the --proof_type transfer flag

The default universe

By default, your tapd will connect to the default universe, for instance testnet.universe.lightning.finance:10029 for testnet, or universe.lightning.finance:10029 on mainnet.

The contents of the default universe are also available via a public REST API:

You may also make use of the UI available through Lightning Terminal

Federations

By default, your tapd instance will connect to a default universe. You can manually add additional universes to sync to and from, called a federation. You can see this federation with tapcli universe federation list.

If you would like to add a universe to this federation, you can do this on with tapcli universe federation add --universe_host <universe_ip:port>

Similarly, you can remove universes from this federation with tapcli universe federation del --universe_host <universe_ip>:port

Syncing to a universe

By default, your tapd will sync to universes which have configured in your local federation, and only for assets which you either hold or have created a taproot address for. You may also manually sync specific asset IDs or group keys.

tapcli universe sync --universe_host <universe_ip:port> --group_key <group key>

To configure your tapd to regularly sync to other asset IDs or group keys, you may use the universe federation configuration. The config global options will apply to all assets, while the config local options will only apply to specific assets.

tapcli universe federation config global --proof_type issuance --allow_insert true

tapcli universe federation config local --proof_type transfer --allow_insert true --group_key <group key>

The Universe APIs

/v1/taproot-assets/universe/proofs/asset-id/{key.id.asset_id_str}/{key.leaf_key.op.hash_str}/{key.leaf_key.op.index}/{key.leaf_key.script_key_str}

PreviousCollectiblesNextAsset Loop

Last updated 2 months ago

Was this helpful?

A Taproot Asset Universe is available over and on the default ports. You may run your own universe or interact with a public universe. Public universes are unauthenticated, the macaroon checks are skipped.

For instance, when making a transfer, the to one or multiple universes using the REST API. This requires the asset ID, the leaf key index and script key.

A detailed list of all available fields as well as code examples can be found under the documentation.

gRPC
REST
proofs may be pushed
Taproot Assets Universe API
https://universe.lightning.finance/v1/taproot-assets/universe/rootsuniverse.lightning.finance
Assets - Lightning Terminal
Tapping into Taproot Assets #4: Join a Universe Federation
Logo