Move assets inside a tree #846
-
I'm currently trying to fully understand how taproot assets work. I understood all the concepts of taproot, tweaking and sparse merkle sum trees. Let's assume Alice created a new asset (T-USD). She created the sparse merkle sum tree and committed it to a taproot transaction. She now wants to send some T-USD to Bob. To initiate the transfer, Bob creates a Taproot Asset Address and sends it to Alice (e.g. via mail). Q1: Can the Taproot Asset Address be seen as a "request for payment", similar to payment requests (invoices) on the Lightning Network? So every transfer is preceded by the creation of an address (by the recipient)? Let's assume Alice received Bob's Taproot Asset Address. She generate a new sparse Merkle sum tree reflecting the new balances. Finally, she publishes a new on-chain transaction finalizing the transfer of assets to Bob. Now Bob wants to send his recently received assets to Carol. Bob does not have the ability to update the tree, right? I found this in the docs:
Q2: How does Bob transfer assets to Carol? Does he has to ask Alice to update the tree accordingly? Or is an asset split necessary for such transfer? I would be thankful for every response. I did not fully understand everything reading the docs. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Thank you for your question. I think if you want to dive deeper into the technical details, it might be a good idea to look at the BIP pull request directly: bitcoin/bips#1489
Yes. A Taproot Asset address shares some similarities with Lightning Network invoices. For example the amount is included in the address. But in contrast to LN invoices, you can send to a Taproot Asset address multiple times, and you can send while the receiver is offline. So they are also similar to BTC on-chain addresses. Basically Taproot Asset addresses are a hybrid of both LN invoices and BTC on-chain addresses.
Yes and no. If you want to receive without needing to be online and interacting with the sender, then yes, you need to create an address first. This would be what's called a "non-interactive" send in the BIP.
In your example scenario, once Alice sends out the assets to Bob, she no longer has control over them. Because Bob takes over custody both on the asset level as well as on the BTC level. An MS-SMT doesn't "live on" in the sense that it is sent alongside a transfer. A tree is simply constructed when needed, in order to prove that an asset is committed to a certain on-chain output.
A split simply refers to whether an asset-level UTXO (a number of units of an asset committed to in an asset leaf in a tree, very similar to a BTC UTXO) is being transferred as a whole (full-value send) or being split up into smaller pieces (split send). |
Beta Was this translation helpful? Give feedback.
Thank you for your question. I think if you want to dive deeper into the technical details, it might be a good idea to look at the BIP pull request directly: bitcoin/bips#1489
More specifically, related to your question, the
bip-tap-addr
: https://github.com/Roasbeef/bips/blob/bip-tap-pr/bip-tap-addr.mediawiki#spending-the-received-assetYes. A Taproot Asset address shares some similarities with Lightning Network invoices. For example the amount is included in the address. But in contrast to LN invoices, you can send to a Taproot Asset address multiple ti…