Thank you ZmnSCPxj

`all time is measured in terms of blocks; "minutes" is just a shared human
delusion`  goes into by book of quotes

Before I explain this pizza ordering procedure to my grandmum, I must get
this straight: do you mean this approach will *not* work on multihop and
AMP routes, or were you just simplifying the explanation to make it
slightly more probable that I would understand? I do not yet understand
every single bit of the workings of lightning, i'm afraid, but I can't see
why it wouldn't work :)

Regards
Robert Olsson









On Sun, Feb 25, 2018 at 5:30 PM, ZmnSCPxj <[email protected]> wrote:

> Good morning Robert,
>
> Assuming you have a direct channel with the pizza provider, build a route
> from you to pizza provider to you.  You route the pizza price + 546 satoshi
> (the minimum for a nondust output) to the pizza provider, and the hop from
> the pizza provider to you is the 546 satoshi (so that the pizza provider
> gets paid the pizza price in total as the "routing fee").
>
> You inform the pizza provider the hash of the preimage, which the pizza
> provider can check with their node exists as an incoming HTLC and an
> outgoing HTLC, with the difference being the pizza price.
>
> Further, you set things up so that the HTLC to you expires in 3 blocks,
> which means that the pizza provider has to provide the pizza in three
> blocks or it is free.  This is the Bitcoin universe and all time is
> measured in terms of blocks; "minutes" is just a shared human delusion that
> is less real than blockchains.
>
> When the pizza is delivered, your provide the preimage to the pizza
> provider via standard LN protocol, and when the pizza provider confirms to
> the delivery person that the pizza is paid for, the pizza is released to
> you.
>
> Regards,
> ZmnSCPxj
>
>
> Sent with ProtonMail <https://protonmail.com> Secure Email.
>
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On February 25, 2018 4:19 PM, Robert Olsson <[email protected]> wrote:
>
> First of all, Laszlo, that was awesome!
>
> Instead of the part where you proved you had opened a channel, it would be
> awesome to add some escrow-functionality. Such as you get the invoice, and
> then you have a function to *almost* pay it, to verify it works thru the
> network with AMP and all. At that stage they start to make the pizza. And
> when you actually receive your pizza, you just somehow confirm the
> transaction, releasing the funds.
> Not sure you would have to prove anything with the preimage to the
> delivery guy. He should get some notification in his phone from his
> lightningnode that it is paid.
> If he never shows up you revert it somehow. Not sure how to do that
> technically, but we probably have most things in place for it already.
> Start your brains, guys! Things are getting serious, there is pizza at
> stake!
>
> Best regards
> Robert Olsson
>
>
>
>
> On Sun, Feb 25, 2018 at 3:29 AM, Laszlo Hanyecz <[email protected]>
> wrote:
>
>> I wanted to try out a real trade using lightning network.  I don't know of 
>> any pizza places near me that accept lightning bitcoin yet but a friend from 
>> London agreed to do it and he sub contracted out the pizza delivery to a 
>> local shop.
>> In short, I paid bitcoin using the lightning network and he arranged for 
>> pizza to be delivered to me.  In this trade my friend is just a middle man 
>> that is taking the risk on accepting lightning payments, but it demonstrates 
>> the basic premise of how this works for everyday transactions.  It could 
>> just as well be the pizza shop accepting the payment directly with their own 
>> lightning node.
>> I wanted two pizzas and to try to do it as close to atomically as possible.  
>> I didn't want to prepay and end up with no pizza.  As far as I know we don't 
>> yet have pizza/bitcoin atomic swap software but we improvised and decided 
>> that I would need to provide the payment hash preimage to the delivery 
>> driver in order to claim my pizza.  If I can't produce the preimage, proving 
>> that I paid, then the pizza would not be handed over and it would be 
>> destroyed.  This works because I can't get the preimage without paying the 
>> invoice.  I agreed to open a channel and fund it with a sufficient amount 
>> for what we estimated the cost would end up being.  After we agreed to these 
>> terms my friend was able to verify that I funded a channel on the 
>> blockchain, which shows that I at least have the money (bitcoin).  He is 
>> taking on some entrepreneurial risk and prepaying his sub contractor to 
>> prepare and deliver the pizza to me, but at this point I have not risked my 
>> bitcoins, they're just committed to a channel.  I was given a bolt11 invoice 
>> which I decoded with the c-lightning cli to verify everything was as agreed:
>>
>> $ ./lightning-cli decodepay 
>> lnbc6490u1pdfrjhcpp5jyxuuskqw53apgqvtxa7emcrz5vs0qr2sxjayxv7jj70jznnl94sdp5x9vycgzrdpjk2umeypgxj7n6vykzqvfqg3jkcatcv5s9q6t60fssxqyzx2qcqpgaue37x27yp3pn4cr6wuprvwedncz4kavqh83cp3l0vwfrprj0xj8cedkfmjdzea0xpp0jazfcyy77cq37ej6d3xvmujmgu56pe56ktcqa3vcys
>> { "currency" : "bc", "timestamp" : 1519504120, "created_at" : 1519504120, 
>> "expiry" : 72000, "payee" : 
>> "0397b318c5e0d09b16e6229ec50744c8a7a8452b2d7c6d9855c826ff14b8fa8b27", 
>> "msatoshi" : 649000000, "description" : "1XL Cheesy Pizza, 1 Deluxe Pizza", 
>> "min_final_cltv_expiry" : 8, "payment_hash" : 
>> "910dce42c07523d0a00c59bbecef03151907806a81a5d2199e94bcf90a73f96b", 
>> "signature" : 
>> "3045022100ef331f195e206219d703d3b811b1d96cf02adbac05cf1c063f7b1c91847279a402207c65b64ee4d167af3042f97449c109ef6011f665a6c4ccdf25b4729a0e69ab2f"
>>  }
>>
>> When the pizza delivery arrived, I was asked "What is the preimage?" by the 
>> driver.  At this point I paid the invoice and instantly received the 
>> preimage in return.
>>
>> $ ./lightning-cli pay 
>> lnbc6490u1pdfrjhcpp5jyxuuskqw53apgqvtxa7emcrz5vs0qr2sxjayxv7jj70jznnl94sdp5x9vycgzrdpjk2umeypgxj7n6vykzqvfqg3jkcatcv5s9q6t60fssxqyzx2qcqpgaue37x27yp3pn4cr6wuprvwedncz4kavqh83cp3l0vwfrprj0xj8cedkfmjdzea0xpp0jazfcyy77cq37ej6d3xvmujmgu56pe56ktcqa3vcys
>> { "preimage" : 
>> "7241e3f185148625894b8887ad459babd26540fc12124c3a7a96c937d89da8c1", "tries" 
>> : 1 }
>>
>> In the interest of keeping it simple we agreed that the preimage would just 
>> be the first and last 4 characters of the hex string.  So my answer was 
>> 7241-a8c1.  I wrote this on a notepad and presented it to the driver who 
>> compared it to his own notepad, at which point I was given the pizza.  It's 
>> probably not a good practice to share the preimage.  The delivery driver 
>> didn't have the full string, only enough to verify that I had it.
>> How do you get the preimage for your invoice?  In c-lightning you can do it 
>> like this:
>> $ ./lightning-cli invoice 12345 label description
>> { "payment_hash" : 
>> "e04dfbd4adc634779b560c8e7072f883d5f17a3e32a33603bfc90a8682873d44", 
>> "expiry_time" : 1519523498, "expires_at" : 1519523498, "bolt11" : 
>> "lnbc123450p1pdfyzy6pp5upxlh49dcc680x6kpj88quhcs02lz737x23nvqaley9gdq5884zqdqjv3jhxcmjd9c8g6t0dccqpg802ys4s4z3rpm6d8zvdgq397wewh5kaz527hnglz9xsmjxfjrhe3mxq9pp7pqm0pwcwm748tav4am97gqrvnzxnlw5uxxawgw4vcywgphj26nf"
>>  }
>> $ sqlite3 ~/.lightning/lightningd.sqlite3 "SELECT quote(payment_key) FROM 
>> invoices ORDER BY id DESC LIMIT 1"
>> X'D3BE7E68D8B38B15A5194AEA131A21429A1987085C95A0631273273546FF5ED8'
>> Then you can verify that it's indeed the correct preimage by hashing it 
>> again and comparing it to the payment_hash in the invoice above:
>> $ echo "D3BE7E68D8B38B15A5194AEA131A21429A1987085C95A0631273273546FF5ED8" | 
>> xxd -r -p | sha256sum
>> e04dfbd4adc634779b560c8e7072f883d5f17a3e32a33603bfc90a8682873d44  -
>> Note that you should not share the preimage with anyone.
>>
>> So is there any point to doing this instead of an on chain transaction?  For 
>> what I described here, probably not.  The goal was just to play around with 
>> c-lightning and do something more than shuffling a few satoshi back and 
>> forth.  Maybe eventually pizza shops will have their own lightning nodes and 
>> I can open channels to them directly.
>>
>> Some pics of my family enjoying the pizza here: 
>> http://eclipse.heliacal.net/~solar/bitcoin/lightning-pizza/
>>
>> -Laszlo
>>
>>
>> _______________________________________________
>> Lightning-dev mailing list
>> [email protected]
>> https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev
>>
>>
>
_______________________________________________
Lightning-dev mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev

Reply via email to