Как работи едно от най-значимите открития от създаването на интернет насам? Много хора говорят и пишат за биткойн – за цената, хакерите, наркотиците, Сатоши Накамото. Рядко обаче някой се наема да обясни дори основните характеристики на криптовалутата – описват я като начин за бързо забогатяване, но не се обяснява какво ѝ придава стойност, или като пирамида, но не се споменава как технологията може да се използва не само като пари.

Още по-рядко някой споменава как работи биткойн мрежата. Банкерите казват: „Харесваме блокверигата, но не и биткойн“. Какво представлява системата обаче? Какви са съставните ѝ части и защо е изградена по този начин? Успее ли човек да разбере основните принципи, по които работи технологията, ще може сам да си отговори и на останалите въпроси. Затова тук си поставяме за цел да опишем максимално разбираемо и подробно биткойн блокверигата, като поставим акцент върху това какво, как и защо работи в системата.

Блокверигата

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

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

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

Например към момента (17.10.2015 г. 14:49 ч.) системата работи върху блок номер 379 298. Това означава, че в този момент биткойн блокверигата е съставена от 379 298 блока и те съдържат всички трансакции досега (от стартирането на системата към този момент трансакциите са приблизително 90 милиона). Това означава също така, че всички нови трансакции се записват в този и само в този нов блок 379 298, а всички останали преди него са приключени и не могат да бъдат променяни. Когато този блок бъде завършен, той ще стане новият връх на блокверигата и ще започне работата по следващия блок.

Естествено, след такова описание на блокверигата се пораждат някои въпроси:

Блокверигата има ли първи блок?

Да, има първи блок и той се нарича генезис блок. Това е първият блок, генериран от създателя/създателите на биткойн, работещ/и под псевдонима Сатоши Накамото. Този блок съдържа една трансакция с първите 50 биткойнa, появили се в обращение, и е генериран на 03.01.2009 г.

Щом блокверигата съдържа само трансакциите между сметките, как се знае колко биткойна има по всяка сметка? Съхраняват ли се някъде записи със салдото по всяка сметка?

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

Това означава ли, че биткойн не е анонимен?

Да, блокверигата е публично достояние и всеки може да провери наличността на всяка сметка и всички трансакции от и към нея. Единственият фактор, носещ анонимност в биткойн мрежата, е липсата на информация кой притежава дадена сметка.

Генериране на блокове

Биткойн мрежата има два основно типа участници – потребители и копачи.

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

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

При генерирането на всеки нов блок копачът проверява дали той изпълнява правилата, наложени от биткойн мрежата, което означава:

  • блокът включва само валидни трансакции;
  • блокът има правилна структура;
  • блокът е на правилното място в блокверигата;

и много други, които ще разгледаме по-късно.

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

Емитиране на нови биткойни

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

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

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

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

Размерът на емитиращата трансакция се определя по конкретна формула, заложена в биткойн мрежата от момента на нейното стартиране. Първоначалният размер е бил 50 биткойна и на всеки 210 000 блока този размер се намалява наполовина. Тъй като в момента се намираме на блок 379 298, това означава, че вече е настъпило едно преполовяване и затова размерът на емитиращата трансакция трябва да бъде 25 биткойна. На блок 420 000 ще настъпи следващото преполовяване и от този момент нататък размерът ще стане 12,5 биткойна, до следващото преполовяване. В таблицата може да видите информация за първите шест етапа в живота на биткойн мрежата спрямо размера на емитиращата трансакция.

bitkoin tablica
Така изградената система на емитиране на биткойни е изключително добре измислена, тъй като гарантира, че се поддържа от правилните икономически стимули. По-специално, тя гарантира, че:Както обяснихме по-рано, блоковете се генерират от копачите така, че те, и само те, могат да добавят емитиращи трансакции. Тези трансакции се явяват тяхното възнаграждение за енергията и изчислителната мощ, която изразходват за поддържането на системата. При конструирането на новия блок, освен всички трансакции на потребители, те включват и тази емитираща трансакция, която прехвърля новите биткойни по тяхна лична сметка.

  • копачите, които поддържат мрежата, са заплатени за положения труд;
  • копачите са стимулирани да осигурят правилната ѝ работа – тяхното заплащане е в биткойни и ако те саботират по някакъв начин мрежата, стойността на биткойн ще падне на международните пазари, което ще доведе и до намаляване на собствената им печалба;
  • новоемитираните биткойни са справедливо разпределени в обществото – получават ги тези, които поддържат системата, а не някой привилегирован.

От гореизложеното описание на емитирането на биткойни може би се досещате, че общият брой на биткойните в обращение е ограничен. Тъй като броят новоемитирани единици се преполовява на всеки 210 000 блока, то в дългосрочен план той клони към нула. Това е една експоненциално намаляваща функция. От горната таблица се вижда, че още на петото преполовяване емисията е едва 1,56 биткойна. С тази скорост на намаляване на емисиите още на 33-тото преполовяване емисията ще бъде по-малко от 0,00000001 биткойна, което означава, че от този момент нататък практически няма да се появяват повече биткойни в обращение. Изчислено е, че към този момент в обращение ще има емитирани почти 21 милиона биткойна, което е и максималният брой биткойни, които някога ще бъдат емитирани. За сравнение, към края на 2015 г. са емитирани около 15 милиона биткойна, или около 70 % от общата емисия.

Тъй като системата е настроена да генерира нов блок приблизително на всеки 10 минути, това означава, че преполовяване на емисията настъпва приблизително на всеки 4 години. Предишното преполовяване е било на 28 ноември 2011 г., а следващото се очаква в края на юли 2016 г. С тази скорост се предвижда емитирането да приключи през 2140 г., но тъй като то намалява експоненциално още на петото преполовяване (блок 1 050 000), в обращение ще бъдат над 98 % от всички биткойни. Това ще се случи приблизително през 2028 г.

Биткойн сметки

Трансферът на биткойни винаги се извършва към определена сметка в системата. Обикновено биткойните се прехвърлят от друга сметка и по-рядко като част от емитираща трансакция. Естествено възникват следните въпроси: как се създават и регистрират в системата тези сметки; как човек може да си направи нова сметка; как се гарантира, че само един човек може да оперира с дадената сметка.

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

И двата ключа се използват за криптиране на данни. Тези данни могат да бъдат всеки вид цифрова информация – текстово съобщение, файл, софтуерен код и т.н. Да се криптира тази цифрова информация, означава тя да бъде разбъркана по такъв начин, че да не може да се използва, без да бъде декриптирана. Криптираните данни са напълно неузнаваеми.

Криптографията с публичен ключ работи по такъв начин, че позволява съобщенията, криптирани с единия ключ, да бъдат декриптирани единствено с другия. Това работи и в двете посоки – съобщенията, криптирани с публичния ключ, могат да бъдат декриптирани само с частния ключ и обратното – съобщенията, криптирани с частния ключ, могат да бъдат декриптирани само с публичния ключ.

Тази технология обикновено се използва по два начина:

  • Криптиране на съобщения, предназначени само за собственика на частния ключ. В този случай съобщението се криптира с публичния ключ и може да бъде декриптирано единствено със съответстващия му частен ключ. На практика, това означава, че това съобщение може да бъде прочетено единствено от собственика на частния ключ.
  • Подписване на съобщения и документи. В този случай самите данни не се криптират (съобщението остава в оригиналния си вид), а вместо това се генерира хеш (идентификатор на съобщението), който впоследствие се криптира с частния ключ. В резултат всеки може чрез публичния ключ да декриптира хеша и да провери дали той отговаря на съобщението, и за всекиго е ясно, че това съобщение е подписано с дадения частен ключ. Също така е сигурно, че съобщението не е променяно, защото в противен случай хешът не би бил валиден. Повече информация за това какво представляват хешовете, ще намерите в раздела, озаглавен „Копаене на биткойни“.

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

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

Нека разгледаме един биткойн адрес: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa. Той отговаря на редица правила, които биткойн мрежата налага, за да може да се счита за валиден. Изчислено е, че броят на валидните за системата адреси е 2^160 (две на степен сто и шейсета). Това е едно огромно число – 1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,976 броя адреси. Толкова огромно, че според някои изчисления е повече от броя на песъчинките от всички плажове на земята, които са „само“ 2^63.

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

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

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

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

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

Това е и което позволява при нужда генерирането на частни ключове да стане на компютър, несвързан с интернет, или дори без компютър. Така генерираният частен ключ може никога да не „докосне“ интернет и съответно може да бъде откраднат само физически. Това е и т.нар. „хладно съхранение“ (cold storage) – съхранение на частните ключове на хартия или машина, несвързана с интернет („студена“ машина).