<div dir="ltr"><div>Thank you very much for the information provided.  </div><div><br></div><div>Hi Rusty,<div>Yes, listinvoices 'label' is working fine.</div><div> </div><div> Hi  <span style="color:rgb(80,0,80)">ZmnSCPxj,</span>  <br></div><div>Right now, I'm maintaining state with global static variables, yes I'll use sqlite to save the state information in the coming days.<br></div></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><br></div><div class="gmail_signature" data-smartmail="gmail_signature">Thank You.</div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Regards,<br>Sarat G<br><div><br></div><div><br></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 27, 2018 at 5:22 AM ZmnSCPxj <<a href="mailto:ZmnSCPxj@protonmail.com">ZmnSCPxj@protonmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Good morning Sarat,<br></div><div><br></div><div>The more idiomatic way is to use waitanyinvoice as an async call. You start with a pay_index of 0 that you store on disk. When waitanyinvoice returns, you trigger what needs to be called based on the invoice it returns, and once you have finished processing, update the entire ondisk state including pay_index, then call waitanyinvoice again async.<br></div><div><br></div><div>This will scale better with hundreds of invoices and allow for recovery in case of crash or power outage. Generally you will store your state ondisk with sqlite, and put invoice processing and the pay_index update in a single sqlite atomic transaction, so that update of pay_index is dobe atomically with reacting to invoice payment.<br></div><div><br></div><div>Regards,<br></div><div>ZmnSCPxj<br></div><div><br></div><div><br></div><div><br></div><div class="m_9218364010632601423protonmail_signature_block"><div class="m_9218364010632601423protonmail_signature_block-user m_9218364010632601423protonmail_signature_block-empty"><br></div><div class="m_9218364010632601423protonmail_signature_block-proton">Sent with <a href="https://protonmail.com" target="_blank">ProtonMail</a> Secure Email.<br></div></div><div><br></div><div>‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐<br></div><div> On Monday, November 26, 2018 5:24 PM, Sarat G <<a href="mailto:sarath.ginjupalli89@gmail.com" target="_blank">sarath.ginjupalli89@gmail.com</a>> wrote:<br></div><div> <br></div><blockquote type="cite" class="m_9218364010632601423protonmail_quote"><div dir="ltr"><div dir="ltr"><div>Hi 

ZmnSCPxj,<br></div><div><br></div><div>Good Morning, thanks for the information.<br></div><div><br></div><div>So far I'm only looking at the listpayments to see whether the invoice get paid or not and I overlooked the "status" label in the listinvoices. Now I can use listinvoices to check whether the invoice got paid or not.<br></div><div><br></div><div>To brief out my project, I'm developing the betting game application(<a href="https://github.com/sg777/bet" target="_blank">https://github.com/sg777/bet</a>) where I'm using C-LN. I'm using the main loop, but my game state machine logic depends on the status of the invoice to make further calls.<br></div><div><br></div><div>Thanks again.<br></div><div><div> <br></div><div><div dir="ltr"><div>Regards,<br></div><div>Sarat G<br></div><div><br></div><div><br></div></div></div><div><br></div></div></div></div><div><br></div><div class="gmail_quote"><div dir="ltr">On Mon, Nov 26, 2018 at 2:41 PM ZmnSCPxj <<a href="mailto:ZmnSCPxj@protonmail.com" target="_blank">ZmnSCPxj@protonmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Good morning Sarat,<br></div><div><br></div><div>If you need to poll, `listinvoices label` will return an object with `status` field.<br></div><div>This field will be string `paid` if already paid.<br></div><div><br></div><div>However, I am uncertain if you should be using such polling.<br></div><div>Do you not use a mainloop for your receiver, and use a JSON-RPC library or language that lets you perform the RPC asynchronously?<br></div><div><br></div><div>All of the `wait*` commands are intended for asynchronous RPC invocations.<br></div><div><br></div><div>In addition, this is more on-topic for c-lightning list.  I have moved this topic to C-lightning list.<br></div><div><br></div><div>Regards,<br></div><div>ZmnSCPxj<br></div><div><br></div><div class="m_9218364010632601423m_-6478707008342715694protonmail_signature_block"><div class="m_9218364010632601423m_-6478707008342715694protonmail_signature_block-user m_9218364010632601423m_-6478707008342715694protonmail_signature_block-empty"><br></div><div class="m_9218364010632601423m_-6478707008342715694protonmail_signature_block-proton">Sent with <a href="https://protonmail.com" target="_blank">ProtonMail</a> Secure Email.<br></div></div><div><br></div><div>‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐<br></div><div>On Monday, November 26, 2018 4:54 PM, Sarat G <<a href="mailto:sarath.ginjupalli89@gmail.com" target="_blank">sarath.ginjupalli89@gmail.com</a>> wrote:<br></div><div><br></div><blockquote type="cite" class="m_9218364010632601423m_-6478707008342715694protonmail_quote"><div dir="ltr"><div dir="ltr"><div>Hi Rusty,<br></div><div><br></div><div>Thanks for your reply. <br></div><div><br></div><div>I'm using the C lightning repo for my project(<a href="https://github.com/ElementsProject/lightning" rel="noreferrer" target="_blank">https://github.com/ElementsProject/lightning</a>). Sorry, I framed the question wrongly. Yes, I can use listinvoices to look up for the invoices created at the node.<br></div><div><br></div><div>My scenario is something like this, I'm looking up whether an invoice gets paid or not at the receiver end. For that at this point, I'm calling waitinvoice to see whether an invoice gets paid or not. I would like to know is there any way that the receiver could be aware that the particular invoice created by it paid or not.<br></div><div><br></div><div>The problem is using waitinvoice in my case, it's making my process hang till the invoice gets paid. Some workaround which I'm using for this problem is I'm looking up the difference in amount of the label "msatoshi_to_us" while running the listpeers command.<br></div><div><br></div><div>Thank You.<br></div><div><br></div><div><div><div dir="ltr"><div>Regards,<br></div><div>Sarat G<br></div><div><br></div><div><br></div></div></div><div><br></div></div></div></div><div><br></div><div class="gmail_quote"><div dir="ltr">On Mon, Nov 26, 2018 at 8:59 AM Rusty Russell <<a href="mailto:rusty@rustcorp.com.au" target="_blank">rusty@rustcorp.com.au</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Sarat G <<a href="mailto:sarath.ginjupalli89@gmail.com" target="_blank">sarath.ginjupalli89@gmail.com</a>> writes:<br></div><div>> Hi,<br></div><div>><br></div><div>> I'm been working on the LN repo for a while now. I would like to know if<br></div><div>> there is any way that a payee can lookup the invoice it gets paid, i.e<br></div><div>> similar to the 'lookupinvoice' command as provided by the lnd(Golang).<br></div><div><br></div><div>Hi Sarat,<br></div><div><br></div><div>        I'm confused; "the LN repo" is ambigious, as there are several,<br></div><div>each with their own places to ask questions:<br></div><div><br></div><div><a href="https://github.com/ACINQ/eclair-wallet/" rel="noreferrer" target="_blank">https://github.com/ACINQ/eclair-wallet/</a><br></div><div><a href="https://github.com/ElementsProject/lightning" rel="noreferrer" target="_blank">https://github.com/ElementsProject/lightning</a><br></div><div><a href="https://github.com/LightningNetwork/lnd/" rel="noreferrer" target="_blank">https://github.com/LightningNetwork/lnd/</a><br></div><div><a href="https://github.com/nayutaco/ptarmigan" rel="noreferrer" target="_blank">https://github.com/nayutaco/ptarmigan</a><br></div><div><a href="https://github.com/rust-bitcoin/rust-lightning" rel="noreferrer" target="_blank">https://github.com/rust-bitcoin/rust-lightning</a><br></div><div><br></div><div>Then of course there's the spec repo as well, which guides us all:<br></div><div><br></div><div>        <a href="https://github.com/lightningnetwork/lightning-rfc" rel="noreferrer" target="_blank">https://github.com/lightningnetwork/lightning-rfc</a><br></div><div><br></div><div>But AFAICT (though your question is off-topic for this list):<br></div><div><br></div><div>        lnd has lookupinvoice which looks up by hash[1]<br></div><div>        eclair has checkpayment which looks up by hash or bolt11[2]<br></div><div>        c-lightning has listinvoices which can lookup by label[3], or<br></div><div>           wait(any)invoice[4] which is used for polling.<br></div><div><br></div><div>Would love someone to write a rosetta stone for the different APIs!<br></div><div><br></div><div>Cheers,<br></div><div>Rusty.<br></div><div><br></div><div>[1] <a href="https://api.lightning.community/#lookupinvoice" rel="noreferrer" target="_blank">https://api.lightning.community/#lookupinvoice</a><br></div><div>[2] <a href="https://github.com/ACINQ/eclair/wiki/API" rel="noreferrer" target="_blank">https://github.com/ACINQ/eclair/wiki/API</a><br></div><div>[3] <a href="https://github.com/ElementsProject/lightning/blob/master/doc/lightning-listinvoices.7.txt" rel="noreferrer" target="_blank">https://github.com/ElementsProject/lightning/blob/master/doc/lightning-listinvoices.7.txt</a><br></div><div>[4] <a href="https://github.com/ElementsProject/lightning/blob/master/doc/lightning-waitanyinvoice.7.txt" rel="noreferrer" target="_blank">https://github.com/ElementsProject/lightning/blob/master/doc/lightning-waitanyinvoice.7.txt</a><br></div></blockquote></div></blockquote><div><br></div></blockquote></div></blockquote><div><br></div></blockquote></div>