Kuidas kÀivitada rakenduses mikromakseid

Eelmise nĂ€dala arendasin oma esimest avalikku programmi - Bitcoini rahakotina töötavat Telegrami robotit, mis vĂ”imaldab “visata mĂŒnte” teistele grupivestlustes osalejatele, samuti teha Bitcoini vĂ€lismakseid endale vĂ”i teistele nö. "VĂ€lkrakendused". Eeldan, et lugeja on Bitcoini ja Telegramiga ĂŒldiselt tuttav, sest PĂŒĂŒan kirjutada lĂŒhidalt, detailidesse sĂŒvenemata. Valik ressursse Bitcoini kohta on saadaval sellel lingilTelegram on kiirsĂ”numite saatmise vahend mobiilseadmetes ja arvutites, mis vĂ”imaldab teil nende platvormil luua oma vĂ€ikseid rakendusi (vestlusboteid).

Millised on selle rakenduse pÔhifunktsioonid?

  • VĂ”imaldab teil oma vestluskaaslast tĂ€nada vĂ”i julgustada tĂ”elise materiaalse vÀÀrtusega, mitte ainult "virtuaalne nagu", viib see elektroonilise suhtluse tĂ€iesti uuele tasemele
  • NĂ€ide tegelikust elust rakendusest, mis suudab avatud makseprotokolli kasutades rahaliselt suhelda teiste rakendustega
  • KĂ”ik rakenduse komponendid on avatud lĂ€htekoodiga projektid ja neid saab muuta ja kasutada oma ĂŒlesannete jaoks. Rakendus ei kasuta suletud ega kommertslahendusi, hoolimata sellest, et see sobib e-kaubanduse valdkonda, mida tĂ€napĂ€eval on ĂŒsna raske avatuks nimetada.

Ja kuidas seda praktikas rakendada?

midagi sellist


Kuidas kÀivitada rakenduses mikromakseid
vÔi nii...

Kuidas kÀivitada rakenduses mikromakseid
Mida need numbrid tĂ€hendavad? See bitcoini ĂŒhikud - satoshi. Börsihindades 2019. aasta keskpaiga seisuga on 1000 satoshit ligikaudu 0.06 dollarit. Satoshit saab kulutada veebis vĂ”i lihtsalt vahetada oma valuuta vastu. Just sel pĂ”hjusel (likviidsus) ei ole see lihtsalt teine "andmebaasi sisestus" vĂ”i "Punktid, mida saate kulutada meie partnerpoodides"Ja pĂ€ris internetiraha.
*Juhin kohe Ă€ra, et ilmselgelt ma ei pĂŒĂŒa mingeid sĂ”nu vĂ”i fraase vene keeles kirjutada - kas ma ei tea mĂ”nel juhul kontekstilist tĂ”lget vĂ”i kĂ”lab selline tĂ”lge minu meelest eksitavamalt kui Ă”ige

VĂ”ib tekkida kĂŒsimus, kuidas sellist rakendust kasutada, kui bitcoine pole. Neid saab hĂ”lpsasti osta vĂ€ikestes kogustes ĂŒhest paljudest börsidest vĂ”i vahetajatest vĂ”i Bitcoini sĂ”bralt vĂ”i isegi saada mĂŒnte roboti praegustelt kasutajatelt. Paljud telefonirahakotid pakuvad vĂ”imalust osta bitcoine otse "kassast lahkumata".

Kuidas kÀivitada rakenduses mikromakseidKuidas kÀivitada rakenduses mikromakseidKuidas kÀivitada rakenduses mikromakseid

Kui saite kÀtte bitcoinid (vÔi Ôigemini satosh-ami(?)) - kÀivitamine @atomic_tipbot ja teha /hoiustada.

Bot vastab sellele kĂŒsimusega, mitu satoshit teie saldole lisada ja saadab teile arve maksmiseks, mille saab tasuda mobiilse rahakotiga, skaneerides QR-koodi vĂ”i vajutades nuppu ("avatud rahakotis") arve lehel.

Kuidas kÀivitada rakenduses mikromakseidKuidas kÀivitada rakenduses mikromakseidKuidas kÀivitada rakenduses mikromakseid

PĂ€rast makse kinnitamist teie rahakotis saadab bot peaaegu kohe maksekinnituse ja see kuvatakse visuaalselt arve raamis.

Siiani oleme puudutanud kahte rakenduse komponenti - telegrammi roboti tagaosa ja krĂŒptovaluutamaksete töötlemise sĂŒsteemi (pigem selle esiosa).

Kasutasin Telegrami roboti loomiseks Pythoni telegrammi robot. Ja muidugi bot ise avatud lÀhtekoodiga.

Maksete töötlemise ja UX-i probleemide lahendamise sĂŒsteemina langes valik (tegelikult pole valikut peaaegu ĂŒldse) BTCPayServer, mille peal dokumentatsioon sellel lingil.

Kui otsite lahendusi maksesĂŒndmuste vahetuks töötlemiseks, siis peaksite tĂ€helepanu pöörama Electrum CLI kĂ€siraamatu lehed jaoks nn ketisisesed maksed ja kiirmaksete (Lightning) lahendused nagu VĂ€lklaeng vĂ”i Sparko.

Kas see on siis isemajutatud vÔi mitte!?

Jah see on. Oma rakenduses kasutan tasuta hostimist BTCPayServer - BTCPayJungle, kuid see on tĂ€iesti vĂ”imalik ja oma töötlemiskeskuse kĂ€ivitamine ei nĂ”ua palju aega. Siiski tasub meeles pidada, et Bitcoini (ja Litecoini) plokiahelate salvestamiseks on kĂ”vakettal vaja ~500 GB. Samuti vajate sĂŒnkroonimise ajaks arvutus- ja vĂ”rguressursse ning vastavalt teie vajadustele ka vajalikke plokiahelate "ĂŒmbriseid", et nendega suhtlemine oleks mugav. BTCPayServer ei sisalda poolt kujundus privaatvĂ”tmed vĂ”i muu teave, mis vĂ”imaldab teil oma rahakotti juhtida.

Ahelasiseste (tavaliste) maksete jaoks tuleb lisada nn. xpub rahakoti vÔti BTCPayServeris vastuvÔtvate aadresside (avalike vÔtmete) genereerimiseks. See muudab BTCPayServeri kasutamise vÔimalikuks ja ohutuks isegi "jagatud" kujul. KÔiki neid xpub vÔtmeid ja aadresse saab hÔlpsasti hankida heas rahakotis, nÀiteks Electrum, edasise töötlemise seadistamiseks.

KÔik, kes on Bitcoiniga kokku puutunud, on kuulnud, et Bitcoin on aeglane ja tehingud on kallid, eriti kui on hype, seega tasub hetkeliste mikromaksete jaoks kasutada (ahelavÀliseid) Lightning Networki tehinguid.

Mis see vÀlguvÔrk on?

See on midagi Bitcoini pistikprogrammi sarnast, mis lisab tĂ€iendava abstraktsioonikihi ja vĂ”imaldab teha Bitcoini vĂ”rgus koheseid ja praktiliselt tasuta tehinguid. KĂ”ik see on vĂ”imalik tĂ€nu mitme allkirja krĂŒptograafilisele maagiale, mida sagedamini nimetatakse tark leping. Lightning Networki protokollil on mitu rakendust, mida ma kasutan c-vĂ€lk rakendamine C-s.

Peamine erinevus ahelasiseste ja ahelavĂ€liste (Lightning) maksete vahel on nende salvestamise viis. KĂ”ik ahelas tehingud edastatakse kĂ”igi vĂ”rgusĂ”lmede vahel, kuni ĂŒks Bitcoini sĂ”lmedest teatab uus kaevandatud plokk selles sisalduvate tehingutega. (Rumbas on isegi BitFury, toodavad nad lihtsalt kaevandamiseks rauda). Sel pĂ”hjusel kutsumegi selliseid tehinguid ahelas. Sellised tehingud registreeritakse ĂŒhises plokiahelas ja jÀÀvad sinna selle eksisteerimise lĂ”puni. Samuti on sellised tehingud avalikult kĂ€ttesaadavad ning neid saab jĂ€lgida, jĂ€lgida ja analĂŒĂŒsida.

Puhul ahelavĂ€line (VĂ€lk)tehingutega juhtub kĂ”ik teisiti. Igal Lightningi vĂ”rgusĂ”lmel on ĂŒks (vĂ”i enama) ketisisesed aadressid on samad tavalised Bitcoini aadressid, kust kĂ”ik algab. Kui sellisele aadressile ilmuvad bitcoinid, on vĂ”imalik avada nn. vĂ€lgu kanal teisele sĂ”lmele, mis tĂ€hendab, et krĂŒptotehnikaid kasutades leppisid need kaks sĂ”lme omavahel kokku rahaliste vahendite olemasolus. Hiljem salvestatakse kĂ”ik sellist kanalit lĂ€bivad tehingud (nii meie enda kui ka kolmandate osapoolte sĂ”lmede omad) ainult tehingus osalejate (ja vahesĂ”lmede) sĂ”lmedesse. Ainsad tehingud, mis plokiahelas salvestatakse, on tehingud, mis avavad vĂ”i avavad kanali. TĂ€ielikumal skaalal on tulemuseks omavahel ĂŒhendatud sĂ”lmede vĂ”rgustik, mis rajab osalejate vahel tuhandeid erinevaid teid, et teatud rangete reeglite jĂ€rgi raha ĂŒhest sĂ”lmest teise â€œĂŒle kanda”. Peaaegu kĂ”ik sellised tehingud salvestatakse ainult sĂ”lmede endi andmebaasifaili. See on pĂ”hjus, miks me neid kutsume ahelavĂ€line.

Diagramm nÀitab kÔigi rakenduse komponentide visualiseerimist

Kuidas kÀivitada rakenduses mikromakseid

LĂŒhidalt:

1) Kasutaja saadab robotile kÀsu Telegramm

2) Telegram saadab sĂŒndmuse kohta teate pythoni rakendus bot

3) pythoni rakendus saadab pÀringu aadressile BTCPayServer

4) BTCPayServer genereerib sissetulevad BTC ja LTC aadressid ning saadab ka arve taotluse vÀlklaeng, kes omakorda suhtleb deemoniga c-vÀlk. Selle tulemusena saame ilusa HTML-i maksete töötlemise vormi

5) Kasutaja tasub arve ja nÀeb kinnitust

6) BTCPayServer saadab arve tasumise teatis (IPN) mÀÀratud tagasihelistamise_url-ile, meie puhul callbacks.py (teine ​​pythoni rakendus teadete saamiseks)

7) Vastavalt saadud andmetele muutub kasutaja saldo

... ja kui kasutaja soovis raha vĂ€lja vĂ”tta (mĂŒnte, mille ta sai teistelt) ...

8) Pythoni rakendus Bot ootab QR-koodi teksti vÔi pilti ning kehtivate andmete laekumisel sooritab makse utiliitpaylightning.py*, mis algatab tehingu c-lightning RPC kaudu.

Kuidas kÀivitada rakenduses mikromakseid

*Ausalt öeldes tasub mĂ€rkida, et minu paylightning.py ĂŒmbris ei ole tĂ€ielikult tĂ€ielik ja vĂ”ib teatud stsenaariumide korral anda vale negatiivse tulemuse. Ma soovitan kasutada hĂ€sti silutud ĂŒmbrist tootmisele lĂ€hedastel juhtudel

Mis meil on? Meie roboti kasutajad saavad saata sĂ”numeid grupivestluses vĂ”i otse materiaalne vÀÀrtus piiranguid pole. Ja see pole veel kĂ”ik – tĂ€nu Lightning Networki protokollile, mis on teatud mĂ”ttes ĂŒhtne ja lihtsustatud maksevĂ”rk, muutub vĂ”imalikuks vestluses saadud sama raha saata ka tĂ€iesti kolmandate osapoolte rakendustesse. NĂ€iteks Telegramis oli juba esimene Bitcoini maksete robot – @lntxbot. "Single Balance" vĂ”imaldab teil kasutada mis tahes roboteid sĂ”ltuvalt konkreetse grupivestluse eelistustest (jah, probleem on tĂ€iesti kaugel ja lahendus on vĂ€ga kasutu, kuid see on asja mĂ”te). Bilansi ĂŒlekandmine ĂŒhest robotist teise ei maksa midagi ja vĂ”tab sekundeid! Oluline on mĂ€rkida, et nende robotite loojad ei suhelnud kunagi omavahel.

Kuidas kÀivitada rakenduses mikromakseid Kuidas kÀivitada rakenduses mikromakseid

KÔik, mida pead tegema, on edastada sissemaksetaotluse sÔnum aadressilt @lntxbot aadressile @atomic_tipbot ja voul!

See ei ole enam lihtsalt "numbrite andmebaasi viskamine", vaid tasumine kahe erineva, omavahel mitteseotud andmebaasi vahel. Seega on robotisse juba integreeritud mitu LApp-i, sealhulgas: sat2.io Đž lnsms.maailm.

Mis see tÀhendab? LApp-i integreerimine?

IgaĂŒks Lightning Network SĂ”lm on sisuliselt Bitcoini rahakott. Sellel on kaks tasakaalu: ahelasisene ja ahelavĂ€line. Ahelisisene saldo on vajalik uute kanalite avamiseks ja suletud kanalite rahaliste vahendite salvestamiseks. Kuid ahelavĂ€line tasakaal on tĂ€pselt see, mis sĂ”lmede vahel toimub. Peamised nĂ”uded sĂ”lmele on maksete vastuvĂ”tmine ja saatmine, seega on igal sĂ”lmel tarkvara funktsioonid maksma Đž arve. NĂ€itan, kuidas see juhtub:

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

Saame spetsifikatsiooni “arve”. POLT11 antud juhul, mis on maksevorming Bitcoini vĂ”rgus (ja muide ka Litecoinis). See on string, mis sisaldab teavet adressaadi, tehingu summa, pĂ€ringu aegumisaja jne kohta. Üksikasjalikku teavet saate selle stringi dekodeerimismakse kĂ€ivitamisel:

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"
}

Kuid sellise “arve” eest tasumiseks vajame c-lightningi tasumisfunktsiooni:

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"
}

KĂ”iki tehinguolekuid töötleb kogu vĂ”rk ja eelkĂ”ige teie enda sĂ”lm. Makse oleku kohta teabe saamiseks ei ole vaja (aga on vĂ”imalik) suhelda makse saaja rakenduse vĂ”i nende API-de autoritega. Makse staatust pole vaja vahetöötlussĂŒsteemis kontrollida. Pole vaja oodata, kuni pank vĂ”i riigiasutus teie tehingu heaks kiidab. LĂ”ppude lĂ”puks ei ole tagasimakseid ega muid vĂ€liseid tegureid, mis vĂ”ivad teie kontojÀÀki mĂ”jutada. See on lahendus vÀÀrtuse liigutamiseks ĂŒle interneti, ilma et oleks vaja kolmandast osapoolest vahekohtunikku, kes otsustab, kas tehing vastab reeglitele (mĂ”nikord ka sisereeglitele, millest kĂ”iki osalejaid ette ei teavitata) vĂ”i mitte. Bitcoinis pole "majareegleid". Ainsad reeglid, mida tuleb jĂ€rgida, on vĂ”rgu reeglid – avatud ja kĂ”igile teada.

See muudab selle tĂ”eliseks sirged jooned, praktiliselt tasuta Đž kohene rahalised tehingud inimeste vĂ”i programmide vahel tĂ€iesti vĂ”rguĂŒhenduseta reĆŸiimis.

Kui teil on vĂ”imalus saada makseandmeid kolmanda osapoole rakendusest, on vĂ”imalik selle rakendusega rahaliselt suhelda. Vaatleme nĂ€iteks teenust lnsms.world, mis vĂ”imaldab saata SMS-sĂ”numi suvalisele numbrile, makstes selle eest bitcoinidega. Selle rakenduse integreerimiseks peame edastama veebivormi andmed otse SMS-i saatmisskripti – emuleerima kasutaja toiminguid veebisaidil:

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)

Ma ei tea, mis pĂ”hjusel, aga lnsms vastab HTTP olekukoodiga 201 ja tagastab arve vormingus BOLT11. Noh, sellest piisab, et robotikasutajad saaksid oma vestlustes saadud saldost SMS-i saatmise eest maksta. Kasutaja ei tea isegi, mis seal toimub, ta maksis lihtsalt paar senti SMS-i saatmise eest. Ja mina kui arendaja ei lasku SMS-teenuste toimimise ĂŒksikasjadesse. Just edastasin makse ja sain teenuse kĂ€tte. Sa vĂ”id peale teha mĂ€rgistuse vĂ”i ei pea seda tegema – see on minu vaba valik. Pole kontosid, lepinguid ega muud API-t tĂŒhiste toimingute jaoks, nagu SMS-ide saatmine.

Kujutagem nĂŒĂŒd korraks ette, et meie rakendus on midagi kasulikumat kui chatbot ja teeb makse mitte teisele robotile, vaid teisele internetti ĂŒhendatud rakendusele vĂ”i seadmele. VĂ”i on need kĂŒmned vĂ”i isegi sajad ebaolulised maksed iga sekund seadmete, teenuste, kaupluste vĂ”i mĂ”ne teenusepakkuja vahel. See on mikromaksete jĂ”ud, selline peaks asjade internet vĂ€lja nĂ€gema. Selliseid projekte juba on Althea kes need ideed ellu viivad ja lĂ€hiajal nĂ€eme suuri, minu hinnangul, muutusi selles valdkonnas, mida praegu e-kaubanduseks nimetame.

Kui teile postitus meeldis ja soovite bitcoine tegevuses proovida - saada mulle klaas Ôlut ja pehmed prantsuse kuklid.

KĂŒsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Kas olete huvitatud puhtalt tehnilistest artiklitest Bitcoini ja sellega seotud tarkvara kohta?

  • Jah

  • ei

  • Mind huvitavad rohkem krĂŒptoraha turuaspektid

8 kasutajat hÀÀletas. 4 kasutajat jÀi erapooletuks.

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster