Við höldum áfram röð okkar um Monero blockchain og greinin í dag mun fjalla um RingCT (Ring Confidential Transactions) siðareglur, sem kynnir trúnaðarviðskipti og nýjar hringaundirskriftir. Því miður eru litlar upplýsingar á netinu um hvernig það virkar og við reyndum að fylla í þetta skarð.
Við munum tala um hvernig netið felur flutningsupphæðir með því að nota þessa samskiptareglu, hvers vegna þeir yfirgáfu klassíska dulritunarhringaundirskriftina og hvernig þessi tækni mun þróast frekar.
Þar sem þessi siðareglur er ein flóknasta tæknin í Monero, mun lesandinn þurfa grunnþekkingu á hönnun þessarar blockchain og yfirgripsmikla þekkingu á dulmáli með sporöskjulaga feril (til að endurskoða þessa þekkingu geturðu lesið fyrstu kaflana okkar fyrri grein um
RingCT samskiptareglur
Ein af mögulegum árásum á cryptonote gjaldmiðla er blockchain greining byggð á þekkingu á magni og tíma sendra viðskipta. Þetta leyfir
Það er athyglisvert að hugmyndin um að fela upphæðir er ekki ný. Bitcoin Core verktaki Greg Maxwell var einn af þeim fyrstu til að lýsa því í sínu
Meðal annars hjálpar samskiptareglan að losna við vandamál með blöndun rykúttaks - framleiðsla af litlu magni (venjulega móttekin í formi breytinga frá viðskiptum), sem skapaði fleiri vandamál en þau voru þess virði.
Í janúar 2017 átti sér stað harður gaffli á Monero netinu, sem leyfði valfrjálsu notkun trúnaðarviðskipta. Og þegar í september sama ár, með útgáfu 6 harða gafflinum, urðu slík viðskipti þau einu sem voru leyfð á netinu.
RingCT notar nokkra aðferðir í einu: marglaga tengdar sjálfkrafa nafnlausar hópundirskriftir (Multilayered Linkable Spontaneous Anonymous Group Signature, hér eftir nefnt MLSAG), skuldbindingarkerfi (Pedersen Commitments) og sviðssönnun (þetta hugtak hefur ekki staðfesta þýðingu á rússnesku) .
RingCT siðareglur kynna tvær tegundir af nafnlausum viðskiptum: einföld og full. Veskið myndar það fyrsta þegar viðskipti nota fleiri en eitt inntak, annað - í öfugum aðstæðum. Þeir eru mismunandi í löggildingu viðskiptaupphæða og gögnin sem eru undirrituð með MLSAG undirskrift (við munum tala meira um þetta hér að neðan). Þar að auki er hægt að búa til viðskipti af gerðinni full með hvaða fjölda inntaka sem er, það er enginn grundvallarmunur. Í bókinni
MLSAG undirskrift
Við skulum muna hvað undirrituð færsluinntak eru. Hver viðskipti eyða og búa til nokkurt fé. Fjármunamyndun á sér stað með því að búa til viðskiptaúttak (bein hliðstæða er víxlar), og framleiðslan sem viðskiptin eyða (eftir allt saman, í raunveruleikanum eyðum við seðlum) verður inntakið (farið varlega, það er mjög auðvelt að ruglast á hér).
Inntak vísar til margra úttaka, en eyðir aðeins einni og skapar þannig „reykskjá“ til að gera það erfitt að greina þýðingarsöguna. Ef færsla hefur fleiri en eitt inntak, þá er hægt að tákna slíka uppbyggingu sem fylki, þar sem línurnar eru inntak og dálkarnir eru blandað úttak. Til að sanna fyrir netkerfinu að viðskiptin eyði nákvæmlega úttakum sínum (þekki leynilyklana þeirra), eru inntakin undirrituð með hringaundirskrift. Slík undirskrift tryggir að undirritaður þekkti leynilyklana fyrir alla þætti einhverra dálka.
Trúnaðarviðskipti nota ekki lengur klassískar
Þeir eru kallaðir marglaga vegna þess að þeir undirrita nokkur inntak í einu, sem hvert um sig er blandað saman við nokkra aðra, þ.e. fylki er undirritað, en ekki ein röð. Eins og við munum sjá síðar hjálpar þetta að spara á undirskriftarstærð.
Við skulum skoða hvernig hringaundirskrift myndast, með því að nota dæmi um viðskipti sem eyða 2 raunverulegum útleiðum og nota m - 1 tilviljunarkenndar frá blockchain til að blanda. Við skulum tákna opinbera lykla úttakanna sem við eyðum sem
, og lykilmyndir fyrir þær í samræmi við það: Þannig fáum við stærðarfylki 2 x m. Í fyrsta lagi þurfum við að reikna út svokallaðar áskoranir fyrir hvert par af framleiðendum:
Við byrjum útreikningana með úttakunum sem við eyðum með því að nota almenningslyklana þeirra:og handahófskenndar tölurFyrir vikið fáum við eftirfarandi gildi:
, sem við notum til að reikna út áskorun
næsta úttakspar (til að gera það auðveldara að skilja hvað við erum að skipta út hvar, höfum við auðkennt þessi gildi í mismunandi litum). Öll eftirfarandi gildi eru reiknuð í hring með því að nota formúlurnar sem gefnar eru upp í fyrstu myndinni. Það síðasta sem þarf að reikna er áskorunin fyrir par af raunverulegum framleiðendum.
Eins og við sjáum nota allir dálkar nema sá sem inniheldur raunúttak af handahófi mynduðum tölum. Fyrir π- dálkur við munum líka þurfa þá. Við skulum umbreytaí s:
Undirskriftin sjálf er samsafn af öllum þessum gildum:
Þessi gögn eru síðan skrifuð inn í færslu.
Eins og við sjáum inniheldur MLSAG aðeins eina áskorun c0, sem gerir þér kleift að spara á undirskriftarstærð (sem krefst nú þegar mikið pláss). Ennfremur, hvaða skoðunarmaður sem er, sem notar gögnin, endurheimtir gildin c1,…, cm og athugar það. Þannig er hringnum okkar lokað og undirskriftin hefur verið staðfest.
Fyrir RingCT viðskipti af fullri gerð er einni línu í viðbót bætt við fylkið með blönduðum útgangi, en við munum tala um þetta hér að neðan.
Pedersen skuldbindingar
Monero skuldbindingar eru notaðar til að fela fjárhæðir millifærslna og nota algengasta kostinn - Pedersen skuldbindingar. Við the vegur, áhugaverð staðreynd - í fyrstu lögðu verktaki til að fela upphæðirnar með venjulegri blöndun, það er að bæta við framleiðslu fyrir handahófskenndar upphæðir til að koma á óvissu, en síðan skiptu þeir yfir í skuldbindingar (það er ekki staðreynd að þeir sparaðu á viðskiptastærð, eins og við munum sjá hér að neðan).
Almennt séð lítur skuldbinding svona út:
Hvar C - merking skuldbindingarinnar sjálfrar, a - falið magn, H er fastur punktur á sporöskjulaga ferlinum (viðbótarrafall), og x — einhvers konar handahófskennd gríma, feluþáttur sem myndast af handahófi. Hér þarf grímuna svo þriðji aðili geti ekki bara giskað á gildi skuldbindingar.
Þegar ný framleiðsla er mynduð reiknar veskið skuldbindingu fyrir það og þegar það er eytt tekur það annað hvort verðmætið sem reiknað var út við framleiðslu eða endurreikna það, allt eftir tegund viðskipta.
RingCT einfalt
Þegar um er að ræða einföld RingCT-viðskipti, til þess að tryggja að viðskiptin hafi skapað framleiðsla í magni sem jafngildir magni aðfönga (framleiddu ekki peninga úr lausu lofti), er nauðsynlegt að summa skuldbindinga fyrsta og annars. þær vera eins, það er:
Skuldbindingarnefndir líta á þetta aðeins öðruvísi - án grímu:
hvar a — upphæð þóknunar, hún er aðgengileg almenningi.
Þessi nálgun gerir okkur kleift að sanna fyrir treysta aðilanum að við séum að nota sömu upphæðir án þess að gefa upp þær.
Til að gera hlutina skýrari skulum við skoða dæmi. Segjum að færslu eyðir tveimur úttakum (sem þýðir að þeir verða inntak) af 10 og 5 XMR og myndar þrjú úttak að verðmæti 12 XMR: 3, 4 og 5 XMR. Á sama tíma greiðir hann þóknun upp á 3 XMR. Þannig er upphæðin sem eytt er ásamt upphæðinni sem myndast og þóknunin jöfn 15 XMR. Við skulum reyna að reikna út skuldbindingar og skoða muninn á fjárhæðum þeirra (mundu stærðfræðina):
Hér sjáum við að til að jöfnan nái saman, þurfum við að summan af inntaks- og úttaksgrímunum séu þær sömu. Til að gera þetta myndar veskið af handahófi x1, y1, y2 og y3, og það sem eftir er x2 reiknar svona:
Með því að nota þessar grímur getum við sannað fyrir hverjum sannprófanda að við búum ekki til meira fjármagn en við eyðum, án þess að gefa upp upphæðina. Upprunalega, ekki satt?
RingCT fullt
Í fullum RingCT-viðskiptum er aðeins flóknara að athuga millifærsluupphæðirnar. Í þessum viðskiptum endurreiknar veskið ekki skuldbindingar fyrir aðföng heldur notar þær sem reiknaðar voru þegar þær voru búnar til. Í þessu tilfelli verðum við að gera ráð fyrir að við fáum ekki lengur mismun á summunum sem eru núll, heldur:
Hér z — munur á inntaks- og úttaksgrímum. Ef við athugum zG sem opinber lykill (sem hann er í raun), þá z er einkalykillinn. Þannig þekkjum við almenna og samsvarandi einkalykla. Með þessi gögn í höndunum getum við notað þau í MLSAG hringaundirskriftinni ásamt opinberum lyklum úttakanna sem verið er að blanda saman:
Þannig mun gild hringaundirskrift tryggja að við þekkjum alla einkalykla eins dálksins og við getum aðeins vitað einkalykilinn í síðustu röð ef viðskiptin skila ekki meira fé en það eyðir. Við the vegur, hér er svarið við spurningunni „af hverju leiðir munurinn á fjárhæðum skuldbindinga ekki til núlls“ - ef zG = 0, þá munum við stækka dálkinn með raunverulegum framleiðendum.
Hvernig veit viðtakandi fjárins hversu mikið fé var sent til hans? Hér er allt einfalt - sendandi færslunnar og viðtakandinn skiptast á lyklum með Diffie-Hellman samskiptareglum, með því að nota færslulykilinn og útsýnislykil viðtakandans og reikna út sameiginlegt leyndarmál. Sendandi skrifar gögn um úttaksupphæðir, dulkóðaðar með þessum sameiginlega lykli, í sérstökum sviðum færslunnar.
Sönnun fyrir sviðum
Hvað gerist ef þú notar neikvæða tölu sem upphæð í skuldbindingum? Þetta gæti leitt til þess að auka mynt! Þessi niðurstaða er óviðunandi, svo við þurfum að tryggja að upphæðirnar sem við notum séu ekki neikvæðar (án þess að gefa upp þessar upphæðir, auðvitað, annars er svo mikil vinna og allt til einskis). Með öðrum orðum, við verðum að sanna að summan sé í bilinu [0, 2n - 1].
Til að gera þetta er summu hvers úttaks skipt í tvöfalda tölustafi og skuldbindingin reiknuð fyrir hvern tölustaf fyrir sig. Það er betra að sjá hvernig þetta gerist með dæmi.
Gerum ráð fyrir að magnið okkar sé lítið og passi í 4 bita (í reynd eru þetta 64 bitar), og við búum til úttak sem er virði 5 XMR. Við reiknum út skuldbindingar fyrir hvern flokk og heildarskuldbindingu fyrir alla upphæðina:
Næst er hverri skuldbindingu blandað saman við staðgengill (Ci-2iH) og er undirritaður í pörum með Borromeo hring undirskriftinni (önnur hringur undirskrift), sem Greg Maxwell lagði til árið 2015 (þú getur lesið meira um það
Samanlagt er þetta kallað sviðssönnun og gerir þér kleift að tryggja að skuldbindingar noti upphæðir á bilinu [0, 2n - 1].
Hvað er næst?
Í núverandi útfærslu taka sviðsprófanir mikið pláss - 6176 bæti á hverja úttak. Þetta leiðir til stærri viðskipta og því hærri gjalda. Til að minnka umfang Monero-viðskipta eru verktaki að kynna skotheld í stað Borromeo undirskrifta - sviðssönnunarkerfi án bitalegra skuldbindinga.
Spyrðu spurninga þinna, stingdu upp á efni fyrir nýjar greinar um tækni á sviði dulritunargjaldmiðils og gerðu áskrifandi að hópnum okkar í
Heimild: www.habr.com