Модул 8 от 10

Как работи Биткойн

8.0 Въведение

Биткойн не е „нерегулиран“; той се регулира от алгоритъм, вместо да бъде регулиран от държавни бюрокрации. Некорумпиран.Андреас М. Антонопулос

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

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

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

Механика на Биткойн протокола
  • Доказателство за работа (Proof-of-Work)
  • Криптографски времеви печати
  • Регулиране на трудността
  • Децентрализирана мрежова архитектура (Peer-to-Peer)
  • Хеш функции и Меркъл дървета
  • Криптография с публичен ключ
  • Намаляване на субсидията за блок

8.1 Сигурност чрез криптография

Това, което Bitcoin ни дава, е твърдо обещание: програмата ще се изпълни точно както е зададено.
Андреас М. Антонопулос

Криптография с публичен и частен ключ

Криптография е практиката да се превръща информацията в тайна, която само правилните хора могат да прочетат.

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

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

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

Bitcoin решава този проблем с различен подход, наречен криптография с публичен ключ, при който потребителите не трябва предварително да споделят тайни ключове.

Криптографията с публичен и частен ключ решава проблема със споделянето на тайни. Вместо да споделят парола, всеки има два ключа: публичен и частен ключ.

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

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

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

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

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

Като допълнителна мярка за защита, всяка Bitcoin транзакция автоматично получава УНИКАЛЕН цифров подпис. Този уникален цифров подпис се осигурява от технология, устойчива на подправяне, която помага на мрежата да провери, че истинският собственик на биткойна, а не някой друг, го е изпратил.

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

Как работи една Bitcoin транзакция
  1. Създаване на транзакцията: Потребителят инициира Bitcoin транзакция, като посочва подробности като адреса на получателя и количеството биткойн, което ще бъде изпратено.
  2. Генериране на цифров подпис: Изпращачът генерира уникален цифров подпис използвайки своя частен ключ. Този подпис е уникален код, който удостоверява автентичността на транзакцията.
  3. Излъчване на транзакцията: Подписаната транзакция се излъчва към мрежата на Bitcoin, като се посочва намерението за прехвърляне на собствеността върху биткойн от изпращача към получателя.
  4. Потвърждение в мрежата: Възлите в мрежата на Bitcoin получават транзакцията и използват публичния ключ на получателя за да се провери автентичността на подписа на транзакцията. Едновременно с това се използва публичният ключ на подателя,публичен ключ за да се провери дигиталният подпис.
  5. Потвърждение в мрежата на Bitcoin: Ако проверката е успешна, транзакцията ще бъде добавена към счетоводната книга, която служи като сигурен и прозрачен запис на всички транзакции. След като бъде потвърдена, собствеността върху биткойна официално се прехвърля от подателя към получателя.

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

Обяснение на хеширането

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

Една функция е като машина, която взема някаква информация и я превръща в нещо ново. Информацията, която давате на функцията, е входът. Новата информация, която функцията създава, е изходът. Функциите помагат на компютрите да изпълняват задачи и да решават проблеми.

Какво е функция?

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

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

Какво е еднопосочна функция?

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

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

Какво е хеш функция?

Една хеш функция е като машина за тайни кодове. Тя приема съобщение и го превръща в код.

Как работи хеширането при транзакциите с Bitcoin

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

Ролята на хеширането в сигурността на Bitcoin

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

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

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

изходът, или хешът, винаги е с една и съща дължина, независимо колко дълга е била оригиналната информация. Bitcoin използва няколко специфични типа хеш функции, наречени SHA-256 и RIPEMD160.

Няколко примера са показани по-долу:

  • SHA256 хеш на низа здравей свят
    • b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
  • SHA256 хеш на низа здравей свят.
    • 7ddb227315f423250fc67f3be69c544628dffe41752af91c50ae0a9c49faeb87
    • Забележете, че малка промяна във входа напълно променя изхода в сравнение с първия пример
  • SHA256 хеш на изтегляемия iso файл Ubuntu 18.10
    • 7b9f670c749f797a0f7481d619ce8807edac052c97e1a0df3b130c95efae4765
    • Този вход е огромен файл, но изходът отново е със същата фиксирана дължина

Може да си представите хеширането и като нотен запис, който улавя същността на музикално произведение. Както нотният запис е уникално представяне на мелодията, така и хеш стойността е уникално представяне на дадени данни.

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

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

Процесът на кодиране на публичния ключ чрез хеширане се използва за повишаване на сигурността на информацията, като я преобразува във фиксиран по дължина, нечетим формат. Bitcoin използва алгоритмите SHA-256 и RIPEMD160 за създаване на публични адреси. Полученият резултат служи като уникален идентификатор за публичния ключ и помага да се гарантира целостта и сигурността на транзакциите, съхранявани в счетоводната книга. Криптирайки информацията по този начин, става по-трудно за неоторизирани лица да имат достъп и да манипулират данните.

Свойства на хеш функцията
  • Детерминирана: Същите съставки винаги създават едно и също смути. По същия начин, едни и същи данни винаги ще дават един и същ хеш.
  • Устойчивост на предварителен образ: Ако имате само смутито, не можете да разберете точно какви плодове са използвани. По същия начин, ако имате само хеша, не можете да определите оригиналните данни.
  • Ефект на лавина: Дори и малка промяна в съставките създава напълно различно смути. При хеширането, много малка промяна в данните води до напълно различен хеш.
  • Устойчивост на колизии: Изключително трудно е да се намерят два различни набора от съставки, които да създадат едно и също смути. По същия начин е изключително малко вероятно два различни набора от данни да дадат един и същ хеш.
  • Бърза проверка: Приготвянето на смутито е бързо и лесно се проверява, че резултатът е смути. Хеш функциите се изчисляват бързо и всеки може лесно да ги провери.

Дейност: Генерирай SHA 256 хеш

Любопитно ли ти е как работи хеширането? Сканирай QR кода, за да генерираш моментално SHA256 хеш от всяка дума, изречение или вход, който избереш. Хеш функциите са като дигитални пръстови отпечатъци: те са еднопосочни, което означава, че веднъж хеширано, не може да се върне обратно. Пробвай и се увери сам!

8.2 UTXO моделът

Какво представляват UTXO-тата?

Не се притеснявайте от странното име. Можете да мислите за UTXO-тата като за части от биткойн, подобно на банкнотите и монетите в портфейла ви. Например, ако платите за стока на стойност 6 лева с банкнота от 10 лева, ще получите 4 лева ресто. Биткойн работи по подобен начин.

Всички биткойни, които притежавате, са съставени от различни UTXO-та. Когато изпращате биткойн, вашият портфейл използва една или повече от тези части, за да извърши плащането.

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

Балансът на вашия портфейл е просто общата стойност на всички UTXO-та, които контролирате.

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

Пример
  1. Александра иска да изпрати на Борис 5 BTC.
  2. Нейният портфейл използва два от нейните UTXO-та, които заедно са на стойност 6 BTC.
  3. Транзакцията изпраща 5 BTC към Борис, като създава нов UTXO в портфейла на Борис.
  4. Останалите 0.99 BTC се връщат на Александра като ресто, след като се плати 0.01 BTC такса за транзакция.
  5. След като транзакцията бъде потвърдена, тя се добавя към счетоводната книга на Bitcoin и използваните от Александра UTXO-та се отбелязват като изразходвани, така че не могат да бъдат използвани отново.
Ресурси
How Bitcoin Works Under the Hood
Гледайте „How Bitcoin Works under the Hood“

↑ Обратно към съдържанието