Автор: Стилгар
Това е четвърта част от поредицата ни „Какво е Биткойн?“. Предишните части можете да прочетете тук, тук и тук.
В миналата част на поредицата поставихме основния проблем, който блокчейн технологията решава в сферата на дигиталните валути – „double spend“. Но как всъщност би изглеждала т.нар. „double spend“ атака и защитата oт нея? Припомням, че заради публичните и частните ключове няма как някой да направи транзакция от името на друг. Векторът на атака е двойното харчене. Представи си, че имаме копач, който иска да ни измами с пари. Миньорът праща на търговеца Bitcoin, търговецът вижда блока където е получил парите и му праща стоката. След това миньорът изкопава различни блокове започващи от по-ранен блок и вместо транзакцията към търговеца включва в новите блокове транзакция към друг свой адрес и така хем получава стоката хем парите остават при него.
За да постигне това обаче на атакуващия ще му се наложи да изкопае повече блокове от всички останали (честни) участници в мрежата заедно защото иначе неговата верига няма да е най-дългата и ще бъде игнорирана. За да го постигне му е нужна 51% от изчислителната мощ на мрежата. Поради тази причина потенциалната заплаха за Bitcoin е известна като 51% attack. Оригиналната визия на Сатоши е, че всеки ще си копае на процесора вкъщи и никой не може да притежава толкова много изчислителна мощ колкото милионите потребители заедно. На практика нещата се развиват малко по-различно и вече имаме специализиран хардуер с който се копае Bitcoin, който е безкрайно по-ефективен от процесорите на домашните ни компютри. Все пак има конкуренция и никой не контролира 51% от този ресурс, а ако някой ден го контролира този човек или организация ще е инвестирал огромни суми и ако ги използва да разруши Bitcoin ще реализира огромни загуби защото този хардуер би бил безполезен за други задачи. Наградата от генерирането на нови блокове е по-голяма от потенциалната измама, която би могъл да направи.
До тук би следвало читателят да се е убедил, че Bitcoin наистина решава проблема с децентрализираното изпращане на стойност онлайн.
Bitcoin транзакция
Bitcoin транзакцията съдържа информация указваща от кой адрес да се вземе Bitcoin и на кой адрес да се прати. Нещо повече – сумите във всеки адрес се отчитат не просто като сбор а като резултат от предишни транзакции. Наличните суми в един адрес се наричат utxo – unspent transaction output (неизхарчени изходни данни от транзакция). Когато адрес получи някаква сума в следствие на транзакция тази сума се добавя като нов запис към неговите utxo. Освен подписите транзакцията съдържа inputs (входни данни) и outputs (изходни данни). Когато потребител иска да изпрати пари той трябва да избере един или повече utxo (наличните му пари) и да ги сложи в транзакцията като inputs. Тези utxo може да са от един или няколко адреса. След това избира адреси за outputs. Тези адреси може да са повече от един. Често срещана схема е да има два output адреса единият на получателя на парите, а другият на изпращача, който играе ролята на нещо като ресто. Тази практика добавя поверителност към транзакцията защото не е съвсем сигурно кой адрес е на получателя и кой на изпращача. Outputs се превръщат в unspent transaction outputs за адресите получатели.
Размер на блока и такси
В един момент от историята Сатоши е ограничил сякаш временно размера на блока на 1MB. Всичко временно е завинаги и в периода 2014-2017 се разрази гражданска война в Bitcoin обществото по въпроса дали размерът на блока трябва да се увеличи. Хората които искаха да го увеличат загубиха. Историята е дълга, но накратко можем да кажем, че резултатът беше алтернативна мрежа с променени правила където блоковете може да са много по-големи (в момента 32MB) наречена Bitcoin Cash (Bitcoin и Bitcoin Cash са различни неща). В интерес на прозрачността трябва да кажа, че аз съм твърдо за големите блокове и смятам, че Bitcoin Cash е технически правилното решение на проблема. Аргументите на двете страни са много за да бъдат изложени тук. Но защо размерът на блока е важен?
Всяка транзакция се записва в определен обем байтове. От това следва, че в 1MB блок може да запишем само определено количество транзакции. През 2017 Bitcoin стана достатъчно популярен, че мястото в блока започна да не стига. Тогава как се избира коя транзакция да влезе в блока? С наддаване. Към всяка транзакция може да бъде прикрепена сума наречена такса, която да отиде при копача изкопал блока. Съответно логичното поведение на копачите е да сортират идващите транзакции по такса и да набутат в блока колкото успеят започвайки от най-скъпата, а останалите остават да чакат. В момента в който пиша това средната цена на транзакцията е 10 долара, а е стигала и до 60. Това разбира се не е много приятно. Интересна подробност е че когато мрежата спре да дава награди за генериран блок копачите следва да се издържат от такси. Дори в момента много блокове генерират по-големи приходи от такси отколкото от награда. При Bitcoin Cash може да се прати транзакция за по-малко от стотинка защото в блоковете има много свободно място.
Пазарът реши, че брандът Bitcoin е по-ценен от технически правилната реализация на Bitcoin Cash и към днешна дата една бройка Bitcoin (BTC) струва $41 824 долара, а една бройка Bitcoin Cash (BCH) струва $486. Кой съм аз да споря с пазара? Въпреки ужасяващият P.R. Bitcoin Cash доказва, че технически големите блокове работят. В допълнение Bitcoin Cash е много подходящ за да експериментират начинаещи с Bitcoin. Може да си направите Bitcoin Cash wallet и да си пращате от компютъра на телефона и обратно малки суми от по няколко цента и това не струва почти нищо. Bitcoin работи по същия начин, но ще ви струва по няколко долара на транзакция. Не е много подходящо за експерименти
Съществуват опити да се решат проблемите с големите такси, най-вече проектът Lightning Network, който предоставя алтернативни и евтини начини за пращане на Bitcoin. Обяснението как работи той и какви са неговите предимства и недостатъци е твърде дълго за тук.
Транзакции и такси
Наддаването за таксите на транзакциите не зависи от стойността която се изпраща. Възможно е малка сума да се изпрати за много пари и огромна сума за малко пари. Наддаването е за място в блока. Това означава, че транзакция, която съдържа по-малко информация ще може да мине с по-ниска такса от транзакция с повече информация. Транзакция която съдържа повече inputs и outputs е по-скъпа от транзакция, която съдържа по-малко.
Възможно е човек да има в един Bitcoin адрес много пари и все пак таксата за изпращането им да е повече от парите в адреса. Това може да стане ако парите са пристигали на много малки транзакции. Тогава в адреса ще има много utxo и при изпращането ще е необходимо да се запишат в транзакцията много inputs което ще увеличи размера ѝ. Все едно Bitcoin има такса за броене на банкноти и монети и ако някой иска да изпрати много „дребни“ то ще му се наложи да плати голяма такса. Добрата новина е че отсрещната страна може да получи само един output. Големите борси използват моменти когато таксите са ниски за да окрупнят сумите от адреси с малки суми за да платят по-малко такси когато потребителите решат да изтеглят Bitcoin от борсата.
ЕКИП – Експертен клуб за икономика и политика Едно различно мнение
