Home » Големият ъпгрейд на Taproot: митове и истини

Големият ъпгрейд на Taproot: митове и истини

by Thomas

През миналата седмица беше активиран Taproot – един от най-важните ъпгрейди в историята на биткойн. Но това, което всъщност прави, е трудно за разбиране и нерядко се представя погрешно. Затова се обърнахме към експерт.

Миналата седмица беше активиран Taproot – един от най-големите ъпгрейди на биткойн за всички времена, който общността очакваше с нетърпение от години. Но какво точно представлява Taproot? И какво прави?

Всеки, който чете новините за Taproot с този въпрос, ще получи доста объркване. Затова тази статия започва с малък преглед на това, което пишат другите.

Когато пресслужбите вече съобщават за ъпгрейд на биткойн…

Една от най-забележителните характеристики на Taproot е, че това е първият ъпгрейд на биткойн, който е бил интересен за прес агенцията DPA. Това обяснява защо внезапно можете да намерите информация за Taproot в почти всички медии – от Süddeutsche и FAZ до Wiener Standard и малкия градски вестник. Или по-скоро: дезинформация.

Taproot, обяснява Finanzen.net, има „далечно значение за блокчейна на биткойн“. Обновлението прави Bitcoin „още по-гъвкав и гъвкав“ и проправя „пътя за важни технологични иновации“. FAZ и много други вестници цитират доклада на DPA, според който модернизацията носи „повече поверителност, по-малко изисквания за съхранение и намаляващи разходи“.

Всичко това остава толкова неясно, че не може да бъде нито погрешно, нито правилно. Ако човек иска да знае по-конкретно, той научава по-скоро по-малко, а ако е така, то с удоволствие греши или е подвеждащ. В сайта Finanzen.net например се казва, че Taproot „генерира само един публичен ключ за плащанията вместо няколко публични ключа […]“, което освен объркването на термините в най-добрия случай е само наполовина вярно. Освен това Taproot дава възможност за „по-сложни интелигентни договори в блокчейна на Bitcoin“, поради което Bitcoin вероятно скоро ще може да се конкурира с Ethereum.

Във FAZ научаваме, че подписите на Шнорр „осигуряват повече поверителност за Bitcoin“. Вестникът и DPA поискаха изявление по този въпрос от професора по блокчейн Филип Санднер, който изтъкна, че „тези трансакции на Шнор … освобождават пакет от трансакции с един подпис“. Понякога дори професорът може да сгреши толкова много, че човек да не знае откъде да започне.

Най-компетентният източник на информация за Taproot е Heise. Списанието за информационни технологии обяснява, че ъпгрейдът въвежда типа транзакция „Pay-to-Taproot (P2TR)“, „който съчетава концепциите за подписи на Шнорр и „Merklized Alternative Script Trees“.“ Но дори Хайзе се затруднява, когато списанието твърди, че Taproot увеличава поверителността на транзакциите или че Schnorr ви позволява да подпишете транзакция с подпис на пострадал.

В най-добрия случай това е половинчата истина, а по-важното е, че показва колко е трудно да се разбере – и обясни – технически сложен ъпгрейд като Taproot.

Подобряване като опаковка

Опитваме се да въведем малко ред в хаоса на Taproot. За тази цел се свързахме с Марк Ерхард, известен в интернет като Мърч. Марк работи в Chaincode Labs в Ню Йорк, като преди това е работил за BitGo в Пало Алто. Трудно е да се доближите до центровете на развитие на биткойн от родния Баден.

Марк ни помогна не само да разберем по-добре концептуално Taproot, но и да разберем какво конкретно означава обновяването.

Какво променя Taproot? Какви са ползите от актуализацията?

Taproot се състои приблизително от два компонента: Подписи на Шнорр и дърво на скриптовете. Двата компонента са независими един от друг, но работят заедно и всеки от тях не е лесен за разбиране. Това е едно от препятствията пред разбирането на това какво наистина прави Taproot – и какво не прави.

Schnorr – по-добрият ECDSA

Подписите на Schnorr са най-лесни за разбиране. Марк обяснява, че тези алгоритми са съществували преди алгоритъма за подписване ECDSA, използван от Биткойн.

„Процесът на подписване е изключително интересен, но изобретателят Клаус-Петер Шнор го е патентовал. Тъй като патентната такса е твърде скъпа, други криптографи изобретяват ECDSA, за да подписват също на базата на елиптични криви. Междувременно обаче патентната защита е изтекла.“

ECDSA е добър, всъщност много добър, поради което Сатоши избра този алгоритъм за Биткойн. Но тя не е толкова добра, колкото Schnorr, и без патентната защита вероятно нямаше да има причина някой да използва ECDSA вместо Schnorr.

Най-важната разлика се крие в една малка, но отчасти решаваща подробност: „Подписите не са линейни в ECDSA, а в Schnorr“, обяснява Марк. „Ако схемата за подписване е линейна, можете да обедините множество подписи, така че обединението да ви позволи да проверите. Не можете да направите това с нелинейни схеми като ECDSA.“

Така че теоретично това, което твърдят FAZ и Heise, е вярно: чрез Schnorr може да се обединят всички подписи в дадена транзакция в един. Понастоящем, ако дадена транзакция има много входни данни – т.е. комбинира много монети – трябва да подпишете всеки вход и да запишете всеки подпис в блокчейна. Това представлява голяма част от данните за транзакциите. Шнорр всъщност може да промени това.

Може! Защото „за съжаление тази агрегация не беше включена в надстройката на Taproot“, уточнява Марк. „Това щеше да изисква допълнителни определения и обсъждания, затова те решиха да го направят по-късно.“

Подписи, които се събират тайно

Въпреки това агрегирането на подписите на Schnorr с Taproot вече е възможно. Но не за нормални транзакции, а само за многозначни транзакции. Multisig означава, че две или повече страни трябва да подпишат транзакция, за да могат да се емитират монети от специален адрес (multisig адрес).

„Да кажем, че заедно създаваме портфейл, в който можем да харчим пари само ако и двамата се подпишем. Това ще бъде „многозначна система 2 по 2″. Благодарение на Taproot можем да обединим публичните си ключове: Давате ми публичния си ключ, аз го комбинирам с моя и резултатът е неразличим от нормален адрес. Така че не можете да разберете, че това е общ портфейл.“

Тази „невъзможност да се каже“ е основната причина, поради която се твърди, че Taproot подобрява поверителността.

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

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

Но само подписите на Шнорр не са достатъчни за това. Защото те са ефективни само за прости многозначни конструкции: „2 от 2“, „3 от 3“ и т.н. В практиката обаче са по-популярни други модели, а именно така наречените прагови подписи, като например „2 от 3“: Трета страна разполага с резервен ключ и се намесва, ако другият ключ бъде изгубен, или решава спора, ако другите двама не са съгласни.

В такива модели агрегирането чрез подписи на Шнорр не работи. Затова в този момент трябва да говорим за втората част на Taproot: дървото на скриптовете.

Дърво на скриптовете за другите случаи

Бившият работодател на Марк, доставчикът на портфейли BitGo, предлага класическа конструкция „2 от 3“: има три ключа. Една от тях се държи от клиента, друга – от BitGo, а третата е добре защитено резервно копие, съхранявано на студено. От тези три ключа за изпращане на транзакция са необходими два, които обикновено са на клиента и BitGo.

„Има очакване кои два ключа ще се използват. Сега това може да се обслужва с агрегирани подписи на Шнорр. Така че ние формираме P2TR изход с ключовете от вас и от BitGo и когато настъпи нормалният случай, можем да подпишем с агрегиран подпис.“

Този начин на подписване на транзакции от две страни е най-елегантният, прост и красив. За сравнение, сегашният метод, използващ адреси „P2SH“ (pay-to-script hash), е направо чудовищно сложен.

Но какво ще стане, ако се стигне до резервен случай? Ако загубя ключа си и BitGo подпише с резервния ключ? Или ако BitGo се провали и трябва да използвам резервния ключ?

„Тези други, неочаквани пътища са вплетени като листа в дървото на скриптовете, въведено от Taproot“, обяснява Марк. И, разбира се, това обяснение плаче да бъде обяснено само по себе си.

От листата до корена

Дървото на скриптовете по същество е „просто“ дърво на Merkle или хеш дърво на скриптовете. Но какво е хеш дърво?

Дървото на хешовете е специална подредба на голям брой хешове. Например, да кажем, че имаме четири транзакции с биткойни и ги хешираме. Тогава ще имаме четири хеша. В едно хеш дърво те се наричат „листа“.

Целта на упражнението е да се премине от листата към клоните и да се стигне до корена на хеш дървото. За да направим това, първо обединяваме първия и втория хеш заедно и го хешираме. Същото правим и с третия и четвъртия. Двата хеша, които имаме в резултат на това – клоновете – също се хешират. Така получаваме корена: хеш, който означава множество хешове.

Това хеш дърво прилича на обърнато дърво: Короната е в долната част, а коренът - в горната. Снимка от wikipedia.org, лиценз: Creative Commons

Това хеш дърво прилича на обърнато дърво: Короната е в долната част, а коренът – в горната. Снимка от wikipedia.org, лиценз: Creative Commons


Какво прави такъв корен? Тя позволява с едно хешване да се доказват различни данни. Пример за това е блокът на Биткойн: миньорите вземат голямо количество транзакции – обикновено няколко хиляди – и от тях формират корена на хеш-дървото. Този корен е в основата на добива и позволява на всеки да провери дали даден блок е валиден.

В scriptbaim, въведен от Taproot, всяко „листо“ е начин за харчене на биткойни – скрипт. Гореспоменатият многозначен адрес съдържа не само съвкупността от два публични ключа, но и корена на дървото на скриптовете.

Сега, ако се случи неочакваният случай, в който се подписвам с моя и резервния ключ, защото BitGo се проваля, се случва следното, обяснява Марк: „Разкривам съответния скрипт, който се съхранява в лист на дървото на скриптовете. За да докажа, че оригиналният адрес кодира тези изходни условия, разкривам хешовете на други листа и клонове, така че коренът да може да бъде реконструиран. След това удовлетворявам съдържащия се в листа сценарий с подписите на двата ключа.“

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

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

От друга страна, при P2TR е достатъчно да напиша опцията, която действително се появява в транзакцията в обикновен текст. Всички останали опции остават забулени.

Пробивът за мултисиг

Не е необходимо да обсъждаме дали Taproot е елегантен. Така е. Дървото на скриптовете е полезно допълнение към сигнатурите на Шнорр. Разбираемо е, че разработчик като Марк е развълнуван от Taproot и няма търпение ъпгрейдът да се появи във всички портфейли.

Но тези, за които техническата елегантност не е самоцел, а средство, вероятно ще се запитат: какъв е смисълът в реални условия? И така, какво може да направи Bitcoin по-добре с Taproot, отколкото преди?

„Multisig е много по-сигурен стандарт за управление на парите“, казва Марк. „Можете да създадете резервни копия и да затрудните харченето на пари. Това ви прави по-малко уязвими.“

Досега обаче многозначните методи имаха значителни недостатъци: често бяха сложни както за потребителя, така и за разработчика, ограничаваха неприкосновеността на личния живот и струваха повече такси. Всички тези недостатъци изчезват с Taproot. „Предоставяте по-малко лична информация, разкривате по-малко за настройките си и можете да правите повече с по-малко данни в блокчейна.“

Марк се надява, че Taproot ще помогне на Multisig да пробие. Все повече портфейли ще приемат Multisig, ще има по-добри стандарти и потребителското изживяване, което в момента често е все още мизерно, ще се подобри.

Какво не прави Taproot

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

„Понякога се казва, че Taproot внася DeFi в Биткойн, защото дава възможност за интелигентни договори. Това е погрешно. Интелигентните договори вече съществуват и всичко, което Taproot може да направи, е било възможно и преди – просто е било по-сложно, по-скъпо и по-малко частно.“

Съществуват и някои погрешни схващания относно поверителността при Taproot. „Вчера прочетох в голям германски вестник, че биткойн става по-анонимен заради Taproot. Това също не е вярно. Вярно е, че вече не можете да видите дали една или повече страни подписват. Но адресът все още е псевдонимен и можете да видите кои монети се емитират. „

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

Сега е ред на екосистемата

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

Мърч се надява, че това ще стане по-бързо за Taproot. „Портфейлите на BitGo вече могат да получават монети с Taproot. Това показва, че този път може да бъде по-бързо.“

За да разберете за какво става дума и защо това не е просто, трябва да знаете още няколко технически подробности. С риск да ви затрупаме, трябва да поговорим за съответните формати на адреси.

  • Адресите по подразбиране се наричат „Pay-to-Public-Key-Hash“ (P2PKH) и започват с 1.
  • Адресите „Pay-to-Script-Hash“ (P2SH), за които вече говорихме, започват с 3. Те се използват за multisig и други интелигентни договори, като например за блокиране на времето.
  • SegWit първоначално също е изграден на адреси, които започват с 3: „Вложените адреси SegWit“ или – извинете: „Pay to Script Hash Pay to Witness Public Key Hash“ (P2SH-P2WPKH). Тук повече или по-малко скриптът за SegWit беше хеширан и прехвърлен в адрес P2SH. Това позволи въвеждането на SegWit по по-малко разрушителен начин.
  • Народните SegWit-v0 адреси или Pay to Witness Public Key Hash (P2WPKH) адреси, които технически работят по-ефективно, използват формата bech32. Този новоразработен стандарт изглежда по съвсем различен начин – адресите са по-дълги, състоят се само от малки букви и започват с „bc1“.

Pay-to-Taproot (P2TR) също използва стандарта bech32. Има обаче малка разлика в генерирането на адресите, поради което използваните досега адреси v0 не са съвместими. Това се прави умишлено, за да се предотврати загубата на пари.

„При подготовката на Taproot открихме, че някои портфейли пренебрегват версията на Witness в адресите bech32 и винаги определят изходите като Native-Segwit-v0“, обяснява Марк. „Ако някой от тези портфейли беше изпратил пари на адрес P2TR, скриптът P2TR щеше да бъде кодиран в изхода, но щеше да е необходимо да се попълни скрипт P2WPKH, за да се похарчи, поради грешката във версията. Получателят не би могъл да похарчи парите.“

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

Основните разработчици са си свършили работата. Но работата за екосистемата едва сега започва.

Related Posts

Leave a Comment