Cumu lancià i micropagamenti in a vostra applicazione

Aghju passatu a settimana passata à sviluppà u mo primu prugramma publicu - un bot Telegram chì funziona cum'è una billetera di Bitcoin è permette di "lanciari muniti" à l'altri participanti in chats di gruppu, è ancu di fà pagamenti Bitcoin esterni à sè stessu o à l'altri chjamati. "Applicazioni Lightning". Assumimu chì u lettore hè generalmente familiarizatu cù Bitcoin è Telegram, perchè Pruvaraghju di scrive brevemente, senza sfondà in dettagli. Una selezzione di risorse nantu à Bitcoin hè dispunibule à stu ligame, bè, Telegram hè un mezzu di messageria immediata in i dispositi mobili è i PC, chì vi permettenu di creà e vostre propiu applicazioni (chat bots) nantu à a so piattaforma.

Chì sò e caratteristiche chjave di sta applicazione?

  • Permette di ringrazià o incuragisce u vostru interlocutore cun valore materiale reale, è micca solu "cum'è virtuale", questu porta a cumunicazione elettronica à un livellu completamente novu
  • Un esempiu di a vita reale di una applicazione chì pò interagisce finanziariamente cù altre applicazioni utilizendu un protokollu di pagamentu apertu
  • Tutti i cumpunenti di l'applicazione sò prughjetti open source è ponu esse mudificati è usati per i vostri compiti. L'applicazione ùn usa micca suluzioni chjuse o cummirciali, malgradu u fattu chì si mette in u campu di e-commerce, chì oghje hè abbastanza difficiuli di chjamà apertu.

E cumu applicà questu in pratica?

qualcosa cum'è questu ...

Cumu lancià i micropagamenti in a vostra applicazione
o cusì...

Cumu lancià i micropagamenti in a vostra applicazione
Chì significanu sti numeri ? Questu unità bitcoin - satoshi. À i prezzi di scambiu da a mità di 2019, 1000 satoshi hè di circa $ 0.06. Satoshi pò esse spesu in ligna o facilmente scambiatu per munita naziunale. Hè per quessa (liquidità) chì ùn hè micca solu un altru "entrata di basa di dati" o "punti chì pudete spende in i nostri magazzini partenarii"e soldi reale in Internet.
* Vogliu signalà subitu chì, ovviamente, ùn pruvate micca di scrive qualchì parolle o frasi in russo - o ùn cunnoscu micca a traduzzione cuntestuale in certi casi, o una tale traduzzione, in my opinion, sona più ingannosa chè currettu

A quistione pò esse, cumu utilizà una tale applicazione se ùn ci hè micca bitcoins. Puderanu facilmente esse acquistatu in picculi quantità nantu à unu di i numerosi scambii o scambiatori, o pudete da un amicu Bitcoin, o ancu riceve muniti da l'utilizatori attuali di u bot. Parechje carte telefoniche offrenu l'opzione di cumprà bitcoins direttamente "senza abbandunà u cash register".

Cumu lancià i micropagamenti in a vostra applicazioneCumu lancià i micropagamenti in a vostra applicazioneCumu lancià i micropagamenti in a vostra applicazione

Quandu avete a manu nantu à i bitcoins (o piuttostu satosh-ami(?)) - lanciari @atomic_tipbot è fà / depositu.

U bot risponderà dumandendu quanti satoshis aghjunghje à u vostru equilibriu è vi mandendu una fattura per u pagamentu, chì pò esse pagata cù una billetera mobile scannendu u codice QR o premendu u buttone ("apre in u portafoglio") nantu à a pagina di fattura.

Cumu lancià i micropagamenti in a vostra applicazioneCumu lancià i micropagamenti in a vostra applicazioneCumu lancià i micropagamenti in a vostra applicazione

Dopu avè cunfirmatu u pagamentu in a vostra billetera, u bot guasi immediatamente mandarà a cunferma di pagamentu è questu serà visualmente visualizatu in u quadru di fattura.

Finu à questu puntu, avemu toccu dui cumpunenti di l'applicazione - u back-end di u telegram bot è u sistema di trattamentu di pagamentu di criptocurrency (piuttostu, u so front-end).

Per creà un bot di Telegram chì aghju utilizatu Python Telegram Bot. E, sicuru, u bot stessu fonte aperta.

Cum'è un sistema per processà pagamenti è risolve i prublemi UX, a scelta hè cascata (in fatti, ùn ci hè quasi micca scelta) BTCPayServer, nantu à quale documentazione à stu ligame.

Sè vo circate di suluzioni per trasfurmà l'avvenimenti di pagamentu direttamente, allura duvete attentu Electrum CLI pagine di manuale per i cosiddetti pagamenti in catena, è per suluzioni micro-pagamenti istantanei (Lightning) cum'è Lightning-charge o Sparku.

Allora hè self-hosted o micca !?

Iè hè. In a mo applicazione aghju utilizatu hosting gratuitu BTCPayServer - BTCPayJungle, ma hè assolutamente pussibule è ùn hà micca bisognu di assai tempu per lancià u vostru propiu centru di trasfurmazioni. Tuttavia, vale a pena ricurdà chì avete bisognu di ~ 500GB dispunibili nantu à u discu duru per almacenà i blockchains di Bitcoin (è Litecoin). Averete ancu bisognu di risorse di l'informatica è di a rete per a durata di a sincronizazione è, sicondu i vostri bisogni, i "wrappers" necessarii per i blockchains per fà cunvene per interagisce cun elli. BTCPayServer ùn cuntene micca di designu chjavi privati ​​o qualsiasi altra infurmazione chì vi permette di cuntrullà a vostra billetera.

Per i pagamenti nantu à a catena (regular), avete bisognu di aghjunghje u chjamatu. xpub wallet key in BTCPayServer per generà indirizzi di ricezione (chjavi publichi). Questu rende pussibule è sicuru d'utilizà BTCPayServer ancu in forma "spartita". Tutti issi chjavi xpub è l'indirizzi ponu esse facilmente ottenuti in boni portafogli cum'è Elettrum, per una ulteriore configurazione di trasfurmazioni.

Tutti quelli chì anu scontru Bitcoin anu intesu chì Bitcoin hè lento è e transazzione sò caru, soprattuttu quandu ci hè hype, cusì per i micro-pagamenti instantani vale a pena aduprà transazzioni Lightning Network (fora di a catena).

Chì ghjè sta Lightning Network?

Questu hè qualcosa cum'è un plugin per Bitcoin, chì aghjunghje una capa addiziale di astrazione è vi permette di fà transazzioni instantani è praticamenti gratuiti nantu à a reta di Bitcoin. Tuttu chistu hè pussibule grazia à a magia criptografica di multi-signature, più cumunimenti chjamati cuntrattu intelligenti. Ci sò parechje implementazioni di u protocolu Lightning Network, aghju utilizatu c-lampi implementazione in C.

A principal diferenza trà i pagamenti nantu à a catena è fora di a catena (Lightning) hè cumu si sò almacenati. Tuttu in catena e transazzione sò trasmesse in tutti i nodi di a rete finu à chì unu di i nodi Bitcoin annunzià novu bloccu minatu cù e transazzioni inclusi in questu. (In u hub ci hè ancu BitFury, anu solu pruduce ferru per a minera). Hè per quessa chì chjamemu tali transazzioni in catena. Tali transazzioni seranu arregistrati in una blockchain cumuna è fermanu quì finu à a fine di a so esistenza. Inoltre, tali transazzioni sò publicamente dispunibili è ponu esse monitorati, seguiti è analizati.

In casu di fora di catena (Lightning) transazzione tuttu succede in modu diversu. Ogni nodu di rete Lightning hà unu (o più) l'indirizzi nantu à a catena sò i stessi indirizzi Bitcoin regulari induve tuttu principia. Quandu i bitcoins appariscenu in un tali indirizzu, hè pussibule apre u chjamatu. canale di fulmini à un altru node, chì significa chì utilizendu tecniche criptografiche, sti dui nodi accunsenu nantu à a dispunibilità di fondi trà elli. In seguitu, tutte e transazzione (sia i nostri è quelli di i nodi di terzu) chì passanu per un tali canali sò salvati solu nantu à i nodi di i participanti di a transazzione (è i nodi intermediari). L'unicu transazzione chì sò arregistrati nantu à u blockchain sò transazzione chì apre o apre un canale. À una scala più cumpleta, u risultatu hè una reta di nodi interconnessi chì custruisce millaie di camini diffirenti trà i participanti per "trasferisce" fondi da un nodu à l'altru secondu certe regule strette. Quasi tutti tali transazzioni sò guardati solu in u schedariu di basa di dati di i nodi stessi. Hè per quessa chì li chjamemu fora di catena.

U diagramma mostra una visualizazione di tutti i cumpunenti di l'applicazione

Cumu lancià i micropagamenti in a vostra applicazione

In breve:

1) L'utilizatore manda un cumandamentu à u bot in n'ambasciata

2) Telegram manda un missaghju annantu à l'avvenimentu applicazione python bot

3) applicazione python manda una dumanda à BTCPayServer

4) BTCPayServer genera indirizzi BTC è LTC in entrata, è manda ancu una dumanda per una fattura à carica di fulmini, chì in turnu cumunicà cù u dimòniu c-lampi. In u risultatu, avemu una bella forma di prucessu di pagamentu HTML

5) L'utilizatore paga a fattura è vede a cunferma

6) BTCPayServer manda notificazione di pagamentu di fattura (IPN) à u callback_url specificatu, in u nostru casu callbacks.py (un'altra applicazione python per riceve notificazioni)

7) Sicondu i dati ricevuti, l'equilibriu di l'utilizatori cambia

... è se l'utilizatore vulia ritirà fondi (muniti chì hà ricevutu da l'altri) ...

8) Applicazione Python U bot aspetta u testu o l'imaghjini di u codice QR, è quandu i dati validi sò ricevuti, u pagamentu hè fattu da l'utilità.paylightning.py*, chì inizia una transazzione via c-lightning RPC.

Cumu lancià i micropagamenti in a vostra applicazione

* Per esse ghjustu, vale a pena nutà chì u mo wrapper paylightning.py ùn hè micca cumpletamente finitu è ​​pò vultà un risultatu falsu negativu in scenarii specifichi. I ricumandemu per aduprà un wrapper ben debugged in casi vicinu à a pruduzzione

Chì avemu ? L'utilizatori di u nostru bot ponu mandà missaghji in un chat di gruppu o direttamente valore materiale senza limiti. È ùn hè micca tuttu - grazia à u protokollu Lightning Network, chì in un certu sensu hè una reta di pagamentu unificata è simplificata, diventa pussibule di mandà u stessu soldi ricevutu in chat à applicazioni cumpletamente di terzu. Per esempiu, Telegram hà digià avutu u primu bot per i pagamenti Bitcoin - @lntxbot. "Single Balance" vi permette di utilizà qualsiasi di i bots secondu e preferenze di un chat di gruppu particulari (iè, u prublema hè cumplettamente fora è a suluzione hè assai inutile, ma questu hè u puntu). U trasferimentu di u saldu da un bot à l'altru ùn costa nunda è dura seconde! Hè impurtante di nutà chì i creatori di sti bots ùn anu mai cumunicatu cù l'altri in tuttu.

Cumu lancià i micropagamenti in a vostra applicazione Cumu lancià i micropagamenti in a vostra applicazione

Tuttu ciò chì duvete fà hè invià un missaghju di dumanda di depositu da @lntxbot à @atomic_tipbot è voul!

Questu ùn hè più solu "incendu numeri in una basa di dati", ma un pagamentu trà duie basa di dati diffirenti, senza relazione. Cusì, parechji "LApps" sò digià integrati in u bot, trà elli: sat2.io и lnsms.mondu.

Chì significarà Integrazione LApp?

Ogni Lightning Network Un node hè essenzialmente una billetera Bitcoin. Hà dui equilibri: in catena è off-chain. L'equilibriu nantu à a catena hè necessariu per apre novi canali è almacenà fondi da i canali chjusi. Ma l'equilibriu off-chain hè esattamente ciò chì passa trà i nodi. I requisiti principali per un node sò riceve è mandà pagamenti, cusì ogni node hà funzioni cum'è software pacà и fattura. Dimustraraghju cumu succede questu:

user@ln-node:/ % lightning-cli invoice 1000000000 internal_description external_description
{
   "payment_hash" : "64c0c8f5f8f708b08487ad1376f3d256f92ccb9606987ba395c2b4193efde5a0",
   "expires_at" : 1558709834,
   "bolt11" : "lnbc10m1pwdaj72pp5vnqv3a0c7uytppy845fhdu7j2mujejukq6v8hgu4c26pj0hauksqdpqv4u8getjdeskchmyv4ekxunfwp6xjmmwxqyjw5qcqp2rzjqw3qcrp2u3ggke56wrjlstcg76drmfw680cvjum88sl7ja7mpas7xzxz8sqqfecqqyqqqqlgqqqqqqgqjqn8e3ml733dkms2txxldnuwsllwhhkldss73268hdka3e7f083vjhjqurwqrndqd2rcd85pw7vkywnr4dq7yfd59r0g2mw4wzztwr6dcprxzej6"
}

Ricevemu una "fattura" di a specificazione BULLONE 11 in questu casu, chì hè u formatu di pagamentu in a reta di Bitcoin (è Litecoin, per via, ancu). Questa hè una stringa chì cuntene infurmazioni nantu à u destinatariu, a quantità di transazzione, u tempu di scadenza di a dumanda, etc., l'infurmazioni detallate ponu esse ottenute da eseguendu decodepay in relazione à sta stringa:

user@ln-node:/ % lightning-cli decodepay lnbc10m1pwdaj72pp5vnqv3a0c7uytppy845fhdu7j2mujejukq6v8hgu4c26pj0hauksqdpqv4u8getjdeskchmyv4ekxunfwp6xjmmwxqyjw5qcqp2rzjqw3qcrp2u3ggke56wrjlstcg76drmfw680cvjum88sl7ja7mpas7xzxz8sqqfecqqyqqqqlgqqqqqqgqjqn8e3ml733dkms2txxldnuwsllwhhkldss73268hdka3e7f083vjhjqurwqrndqd2rcd85pw7vkywnr4dq7yfd59r0g2mw4wzztwr6dcprxzej6
{
   "currency" : "bc",
   "created_at" : 1558105034,
   "expiry" : 604800,
   "payee" : "025a14b8ed40583d67aec92da19453e0b2d1fbbf75f96f85d3dd0ff61a51ee0490",
   "msatoshi" : 1000000000,
   "amount_msat" : "1000000000msat",
   "description" : "external_description",
   "min_final_cltv_expiry" : 10,
   "routes" : [
      [
         {
            "pubkey" : "03a20c0c2ae4508b669a70e5f82f08f69a3da5da3bf0c973673c3fe977db0f61e3",
            "short_channel_id" : "574012x1255x1",
            "fee_base_msat" : 1000,
            "fee_proportional_millionths" : 1,
            "cltv_expiry_delta" : 144
         }
      ]
   ],
   "payment_hash" : "64c0c8f5f8f708b08487ad1376f3d256f92ccb9606987ba395c2b4193efde5a0",
   "signature" : "304502210099f31dffd18b6db8296637db3e3a1ffbaf7b7db087a2ad1eedb7639f25e78b25022079038370073681aa1e1a7a05de6588e98ead078896d0a37a15b755c212dc3d37"
}

Ma per pagà per una tale "fattura" avemu bisognu di a funzione di pagamentu da c-lightning:

user@ln-node:/ % lightning-cli pay lnbc2u1pwdana3pp5c0nyfgq974hr8huflt9uutyalj4maaw3q5594xp89jkvw74jme3sdql2pshjgr5dus8q6r0dejjqampd3kx2aqcqzpgwjgn45gy80jwjhgm3tpsxg33j6h6pehdus0mnjerrad943cz3vs83g30lyhlhfjxtqvtl76vttkuhs5jekuxpsqmf98l8265pwmm76gp4e7z6j
{
   "id" : 163,
   "payment_hash" : "c3e644a005f56e33df89facbce2c9dfcabbef5d105285a98272cacc77ab2de63",
   "destination" : "03021c5f5f57322740e4ee6936452add19dc7ea7ccf90635f95119ab82a62ae268",
   "msatoshi" : 200000,
   "amount_msat" : "200000msat",
   "msatoshi_sent" : 200003,
   "amount_sent_msat" : "200003msat",
   "created_at" : 1558106072,
   "status" : "complete",
   "payment_preimage" : "1a9552b9f4e9199e26839353f870b12cc85b7674a2fb134e78aa370032611019",
   "bolt11" : "lnbc2u1pwdana3pp5c0nyfgq974hr8huflt9uutyalj4maaw3q5594xp89jkvw74jme3sdql2pshjgr5dus8q6r0dejjqampd3kx2aqcqzpgwjgn45gy80jwjhgm3tpsxg33j6h6pehdus0mnjerrad943cz3vs83g30lyhlhfjxtqvtl76vttkuhs5jekuxpsqmf98l8265pwmm76gp4e7z6j"
}

Tutti i stati di transazzione sò trattati da tutta a reta è u vostru propiu node in particulare. Ùn ci hè bisognu (ma hè pussibule) di interagisce cù l'autori di l'applicazione di u destinatariu di pagamentu o qualsiasi di e so API per ottene infurmazione nantu à u statu di u pagamentu. Ùn ci hè bisognu di verificà u statutu di pagamentu in u sistema di trattamentu intermediariu. Ùn ci hè bisognu di aspittà chì a vostra transazzione sia appruvata da un bancu o agenzia di u guvernu. Dopu tuttu, ùn ci sò micca caricamenti o altri fattori esterni chì ponu influenzà u saldu di u vostru contu. Questa hè una suluzione per traslassi u valore nantu à Internet, senza a necessità di un arbitru di terzu chì decide se a transazzione cumplessi cù e regule (à volte ancu e regule internu, nantu à quale micca tutti i participanti sò infurmati in anticipu) o micca. Ùn ci hè micca "regula di casa" in Bitcoin. L'unicu regule chì deve esse seguitu sò e regule di a reta - aperta è cunnisciuta da tutti.

A rende vera linii diretti, praticamente gratis и istante transazzione monetaria trà persone o prugrammi in un modu cumplettamente autònuma.

Se avete a capacità di riceve dati di pagamentu da una applicazione di terzu, allora diventa pussibule interagisce finanziariamente cù quella applicazione. Per esempiu, cunzidira u serviziu lnsms.world, chì permette di mandà un missaghju SMS à un numeru arbitrariu, paghendu cù bitcoins. Per integrà sta applicazione, avemu solu bisognu di passà i dati da a forma web direttamente à u script di mandatu SMS - emulate l'azzioni di l'utilizatori nantu à u situ web:

payload = {                                                                                                                           
        'number': phone_number,
        'text': text,
        'force_unicode': 0
    }

    send_req = requests.post('https://lnsms.world/invoice', data=payload)
    if send_req.status_code == 201:
        plain_invoice = str(send_req.text)

Ùn sò micca sapè per quale ragione, ma lnsms risponde cù un codice di statutu HTTP 201 è torna una fattura in u formatu BOLT11. Ebbè, questu hè abbastanza per l'utilizatori di u bot per pudè pagà per mandà SMS da u so saldo ricevutu in chats. L'utilizatore ùn sà ancu ciò chì succede quì, hà pagatu solu un paru di centesimi per mandà un SMS. Eiu, cum'è sviluppatore, ùn entre in i dettagli di cumu funziona i servizii SMS. Aghju solu rinviatu u pagamentu è ricevutu u serviziu. Pudete fà un marcatu in cima, o ùn avete micca bisognu - questu hè a mo scelta libera. Nisun cuntu, accordu o un altru API per i travaglii triviali cum'è l'inviu di SMS.

Avà imaginemu per un mumentu chì a nostra applicazione hè qualcosa di più utile ch'è un chatbot è face un pagamentu micca à un altru bot, ma à una altra applicazione o dispositivu cunnessu à Internet. O questi sò decine o ancu centinaie di pagamenti insignificanti ogni siconda trà i dispositi, servizii, magazzini o certi fornituri di servizii. Questu hè u putere di i micro-pagamenti, questu hè ciò chì l'Internet di e Cose deve esse. Ci sò digià prughjetti cum'è Althea chì portanu sti idee à a vita è in un futuru vicinu, videremu grandi, in u mo parè, cambiamenti in u spaziu chì avemu avà chjamatu e-commerce.

Se ti piace u post è vulete pruvà bitcoins in azione - mandatemi un bicchiere di birra e panini francesi morbidi.

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, per piacè.

Avete interessatu in articuli puramente tecnichi nantu à Bitcoin è software rilativi?

  • chì

  • No

  • Sò più interessatu in l'aspettu di u mercatu di criptocurrency

8 utilizatori anu vutatu. 4 utilizatori si sò astenuti.

Source: www.habr.com

Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster