Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек

Биз Monero блокчейнине байланыштуу сериябызды улантып жатабыз жана бүгүнкү макалада RingCT (Ring Confidential Transactions) протоколуна көңүл бурулат, анда жашыруун транзакциялар жана жаңы шакек кол тамгалары киргизилет. Тилекке каршы, интернетте анын кантип иштегени тууралуу маалымат аз, биз бул боштукту толтурууга аракет кылдык.

Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек

Тармак бул протоколду колдонуу менен которуунун суммасын кантип жашырганы, эмне үчүн классикалык криптонот шакек кол тамгаларынан баш тартканы жана бул технология мындан ары кандайча өнүгүп жаткандыгы жөнүндө сүйлөшөбүз.

Бул протокол Монеродогу эң татаал технологиялардын бири болгондуктан, окурманга бул блокчейндин дизайны боюнча негизги билим жана эллиптикалык ийри криптография боюнча өтүүчү билим керек болот (бул билимди толуктоо үчүн, биздин биринчи бөлүмдөрдү окуй аласыз. жөнүндө мурунку макала көп кол тамгалар).

RingCT протоколу

Криптоноттук валюталарга мүмкүн болгон чабуулдардын бири жөнөтүлгөн транзакциянын суммасын жана убактысын билүүнүн негизинде блокчейн талдоо болуп саналат. Бул мүмкүндүк берет кол салуучунун кызыгуусун туудурган чыгуулар үчүн издөө аймагын олуттуу түрдө тарытуу. Мындай талдоодон коргоо үчүн, Монеро тармактагы которуулардын суммаларын толугу менен жашырган анонимдүү транзакция протоколун ишке ашырды.

Бул суммаларды жашыруу идеясы жаңы эмес экенин белгилей кетүү керек. Bitcoin Core иштеп чыгуучусу Грег Максвелл аны биринчилерден болуп сүрөттөгөн макала Жашыруун транзакциялар. RingCTтин учурдагы ишке ашырылышы анын шакекче кол тамгаларын (аларсыз болобу) колдонуу мүмкүнчүлүгү менен модификациясы болуп саналат, ошондуктан ал өзүнүн аталышын алган - Ring Confidential Transactions.

Башка нерселер менен катар, протокол чаңды аралаштыруу көйгөйлөрүнөн арылууга жардам берет - аз көлөмдөгү натыйжалар (көбүнчө транзакциялардан өзгөртүү түрүндө кабыл алынат), бул алардан да көп көйгөйлөрдү жараткан.

2017-жылдын январында Monero тармагынын катуу айрысы ишке ашып, жашыруун транзакцияларды кошумча колдонууга мүмкүндүк берди. Ал эми ошол эле жылдын сентябрында, версия 6 hard fork менен, мындай транзакциялар тармакта уруксат берилген жалгыз транзакциялар болуп калды.

RingCT бир эле учурда бир нече механизмдерди колдонот: көп катмарлуу байланышкан стихиялуу анонимдүү топ кол тамгалары (Multilayered Linkable Spontaneous Anonymous Group Signature, мындан ары MLSAG деп аталат), милдеттенме схемасы (Pedersen Commitments) жана диапазондун далилдери (бул терминдин орус тилине белгиленген котормосу жок) .

RingCT протоколу анонимдүү транзакциялардын эки түрүн киргизет: жөнөкөй жана толук. Капчык биринчисин бүтүм бирден ашык киргизүүнү колдонгондо, экинчисин - карама-каршы жагдайда жаратат. Алар транзакциянын суммасын текшерүүдө жана MLSAG кол тамгасы менен кол коюлган маалыматтарда айырмаланат (бул тууралуу төмөндө кененирээк сүйлөшөбүз). Мындан тышкары, толук түрдөгү транзакциялар каалаган сандагы киргизүү менен түзүлүшү мүмкүн, эч кандай принципиалдуу айырма жок. Китепте "Монерого нөл" Буга байланыштуу толук транзакцияларды бир киргизүүгө чектөө чечими шашылыш түрдө кабыл алынганы жана келечекте өзгөрүшү мүмкүн экендиги айтылууда.

MLSAG кол коюу

Келгиле, кол коюлган транзакциялар эмне экенин эстеп көрөлү. Ар бир транзакция жумшайт жана кандайдыр бир каражаттарды жаратат. Акча каражаттарын генерациялоо транзакциянын натыйжаларын түзүү жолу менен ишке ашат (түз окшоштук - бул векселдер), ал эми транзакциянын сарпталган чыгашасы (анткени реалдуу жашоодо биз банкнотторду сарптайбыз) киришке айланат (сак болуңуз, чаташтыруу оңой. бул жерде).

Киргизүү бир нече жыйынтыкка шилтеме кылат, бирок бир гана коротот, ошондуктан котормо тарыхын талдоону кыйындатуу үчүн "түтүн экранын" түзөт. Эгерде транзакция бирден ашык киргизүүгө ээ болсо, анда мындай структура матрица катары көрсөтүлүшү мүмкүн, мында саптар кириш, мамычалар аралаш жыйынтыктар болуп саналат. Тармакка транзакциянын натыйжаларын так сарптаарын далилдөө үчүн (алардын жашыруун ачкычтарын билет) кириш шакекче кол тамгасы менен кол коюлат. Мындай кол тамга кол коюучу каалаган мамычанын бардык элементтеринин жашыруун ачкычтарын билгендигине кепилдик берет.

Жашыруун транзакциялар мындан ары классикалык транзакцияларды колдонбойт криптонот шакек кол тамгалар, алар MLSAG менен алмаштырылган - бир нече киргизүү үчүн ылайыкташтырылган окшош бир катмарлуу шакек кол тамгалардын версиясы, LSAG.

Алар көп катмарлуу деп аталат, анткени алар бир эле учурда бир нече киргизүүгө кол коюшат, алардын ар бири бир нече башка менен аралаштырылат, б.а. бир катар эмес, матрицага кол коюлган. Кийинчерээк көрөбүз, бул кол тамга өлчөмүн үнөмдөөгө жардам берет.

Келгиле, 2 реалдуу жыйынтыктарды сарптаган жана аралаштыруу үчүн блокчейнден m - 1 кокустуктарды колдонгон транзакциянын мисалын колдонуп, шакекче кол тамга кантип түзүлөөрүн карап көрөлү. Биз сарптаган жыйынтыктардын ачык ачкычтарын белгилейли
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек, жана алар үчүн негизги сүрөттөр: Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек Ошентип, биз өлчөмдөгү матрицаны алабыз 2 х м. Биринчиден, биз жыйынтыктардын ар бир жуп үчүн деп аталган кыйынчылыктарды эсептөө керек:
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек
Эсептөөлөрдү алардын ачык ачкычтарын колдонуу менен сарптаган жыйынтыктардан баштайбыз:Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керекжана кокус сандарМонеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керекНатыйжада, биз төмөнкү баалуулуктарды алабыз:
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек, аны биз чакырыктарды эсептөө үчүн колдонобуз
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керекнатыйжалардын кийинки жуптары (кайда эмнени алмаштырып жатканыбызды түшүнүүнү жеңилдетүү үчүн, биз бул баалуулуктарды ар кандай түстөр менен бөлүп көрсөттүк). Бардык төмөнкү маанилер биринчи сүрөттө берилген формулаларды колдонуу менен тегерек боюнча эсептелет. Эсептөө үчүн эң акыркы нерсе - бул реалдуу жыйынтыктардын жуптары үчүн кыйынчылык.

Көрүнүп тургандай, реалдуу жыйынтыктарды камтыгандан башка бардык мамычалар кокусунан түзүлгөн сандарды колдонушатМонеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек... For π- колонна бизге да керек болот. Келгиле, өзгөртөлүМонеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керекс менен:Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек
Кол коюунун өзү бул баалуулуктардын жыйындысы:

Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек

Бул маалыматтар андан кийин транзакцияга жазылат.

Көрүнүп тургандай, MLSAG бир гана чакырыкты камтыйт c0, бул кол тамга өлчөмүн сактоого мүмкүндүк берет (ал буга чейин эле көп орун талап кылат). Андан ары, маалыматтарды пайдалануу менен ар кандай инспекторМонеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек, c1,…, cm маанилерин калыбына келтирет жана муну текшеретМонеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек. Ошентип, биздин шакек жабылып, колубуз текшерилди.

Толук түрдөгү RingCT транзакциялары үчүн аралаш натыйжалары бар матрицага дагы бир сызык кошулат, бирок биз бул тууралуу төмөндө сүйлөшөбүз.

Педерсен милдеттенмелери

Милдеттенме схемалары (англисче commitments термини көбүрөөк колдонулат) бир тарап белгилүү бир сырды (санды) ачыкка чыгарбай эле биле тургандыгын далилдей алышы үчүн колдонулат. Мисалы, сиз белгилүү бир санды сөөккө ыргытасыз, милдеттенмени карап, аны текшерүүчү тарапка өткөрүп бересиз. Ошентип, жашыруун номерди ачып жаткан учурда, текшерүүчү өз алдынча милдеттенмени эсептеп чыгат, ошону менен сиз аны алдабаганыңызга ынанат.

Монеро милдеттенмелери которуулардын суммаларын жашыруу жана эң кеңири таралган вариантты колдонуу үчүн колдонулат - Педерсен милдеттенмелери. Баса, кызыктуу факт - алгач иштеп чыгуучулар суммаларды кадимки аралаштыруу жолу менен жашырууну, башкача айтканда, белгисиздикти киргизүү үчүн ыктыярдуу суммаларга жыйынтыктарды кошууну сунуш кылышкан, бирок кийин алар милдеттенмелерге өтүшкөн (алар үнөмдөгөн факты эмес. транзакциянын өлчөмү, биз төмөндө көрөбүз).
Жалпысынан алганда, милдеттенме төмөнкүдөй көрүнөт:
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү кереккайда C - милдеттенменин мааниси, a - жашыруун сумма, H эллиптикалык ийри сызыктагы туруктуу чекит (кошумча генератор), жана x — кандайдыр бир ыктыярдуу маска, кокусунан пайда болгон жашыруу фактору. Маска бул жерде үчүнчү тарап милдеттенменин маанисин жөн эле боолгобошу үчүн керек.

Жаңы өндүрүш пайда болгондо, капчык ал үчүн милдеттенмени эсептейт, ал эми сарпталганда, ал генерация учурунда эсептелген маанини алат же транзакциянын түрүнө жараша аны кайра эсептейт.

RingCT жөнөкөй

Жөнөкөй RingCT транзакцияларында, транзакциядан түшкөн каражаттардын көлөмүнө барабар натыйжаларды түзүшүн камсыз кылуу үчүн (абадан акча өндүрүлгөн эмес), биринчи жана экинчи милдеттенмелердин суммасы бирдей болушу керек. ошол эле, башкача айтканда:
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек
Милдеттенме комиссиялары аны бир аз башкача карашат - маскасыз:
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү кереккайда a — комиссиянын суммасы, ал жалпыга маалым.

Бул ыкма бизге таянган тарапка ошол эле суммаларды ачыкка чыгарбастан эле колдонуп жатканыбызды далилдөөгө мүмкүндүк берет.

Түшүнүктүү болушу үчүн, бир мисал карап көрөлү. Келгиле, транзакция 10 жана 5 XMR болгон эки жыйынтыкты (алар кириш болуп калат дегенди билдирет) жумшайт дейли жана 12 XMR: 3, 4 жана 5 XMR болгон үч натыйжаны жаратат. Ошол эле учурда, ал 3 XMR комиссия төлөйт. Ошентип, жумшалган акча плюс түзүлгөн суммасы жана комиссия 15 XMR барабар. Келгиле, милдеттенмелерди эсептеп, алардын суммаларындагы айырманы карап көрөлү (матеманы эстеп):

Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек
Бул жерде биз теңдеме жакындаш үчүн кириш жана чыгаруу маскаларынын суммасы бирдей болушу керек экенин көрөбүз. Бул үчүн, капчык туш келди жаратат x1, y1, y2 жана y3, жана калган x2 мындайча эсептейт:
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек
Бул маскаларды колдонуу менен биз каалаган текшерүүчүгө биз короткондон ашык каражат жаратпай турганыбызды далилдей алабыз. Оригиналдуу, туурабы?

RingCT толук

Толук RingCT транзакцияларында которуунун суммасын текшерүү бир аз татаалыраак. Бул транзакцияларда капчык киргизүүлөр боюнча милдеттенмелерди кайра эсептебейт, бирок алар түзүлгөндө эсептелгендерди колдонот. Бул учурда, биз мындан ары нөлгө барабар суммалардагы айырманы албайбыз деп ойлошубуз керек, бирок анын ордуна:
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек
бул z — киргизүү жана чыгаруу маскаларынын ортосундагы айырма. эске алсак zG ачык ачкыч катары (бул де-факто), анда z купуя ачкычы болуп саналат. Ошентип, биз ачык жана тиешелүү купуя ачкычтарды билебиз. Колубуздагы бул маалыматтар менен биз аны MLSAG шакек кол тамгасында жана аралаштырылып жаткан жыйынтыктардын ачык ачкычтары менен колдоно алабыз:
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек
Ошентип, жарактуу шакек колтамгасы мамычалардын биринин бардык купуя ачкычтарын билишибизди камсыздайт жана транзакция сарптагандан көп каражатты жаратпаса, акыркы саптагы купуя ачкычты гана биле алабыз. Баса, бул жерде "эмне үчүн милдеттенмелердин суммаларындагы айырма нөлгө алып келбейт" деген суроого жооп - эгерде zG = 0, анда биз тилкени реалдуу жыйынтыктар менен кеңейтебиз.

Каражаттарды алуучу ага канча акча жөнөтүлгөнүн кайдан билет? Бул жерде баары жөнөкөй - транзакциянын жөнөтүүчүсү жана Diffie-Hellman протоколунун жардамы менен алуучу алмашуу ачкычтары, транзакция ачкычын жана алуучунун көрүү ачкычын колдонуп, бөлүшүлгөн сырды эсептейт. Жөнөтүүчү транзакциянын атайын талааларына ушул жалпы ачкыч менен шифрленген чыгуу суммалары жөнүндө маалыматтарды жазат.

Диапазондун далилдери

Милдеттенмелердеги сумма катары терс санды колдонсоңуз эмне болот? Бул кошумча монеталардын пайда болушуна алып келиши мүмкүн! Бул жыйынтыкка жол берилбейт, ошондуктан биз колдонгон суммалар терс эмес экенине кепилдик беришибиз керек (албетте, бул суммаларды ачыкка чыгарбай туруп, антпесе ушунча иш жана баары бекер). Башкача айтканда, сумма интервалда экенин далилдешибиз керек [0, 2n - 1].

Бул үчүн ар бир чыгаруунун суммасы экилик санга бөлүнөт жана милдеттенме ар бир цифра үчүн өзүнчө эсептелет. Мунун кандай болорун бир мисал менен көрүү жакшы.

Келгиле, биздин суммалар кичинекей жана 4 битке туура келет деп ойлойлу (иш жүзүндө бул 64 бит), жана биз 5 XMR баасындагы чыгарууну түзөбүз. Биз ар бир категория боюнча милдеттенмелерди жана бүт сумма боюнча жалпы милдеттенмелерди эсептейбиз:Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керек
Андан ары ар бир милдеттенме бир орунда турат (Ci-2iH) жана 2015-жылы Грег Максвелл тарабынан сунушталган Borromeo шакек колтамгасы (башка шакек кол тамгасы) менен жуп болуп кол коюлган (сиз бул тууралуу көбүрөөк окуй аласыз бул жерде):
Монеродогу жашыруун транзакциялар, же белгисиз нерселерди белгисиз жактарга кантип өткөрүү керекЧогуу алганда, бул диапазондун далили деп аталат жана милдеттенмелердин диапазондогу суммаларды колдонуусун камсыз кылууга мүмкүндүк берет [0, 2n - 1].

Кийинкиси эмне?

Учурдагы ишке ашырууда диапазондун далилдери көп орунду ээлейт - чыгаруу үчүн 6176 байт. Бул чоңураак транзакцияларга алып келет, демек, жогорку төлөмдөр. Монеро транзакциясынын көлөмүн азайтуу үчүн, иштеп чыгуучулар Borromeo кол тамгаларынын ордуна ок өтпөстөрдү киргизүүдө - биттик милдеттенмелери жок диапазонун далилдөөчү механизм. Кээ бир эсептөөлөр боюнча, алар диапазондун далилинин өлчөмүн 94% га чейин кыскарта алышат. Айтмакчы, июль айынын орто ченинде технология өттү текшерүү Kudelski Security компаниясынан, ал технологиянын өзүндө да, аны ишке ашырууда да олуттуу кемчиликтерди ачкан эмес. Технология мурунтан эле тест тармагында колдонулган жана жаңы катуу айры менен, балким, негизги тармакка көчүп кетиши мүмкүн.

Суроолоруңузду бериңиз, cryptocurrency тармагындагы технологиялар жөнүндө жаңы макалалардын темаларын сунуштаңыз, ошондой эле биздин топко жазылыңыз Facebookбиздин окуялар жана басылмалар менен акыркы кабардар болуп туруу.

Source: www.habr.com

Комментарий кошуу