Eelmisel nĂ€dalal töötasin oma esimese avaliku programmi kallal â Telegrami boti, mis toimib Bitcoin rahakotina ning vĂ”imaldab , ja Telegram on mobiilsetel seadmetel ja arvutites kasutatav kohese sĂ”numside vahend, mis vĂ”imaldab nende platvormil luua vĂ€ikseid rakendusi (vestlusbote).
Millised on selle rakenduse peamised funktsioonid?
- See vĂ”imaldab tĂ€nada vĂ”i premeerida vestluspartnerit tĂ”eliselt materiaalse vÀÀrtusega, mitte lihtsalt âvirtuaalse meeldimiseâ, see viib elektroonilise suhtluse tĂ€iesti uuele tasemele
- Reaalne nÀide rakendusest, mis vÔib rahaliselt suhelda teiste rakendustega, kasutades avatud makseprotokolli
- KÔik rakenduse komponendid on avatud lÀhtekoodiga projektid, mida on vÔimalik muuta ja oma vajadustele kohandada. Rakendus ei kasuta suletud ega kommerts lahendusi, kuigi see kuulub tÀnapÀeva e-kaubanduse valdkonda, mida tÀna avatud nimetada on keeruline.
Ja kuidas seda praktikas rakendada?
niimoodi...

vÔi nii...

Mida need numbrid tĂ€hendavad? Need on bitcoini ĂŒksused - satoshid. Börsi hindade jĂ€rgi 2019. aasta keskel on 1000 satoshit ligikaudu $0,06. Satoshisid saab veebis kulutada vĂ”i kergesti vahetada rahvusvaluuta vastu. Just selle tĂ”ttu (likviidsus) ei ole see pelgalt âkanne andmebaasisâ vĂ”i âpunkte, mida saate kasutada meie partnerite poodidesâ, vaid tĂ”eliselt internetirahad.
*tahan kohe mĂ€rkida, et mĂ”ned sĂ”nad vĂ”i vĂ€ljendid pĂŒĂŒan teadlikult mitte kirjutada vene keeles â kas ei tunne konteksti tĂ”lget vĂ”i tundub see minu arvates eksitavalt korrektne.
VĂ”ib tekkida kĂŒsimus, kuidas sellist rakendust kasutada, kui bitcoine ei ole. Need on hĂ”lpsasti ostetavad vĂ€ikestes kogustes ĂŒhel paljudest börsidest vĂ”i vahetuspunktidest, vĂ”i vĂ”ite neid saada bitcoini omavalt sĂ”bralt vĂ”i isegi praegustelt botikasutajatelt. Paljud mobiilset rahakotti pakkuvad teenused vĂ”imaldavad osta bitcoine otse "kassast eemal minemata".



Kui olete bitcoine saanud (vĂ”i pigem satoshis-ide(?)) â kĂ€ivitage ja tehke /deposit.
Bot kĂŒsib, kui palju satoshis soovite saldole lisada, ja saadab maksmiseks arve, mille saate mobiilse rahakoti abil QR-koodi skaneerimise vĂ”i nupu ("ava rahakotis") kaudu arve lehelt maksta.



Makse kinnitamisel oma rahakotis saadab bot peaaegu kohe makse kinnituse ja see kuvatakse visuaalselt arve raamis.
Kuni selle hetkeni oleme kĂ€sitlenud rakenduse kahte komponenti â back-end telegrami boti ja krĂŒptoraha maksesĂŒsteemi (pigem selle front-end).
Telegrami boti loomiseks olen kasutanud . Ja muidugi on see bot .
Makseprotsessimise ja UX-ĂŒlesannete lahendamiseks on valikuks (tĂ”epoolest, valikuvĂ”imalusi on peaaegu ei olegi) BTCPayServer dokumentatsioon on saadaval sellel lingil .
Electrum CLI kÀsiraamatule Lightning-charge vÔi .
Jah, see on nii. Oma rakenduses kasutan BTCPayServeri tasuta hostimist â
BTCPayJungle by-design erakliente ega mingit muud teavet, mis vÔimaldaks teie rahakoti kontrollimist. privaatvÔtmete vÔi muu teabe kohta, mis vÔimaldab teil oma rahakotti kontrollida.
On-chain (tavaliste) maksete jaoks tuleb lisada nii-öelda xpub-rahakoti vÔti BTCPayServeris, et genereerida vastuvÔtmiseks (avalikke vÔtmeid) aadresse. See vÔimaldab ja muudab BTCPayServeri kasutamise isegi 'jagatuna' turvaliseks. KÔiki neid xpub-vÔtmeid ja aadresse on lihtne saada headest rahakottidest, nagu , et edasi liikuda protsessimise seadistamisega.
KÔik, kes on bitcoini kasutanud, on kuulnud, et bitcoini tehingud on aeglased ja kulukad, eriti siis, kui on buum, seepÀrast tasub kiirete mikro-maksete jaoks kasutada (off-chain) tehinguid Lightning Networki kaudu.
Mis asi on Lightning Network?
See on midagi nagu Bitcoini pistikprogramm, mis loob tĂ€iendava abstraktsioonikihi ja vĂ”imaldab teha kiireid ja praktiliselt tasuta tehinguid Bitcoinis. KĂ”ik see on vĂ”imalik tĂ€nu krĂŒptograafilisele maagiale mitme allkirjaga, mida tihti nimetatakse nutilepinguks. Lightning Networki protokolli on mitu rakendust, mina kasutan rakendust C keeles.
Peamine erinevus on-chain ja off-chain (Lightning) maksete vahel seisneb selles, kuidas neid salvestatakse. KĂ”ik on-chain tehingud edastatakse kĂ”igi vĂ”rgu sĂ”lmede kaudu, kuni ĂŒks Bitcoin' node kuulutab vĂ€lja kaasatud tehingutega. (HabrĂ©s on isegi olemas , nad toodavad just kaevandamiseks mĂ”eldud riistvara). Just seetĂ”ttu nimetame me neid tehinguid on-chain. Sellised tehingud salvestatakse ĂŒldisesse plokiahelasse ja jÀÀvad sinna kogu oma eksisteerimise ajaks. Samuti on need tehingud ĂŒldiselt kergesti jĂ€lgitavad, neid saab jĂ€lgida ja analĂŒĂŒsida.
Off-chain (Lightning) tehingute puhul toimub kĂ”ik teisiti. Igal Lightning-vĂ”rgu sĂ”lmel on ĂŒks (vĂ”i rohkem) on-chain aadresse â need on need tavapĂ€rased bitcoini aadressid, kust kĂ”ik algab. Kui sellises aadressis ilmnevad bitcoiinid, on vĂ”imalik avada nii-öelda lightning kanal lightning kanal teise sĂ”lme, mis tĂ€hendab, et krĂŒptograafiliste tehnikate abil on need kaks sĂ”lme kokku leppinud vahendite kergesti kĂ€tte saamise osas. Hiljem salvestatakse kĂ”ik tehingud (nii enda kui ka kolmandate osaliste sĂ”lmede tehingud), mis liiguvad sellise kanali kaudu, ainult tehingu osaliste sĂ”lmedes (ja vahendavates sĂ”lmedes). Ainsad tehingud, mis kajastuvad plokiahelas, on kanalite avamise vĂ”i taasavamise tehingud. Tulemuseks on funktsionaalne vĂ”rk, mis ĂŒhendab sadu erinevaid teid osalejate vahel raha ĂŒleviimiseks ĂŒhest sĂ”lmest teise rangete reeglite jĂ€rgi. Praktiliselt kĂ”ik sellised tehingud salvestatakse ainult osaliste sĂ”lmede andmebaasifailides. Just sellepĂ€rast nimetame neid (Lightning) tehingute puhul toimub kĂ”ik teisiti. Igal Lightning-vĂ”rgu sĂ”lmel on ĂŒks.
Diagrammil on nÀha rakenduse kÔikide komponentide visualiseerimine

LĂŒhidalt:
1) Kasutaja saadab kÀsu botile Telegram
2) Telegram saadab sĂŒndmuse kohta teate python rakendusele botile
3) python-rakendus saadab pÀringu , mille kohta
4) BTCPayServer genereerib sisenevad BTC ja LTC aadressid ning saadab arve pÀringu lightning-charge, mis omakorda suhtleb deemoniga c-lightning. VÀljundina saame kena HTML-makse töötlemise vormi
5) Kasutaja tasub arve ja nÀeb kinnitust
6) , mille kohta saadab arve makse ŃĐČĐ”ĐŽĐŸĐŒĐ»Đ”ĐœĐžĐ” (IPN) antud callback_url, meie juhul callbacks.py (veel ĂŒks python rakendus teavituste vastuvĂ”tmiseks)
7) Vastavalt saadud andmetele muudab kasutaja saldo
⊠ja kui kasutaja soovib vĂ€lja vĂ”tta vahendeid (mĂŒnte, mida on saadud teistelt) âŠ
8) Python-rakendus bot ootab tekst vÔi QR-koodi pilti ja kui kehtivad andmed on saadud, toimub makse utiliidipaylightning.py*, mis algatab tehingu c-lightning RPC kaudu.

*ĂigusemĂ”istmise nimel tuleb mĂ€rkida, et minu paylightning.py wrapper ei ole tĂ€iesti lĂ”petatud ja vĂ”ib kahtlastes stsenaariumides vale negatiivset tulemust anda. Soovitan loodud kvaliteedi jĂ€rgi tootmislĂ€hedastes tingimustes
Mida me saame? Meie boti kasutajad saavad grupivestluses vĂ”i otse edastada materiaalset vÀÀrtust piiranguteta. Ja see ei ole veel kĂ”ik â tĂ€nu Lightning Network protokollile, mis on teatud mĂ”ttes ĂŒhtne ja lihtsustatud makseteenus, on vĂ”imalik saata samu raha, mis on vestluses saadud, tĂ€iesti vĂ€listele rakendustele. NĂ€iteks, Telegramis on juba esimene bot Bitcoin'i maksete jaoks â @lntxbot. "Ăhine saldo" vĂ”imaldab kasutada igasuguseid bote, sĂ”ltuvalt konkreetse grupi vestluse eelistustest (jah, probleem on tĂ€ielikult vĂ€lja mĂ”eldud ja lahendus ĂŒsna kasutu, kuid asi on olemuses). Saldo ĂŒlekandmine ĂŒhelt botal teisele ei maksa midagi ja vĂ”tab sekundeid! Oluline on mĂ€rkida, et nende botide loojad pole omavahel kunagi ĂŒhendust vĂ”tnud.

On lihtsalt vajalik edastada sĂ”num, millel on depoos kĂŒsitlus @lntxbot'ilt @atomic_tipbot'ile ja voila!
See ei ole enam lihtsalt "numbrite edastamine DB-sse", vaid makse kahe erineva, omavahel mitteseotud andmebaasi vahel. Seega on botis juba integreeritud mitmed "LApp'id", nende seas: ja .
Mida tÀhendab LApp'i integraatsioon?
Iga Lightning Network node on oma olemuselt Bitcoin'i rahakott. Tal on kaks saldo: on-chain ja off-chain. On-chain saldo on vajalik uute kanalite avamiseks ja sulgemise kanalite vahendite hoidmiseks. Off-chain saldo on just see, mis liigub node'ide vahel. Node'i peamised nÔuded on maksete vastuvÔtmine ja saatmine, seetÔttu on igal node'il tarkvarana funktsioonid pay ja invoice. NÀitan, kuidas see kÀib:
user@ln-node: / % lightning-cli invoice 1000000000 internal_description external_description
{
"payment_hash": "64c0c8f5f8f708b08487ad1376f3d256f92ccb9606987ba395c2b4193efde5a0",
"expires_at": 1558709834,
"bolt11": "lnbc10m1pwdaj72pp5vnqv3a0c7uytppy845fhdu7j2mujejukq6v8hgu4c26pj0hauksqdpqv4u8getjdeskchmyv4ekxunfwp6xjmmwxqyjw5qcqp2rzjqw3qcrp2u3ggke56wrjlstcg76drmfw680cvjum88sl7ja7mpas7xzxz8sqqfecqqyqqqqlgqqqqqqgqjqn8e3ml733dkms2txxldnuwsllwhhkldss73268hdka3e7f083vjhjqurwqrndqd2rcd85pw7vkywnr4dq7yfd59r0g2mw4wzztwr6dcprxzej6"
}
Saame "arve" spetsiifikatsiooni selles osas, mis on maksete formaat Bitcoin'i (ja Litecoin'i, muide, samuti). See on string, mis sisaldab teavet saaja, tehingu summa, taotlemise kehtivuse aja jne, ĂŒksikasjalikku teavet saab saada, kĂ€ivitades decodepay selle stringi suhtes:
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"
}
Selleks, et sellist "arvet" maksta, on meil vajalik c-lightning'i pay funktsioon:
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 tehingute olekuid töötleb kogu vĂ”rk ja teie oma node eraldi. Maksete oleku kohta teabe saamiseks pole vajalik (kuigi see on vĂ”imalik) suhelda rakenduse vastuvĂ”tjate autoritega vĂ”i nende API-dega. Maksete staatuse kontrollimiseks ei ole vaja protsessi vahendava sĂŒsteemiga suhelda. Teie tehingu heakskiitu pangalt vĂ”i riigiasutuselt ei ole vaja oodata. LĂ”ppude lĂ”puks ei ole siin chargeback'e ega muid vĂ€liseid tegureid, mis vĂ”ivad teie konto saldo mĂ”jutada. See on lahendus, mis vĂ”imaldab vÀÀrtuse edastamist Interneti kaudu, ilma et oleks vajalik vĂ€line vahekohtunik, kes otsustab, kas tehing vastab reeglitele (mĂ”nikord isegi sisemistele reeglitele, millest kĂ”ik osalejad ei pruugi ette teada) vĂ”i mitte. Bitcoinis ei ole "sisemisi reegleid". Ainsad reeglid, millele tuleb jĂ€rgida, on vĂ”rgu - avalikud ja kĂ”igile tuntud reeglid.
See teeb kÔigeks vÔimalikuks otse, peaaegu tasuta ja kohesed rahatransaktsioonid inimeste vÔi programmide vahel tÀielikult iseseisvalt.
Kui teil on vĂ”imalus saada makseandmeid kolmandalt rakenduselt, siis vĂ”ite finantsiliselt suhelda selle rakendusega. NĂ€iteks vĂ”ib tuua teenuse lnsms.world, mis vĂ”imaldab saata SMS-sĂ”numeid juhuslikule numbrile, makstes selle eest bitcoine. Selle rakenduse integreerimiseks peame lihtsalt edastama andmed veebivormist otse SMS-i saatmiseni â emuleerides kasutaja tegevusi 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, miks, kuid lnsms vastab HTTP staatuse koodiga 201 ja tagastab BOLT11 formaadis arve. Mis iganes, sellest piisab, et boti kasutajad saaksid tasuda SMS-i saatmise eest oma tĆĄĂ€tiruumides teenitud sissemaksetega. Kasutaja ei tea isegi, mis seal toimub, ta lihtsalt maksab paar senti SMS-i saatmise eest. Ja mina, kui arendaja, ei sĂŒvenenud SMS-teenuste töö ĂŒksikasjadesse. Lihtsalt edastasin makse ja sain teenuse. VĂ”in kehtestada lisatasu vĂ”i mitte â see on minu vabatahtlik valik. Ăkski konto, leping ega jĂ€rjekordne API tĂŒhiste ĂŒlesannete jaoks, nagu SMS-i saatmine.
NĂŒĂŒd kujutame hetkeks ette, et meie rakendus on midagi enamat kui vestlusbot ja teeb makse mitte teisele botile, vaid teisele rakendusele vĂ”i seadmele, mis on ĂŒhendatud Internetiga. VĂ”i see on kĂŒmmekond vĂ”i isegi sadu tillukesi makseid iga sekundi jooksul seadmete, teenuste, kaupluste vĂ”i mĂ”nede teenusepakkujatega. Just selleks on mikromaksed, nii peaks Internet asjade maailmas vĂ€lja nĂ€gema. Juba on olemas projekte nagu , mis tĂ”lgivad neid ideid ellu ja peagi nĂ€eme suuri, minu arvates, muutusi valdkonnas, mida me praegu nimetame elektrooniliseks kaubanduseks.
Kui teile meeldis postitus ja soovite nĂ€ha bitcoine tegudes â .
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Kas teie jaoks on huvitavad puhttehnilised artiklid bitcoini ja sellega seotud tarkvara kohta?
Jah
Ei
Mind huvitavad rohkem krĂŒptovaluutade turu aspektid.
HÀÀletas 8 kasutajat. Hoidus Àra 4 kasutajat.
Allikas: habr.com
