Въведение в поверителни трансакции
Начало
Статии
Въведение в поверителни трансакции

Въведение в поверителни трансакции

Средно ниво
Публикувано Feb 10, 2020Актуализирано Dec 28, 2022
6m

Въведение

Често прозрачността на системата се възприема критично за функционирането на блокчейн. Това означава, че всеки възел в мрежата може да съхранява копие и да проверява дали не се нарушават правилата. За много разпределени регистри всеки може да зареди онлайн блокчейн търсачка, която му позволява да търси в блокове, трансакции и адреси.

От гледна точка на поверителността това не е идеално. В система като Биткойн всяка трансакция може да бъде свързана обратно с предишна. Криптовалутите не са технически заменими, което означава, че всяка може да бъде обвързана с конкретни трансакции. Никой не може да ви попречи да изпратите биткойн, но може да откаже да приеме вашата трансакция, ако тези криптовалути преди това са преминали през адрес в черен списък.

В най-лошия сценарий липсата на заменяемост може да засегне дълбоко самите основи на системата. Чистите криптовалути могат да донесат премия, докато по-старите биха били по-малко ценни предвид тяхната история.

Поверителността в Биткойн често е надценявана. Не само криптовалутите могат да бъдат проследени, но и потребителите. Те се радват на псевдонимност (вместо имена се виждат публични адреси), но това си има своите недостатъци. Усъвършенстваните техники за анализ могат с нарастваща точност да групират адреси заедно в опит за деанонимизиране на мрежови обекти.

Едно надграждане, предложено, за да направи трансакциите наистина поверителни, е Поверителни трансакции.


Какво представляват Поверителните трансакции?

Поверителните трансакции (CT) за първи път бяха обсъдени през 2013 г. от главния изпълнителен директор на Blockstream Адам Бек и по-късно бяха разширени от разработчика на Bitcoin Грегъри Максуел. Максуел очерта проблемите, споменати в първия раздел (заменяемост и слаба псевдонимност) – и предложи решение. Преведените суми могат да бъдат защитени от по-широката мрежа, така че само страните по сделката да знаят какво количество е било изпратено.



При нормални обстоятелства (с публично видими трансакции) е лесно за възел да провери дали получената сума не надвишава изпратената сума. Ако Алис иска да изпрати 0,3 BTC на Боб, тя взема неизразходван резултат (нека го наречем 1 BTC) и го разделя на две части: 0,3 за изпращане към Боб и 0,69 за изпращане обратно към себе си (като остатъкът се губи в такса за копаене).
Това е проста алгебра за други възли: 1 надвишава 0,3 + 0,69, всички подписи са правилни и входовете на Алис вече не са изразходвани другаде, така че трансакцията трябва да е валидна. Когато обаче сумите са заличени, нещата не са толкова тривиални. Как изобщо започвате да оценявате дали една неизвестна сума е равна или надвишава сбора от две други неизвестни суми?


Преглед на включената криптография

За се скрият данни, е необходимо криптиране. Традиционните методи обаче са подобни на поставянето на документи в сейф: веднъж заключени вътре, те стават неизползваеми, докато не се извадят. За работата на Поверителни трансакции се нуждаем от цифров сейф, чието съдържание не се разкрива, но чиито свойства могат да бъдат проверявани от външен човек.

Отговорът се крие конкретно в хомоморфното криптиране, в схема, наречена ангажимент на Педерсен. Този тип криптиране позволява на външен човек да извършва операции с криптирани данни (които остават невидими) за редица цели. 

Може да се използва обикновен хеш, за да се ангажират с данни, които искате да разкриете по-късно. Да предположим, че искате да обявите конкурс в социалните медии, където всеки, който познае любимата ви борса, ще спечели награда от 0,01 BTC. Участниците може да са скептични, защото бихте могли просто да разгледате отговорите след края на състезанието и да изберете борса, който не е била спомената.

Това, което бихте могли да направите, е да предоставите на последователите си хеш: низ от привидно произволни числа и знаци, които се съпоставят с конкретен вход. Вие предавате своята борса през функция, за да получите определен резултат. Ще илюстрираме с алгоритъма SHA256:


f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191


Като гледате това, нямате представа какъв е входът. Нито можете да обърнете функцията, за да го получите. Ако знаете, че входът е бил „Binance“, можете лесно да проверите дали неговият хеш съвпада с представения по-горе. По този начин вашите последователи имат известна увереност, че няма да промените отговора си в края на състезанието – това ще доведе до напълно различен резултат.

Реално погледнато обаче това не е много сигурно. Въпреки че вашите последователи не могат да проследят алгоритъма, те могат да изградят списък с възможни борси, като хешират всяка една, докато не получат съвпадение. Можем да намалим вероятността от това, като добавим някои произволни данни, наречени заличаващ фактор, към данните, които ще хешираме. 

Ако въведем „Binance е моята любима борса, обичам я повече от всяка друга борса 2#43Wr“, става значително по-трудно за опонента да отгатне (а за 0,01 BTC със сигурност е малко вероятно някой дори да опита).

Ангажиментът на Педерсен ни позволява да добавим входове зад ангажиментите. Както Максуел илюстрира:



C(BF1 + D1) + C(BF2 + D2) = C(BF1 + BF2, D1 + D2)

Където BF е заличаващият фактор, а D е данните


Има още няколко стъпки оттук, включващи криптография с елиптична крива и доказателства за обхват, но основната идея е, че потребителят има ангажимент на Педерсен за своя адрес. При изпращане на средства се създават два допълнителни ангажимента (един за смяната на адреса, който трябва да бъде върнат на потребителя, и един за адреса на местоназначението). 

Никой не знае колко се изпраща, но те могат да проверят дали ангажиментите за промяна и местоназначение (лявата страна на уравнението на Максуел) съвпадат с изходния адрес (дясната страна на уравнението). Ако това се оценява правилно, то трансакцията на потребителя е валидна, тъй като може да се докаже, че входовете са равни на резултатите.


Какво могат да постигнат Поверителните трансакции?

Ако поверителните трансакции трябваше да бъдат внедрени в Биткойн, бихме се радвали на много по-поверителна система. Както входовете, така и изходите ще бъдат маскирани от по-широката мрежа, а записите в регистъра ще бъдат замъглени - но възлите все още могат да проверяват тяхната автентичност. С това огромно повишаване на поверителността биткойните могат ефективно да бъдат превърнати в заменяеми, тъй като анализът на веригата вече не разкрива историята на дадена единица. 

Що се отнася до това дали поверителни трансакции ще бъдат интегрирани в протокола, в момента не изглежда вероятно. С тази добавена функционалност трансакциите са много по-големи от стандартните – като се има предвид ограниченото блоково пространство, това само би увеличило търсенето. Също така би изисквало мнозинството от участниците да се съгласят да променят кода, задача, която традиционно се оказа трудна.


Заключителни мисли

Поверителните трансакции са наблюдавали някои итерации в други криптовалути и странични вериги на Биткойн. Например, Monero ги използва в комбинация с конструкции, наречени пръстеновидни подписи, за да постигне анонимност и заменяемост. Страничната верига Liquid ги прилага за по-голяма поверителност, а MimbleWimble ги разширява до същите цели.

За ползите, които носят, поверителните трансакции идват с компромис от по-голям отпечатък. Криптовалутите често се борят с мащабируемостта и пропускателната способност в основния слой, а по-големите размери на трансакциите не са подходящи за всички. Въпреки това защитниците на поверителността смятат, че е от съществено значение да се скрият сумите на трансакциите и участниците наистина да позволят на криптовалутата да служи като заменяеми пари.