Addressing
Spark has native interoperability with Bitcoin and Lightning, properly segregating addresses is important.
Bitcoin Addresses
For Layer 1 Bitcoin deposits, Spark generates Pay to Taproot (P2TR) addresses. These addresses start with “bc1p” and can be used to receive Bitcoin from any wallet.
In production, Spark ↔ Spark transfers will use the Bitcoin address format as an addressing scheme, ultimately mapping to a Spark public key in the background.
Example:
Spark uses public keys to properly map Spark ↔ Spark transfers. A bitcoin address will map to this public key in production, Spark will automatically determine whether to process the payment on Layer 1 or Layer 2.
When available, we’d prefer not to expose the public key directly, instead opting to use the Bitcoin address format and mapping in the background.
Example:
Lightning Invoices
Lightning addresses facilitate Lightning ↔ Spark transfers. Users can both generate and pay Lightning invoices. Key characteristics:
- Each invoice can only be paid once
- Support for flexible payments through 0-amount invoices
- Sender can specify payment value for flexible invoices
Example:
UMA Addresses
An UMA is like an email address but for money. UMA lets anyone send and receive money (fiat and crypto) 24/7 using their favorite UMA-enabled wallet, exchange, or bank. UMA is global and open source.
In this initial version of Spark, UMAs can only be transferred to — enabling instant offramps from Spark directly to any UMA-enabled wallet, exchange, or bank.
Example: