*Интересен факт: Multisignature (накратко Multi-sig) се използва под различни форми от хиляди години. Към момента се смята, че най-древната форма е използвана при монасите, за да предпазят най-ценните реликви на своите светци. Главният монах давал само част от ключа на подчинените му монаси, като по този начин никой не можел индивидуално да злоупотреби със заключените реликви.
Какво представлява Multi-Sig, какви са функциите му и защо е важен?
В криптографията, чрез понятието Multisignature или Multi-sig, се обозначава изискването за повече от един подпис за упълномощаване на транзакция. Използва се главно, за да разпредели отговорността за притежаваните биткойни към повече от една страна. По този начин се създава по-добра защита за потребителите, бизнесите, и за всеки, който притежава или възнамерява да притежава Биткойни.
Преди да обясним какво точно е Multi-sig, защо е важно и каква функция изпълнява, трябва да обобщим и припомним няколко ключови фактора, свързани с Биткойн. Изразът „Not your keys, not your coins” най-вероятно е изречен за пръв път от Andreas M. Antonopoulos, защото през годините стана негово запазено лого. Биткойн се съхранява в “адреси”, които се основават на публични и частни ECDSA двойки ключове. Често се казва, че „притежанието е девет десети от закона“, но при Биткойн, притежанието на частния ключ (private key) е закона, тъй като трансферите са реално необратими. Адресите се създават в следния ред: частен ключ (private key) > публичен ключ (public key) > адрес (address). Частният и публичният ключ отговарят на дадена точка на така наречената „secp256k1 крива“ (secp256k1 curve). Тук нещата стават доста технически, задълбочени и отнема повече време и познания, за да се разбере информацията. За да добиете малко по-ясна представа на този етап, самият адрес се извлича от публичния ключ след хеширане (sha256hash и ripemd160 hash). Ако някога сте се чудили, от един частен ключ може да се създаде само един адрес.
През по-голямата част от историята на Биткойн адресите са съхранявани върху един единствен частен ключ. Тези адреси (така наречените “стандартни адреси”), могат да бъдат разпознати поради факта, че те всички започват с “1”. Известни са още като “Legacy” адреси и това не са всичките им недостатъци. Нодовете, които все още ги „съпортват“, не са оптимизирани след софт форк-а на SegWit. Всеки, който притежава този един частен ключ, отговарящ за средствата в адреса, има контрол над тях. Така изглежда най-опростената възможна схема на адрес, който не притежава Multi-sig функции:
Потребителят се нуждае от ключа и само с него може да разполага с биткойните в адреса. Това е така наречената защита с един ключ (single key security). Тоест, ако някой открадне ключа, получава вашите биткойни.
С течение на годините и драстичното повишаване в цената се откри явен проблем: само един ключ не е достатъчен. Multi-sig адресите допринасят за защита в крипто света по различен начин. За да придадем по-голяма яснота, ще използваме схеми за различните видове Multisignature.
Фигура 2 показва вариант, в който са необходими и двата ключа, за да бъдат изпратени средствата от даден адрес. Пример за това е портфейлът на Blockstream – Green wallet. По подразбиране устройството, на което е портфейла, притежава единия ключ, а другия се държи в сървърите на blockstream. *Необходими са и двата ключа, което автоматично означава, че от blockstream не могат да се разпореждат със средствата без втория (вашия) ключ. Когато се изпращат койни е необходим ключът от портфейла + Two-Factor Authentication, който за предпочитане и по подразбиране трябва да се съхранява на друго устройство. По този начин, ако някой открадне вашия телефон или лаптоп, няма да може да открадне биткойните без допълнителния 2FA.
На фигура 3 е показан друг вариант, в който са необходими да ключа. Разликата спрямо вариант 2 е, че тук има двама потребителя. Като добър пример за подобен вид Multi-sig може да се посочи семейство, което иска да взима заедно решения за спестяванията си. По този начин мъжът и жената не могат да харчат средствата без знанието и разрешението на другия. Софтуерът на Copay работи по този начин.
На фигура 4 е показан вариант Multi-sig за два от три необходими подписа. Ако двете страни са съгласни и подпишат, средствата ще бъдат достъпни. При възникване на проблем те се допитват до арбитъра и той решава кой е прав в дадената ситуация. Съдията (арбитърът) не може да разполага със средствата сам. За да е изпълнен оптимално този вариант, съдията трябва да е безпристрастен и да не сътрудничи злонамерено с една от двете страни, тоест неговите функции могат да бъдат фиксирани преди създаването на адреса. Той изпълнява само функцията на арбитър и при нужда решава коя от страните е права.
Като друг пример може да посочим 2-от-3 Multi-sig, който може да се използва и в семейство, където детето ще разполага със средствата само при съгласието на поне един от двамата си родители. В същото време, при евентуална нужда, двамата родители могат да преместят средствата, защото имат двата необходими подписа.
На фигура 5 е показан вариант Multi-sig за два от три необходими подписа, като два от подписите се държат само от един потребител. Единият от тях се държи на сигурно място, защото е необходим само при евентуален проблем, а не за ежедневни транзакции. Потребителят е господар на биткойните си, като само той контролира двата необходими ключа. Работата на съдията в случая е да определи кои транзакции са „легитимни“ и да ги подпише с третия ключ, а ако не е съгласен, потребителят е длъжен да премести средствата със своя втори ключ. По този начин ще се види, че спрямо консенсус правилата на съдията, потребителят върши нещо нередно, защото ще използва резервния частен ключ. Ако всичко е наред, съдията ще подписва транзакциите (най-често той определя дали е наред или не спрямо първоначално зададени правила) и няма да има нужда от използването на този резервен ключ. Като пионер на този метод се явява BitGo, като техния multi-sig web портфейл го използва към този момент.
На фигура 6 е изобразен вариант, при който двама потребители притежават един и същ частен ключ. Двамата нямат достъп до койните без изпълнение и одобрение от съдията, чийто правила са зададени предварително. На схемата има и трета (в случая четвърта) страна, която се намесва само и единствено при настъпване на форсмажорни обстоятелства (загуба на ключ номер 1, например). Този Multi-sig е широко приложим, като това е базовата архитектура на multi-потребителския портфейл на BitGo.
Всички добри борси използват Multi-sig адреси, за да предпазят средствата си, както от вътрешни, така и от външни атаки.
Фигура 7 е една опростена схема на Multi-sig адреси, използвани от борса. Потребителят не притежава частен ключ, което означава, че при желание за теглене, той изпраща заявка към сървърите на борсата. Има специално установен съдия, както и на миналите фигури, който подписва транзакцията с втория необходим ключ само при спазване на първоначално поставените правила. Едно от тези правила е потребителят да предостави допълнителен код (защита от втора степен), като потвърждение от имейл или Google Authenticator. Тоест, никоя от страните не може да мести пари (койни) само и единствено разчитайки на себе си. Както на фигура 6, независимата трета страна е необходима само при извънредни ситуации, а за да се използва нейният ключ, трябва да се спазят специални правила.
*Има вариант, при който борсата и съдията, описани горе, могат да местят средства без знанието на потребителя. Това най-често се случва тогава, когато в началото е създаден така наречен white-listed settlement wallet, който също има различни нива на защита, както и различни хора отговарят за ключовете в него.
Въпреки че максималният брой на показаните схеми е два от три, важно е да знаете, че най-добрите борси и проекти използват 3-от-5 адреси или дори 5-от-9. Не ги изобразяваме, защото принципът е същия, но ще причиним допълнително объркване.
Пример: 3-от-5 Multi-sig адрес за проект. Повечето ICO-та използват подобни портфейли. Петима от най-важните хора за проекта притежават по един ключ, като средствата могат да бъдат местени само при съгласието на поне трима от тях.