Monday 25 February 2019

"Splicing is probably one of the most powerful and underappreciated features." - Andreas Antonopolous

Annotated notes from Let's Talk Bitcoin Episode 389. Taken from Professor Meow on Twitter

Andreas Antonopolous: My theory is that the way we're going to see Lightning being used is that people will have the vast majority of their funds on Lightning all the time. The only funds that are not on Lightning are the funds you keep in cold storage.

How do you make this jump between on-chain and off-chain? I need to open a channel in order to start using Lightning, but then if I want to get my Bitcoin back, I would have to close the channel. I'm going to have to do this opening and closing channel not too infrequently. Maybe I'm opening and closing channels once a week or once a month, and if everybody needs to do the same, there's not enough capacity on the Bitcoin blockchain to do that. That's the wrong way of looking at it because you're not going to be doing that.

That's where splicing comes in. What splicing allows you to do is blend the open channel, close channel and on-chain Bitcoin outputs into a single transaction.

You're going to instead create a channel every time you do a Bitcoin transaction - there's no reason to take the change and put it back into an on-chain wallet.

Instead, you fund channels every time you do a Bitcoin transaction, and you can do a Bitcoin on-chain transaction every time you rebalance, close or open a channel, and combine all of those functions. So a single transaction can have as its inputs the multi-sig of a closing channel, as its outputs the multi-sig of an opening channel, and an on-chain Bitcoin transaction.

So you can basically splice Bitcoin into a channel, splice Bitcoin from a channel out onto the Bitcoin blockchain, and simultaneously open and close channels in the same transaction.

This allows you to send Bitcoin into a Lightning channel, send Bitcoin from Lightning out onto the Bitcoin network (make an on-chain Bitcoin payment), close the channel, and open a channel. All four things in one transaction simultaneously.

Every Bitcoin transaction in which you're paying a fee becomes an opportunity to also open and close several channels and make other Bitcoin payments.

Adam B. Levine: Is the idea here just that users will be making transactions periodically and so this is a way to piggyback on existing traffic?

Andreas Antonopoulos: Bingo. Your wallet does all of this automatically. Depending on who you want to pay and whether they can be reached on-chain or off-chain to, your wallet constructs your transaction and piggybacks as many open and closed channels as it needs to. Rebalancing, other housekeeping duties, and minimize your fees by batching together. But wait, there’s more! The main reason we use Coinjoin is for obfuscation and privacy. But if you think about it, it also saves on transaction fees.

If you're going to do that transaction anyway and you get five other strangers to join you and do their transactions, you pay one transaction fee across all of you. One transaction with five times the outputs is a lot cheaper than five transactions.

This makes even more sense if you have, for example, an exchange that is doing withdrawals or deposits onto lightning, and it has a whole bunch of customer withdrawals. You know, the classic batching problem that exchanges are trying to implement in order to save on fees.

Adam B. Levine: So what you're saying here is that splicing has implications that extend beyond single people and really this is a technology that could be extended to improve privacy and obfuscation? Or do you see this being set up like Coinjoin where anyone can participate?

Andreas Antonopoulos: This isn't just for obfuscation, this is also a massive saving on channel transactions.



Submitted February 25, 2019 at 09:44AM by lobt http://bit.ly/2XiziFT

No comments :

Post a Comment