Bitcoin — відкрита система передавання грошової вартості без обов’язкового центрального адміністратора. Ця назва позначає протокол, мережу учасників і її грошову одиницю; символ одиниці — BTC, а один BTC ділиться на 100 000 000 satoshi. Щоб зрозуміти Bitcoin, варто простежити один платіж: хто може розпоряджатися вартістю, як передає це повноваження одержувачу і як інші перевіряють включення до спільної історії.
Банківський залишок відображає зобов’язання банку перед клієнтом. За самостійного зберігання bitcoin ми маємо засоби виконання умов витрачання конкретних записів мережі. Протокол записує суми й умови, а не паспортні імена власників. Гаманець складає ці записи у відображуваний баланс; монети не є файлами в телефоні. Баланс у зберігача або на біржі має інший зміст: зазвичай це вимога до сервісу, який контролює ключі. Технічна здатність підписати платіж сама не визначає юридичного права власності. [Bitcoin Developer Guide — Transactions] [Bitcoin.org — Securing your wallet]
Одержувач надає адресу, створену гаманцем. Вона вказує, як створити вихід із певними умовами витрачання, а не є скринькою для монет чи таємним паролем. Зазвичай наступне витрачання дозволяє цифровий підпис, створений приватним ключем; перевірка підпису не потребує розкриття ключа. Умови можуть також вимагати кількох підписів або очікування. Знання адреси недостатньо для витрачання. Проте той, хто отримав потрібні секрети, може створити дійсне витрачання; мережа не відрізняє крадіжку ключа від згоди його держателя. [Bitcoin Developer Guide — Transactions]
Невитрачений вихід попередньої транзакції називається UTXO. Звичайна транзакція посилається входами на вибрані UTXO, повністю споживає їх і створює нові виходи. Маючи відповідний вихід 100 000 sat, відправник може спрямувати 60 000 sat одержувачу та повернути 39 000 sat під власний контроль. Решта 1 000 sat — комісія, а не рекомендована ставка. Початковий вихід уже не можна витратити повторно в тій самій історії. Адреса решти не обов’язково збігається з початковою. Перед підписанням перевіряють одержувача, суму й комісію. [Bitcoin Developer Guide — Transactions]
Гаманець готує та підписує платіж; Full Node перевіряє дані за правилами консенсусу. Він перевіряє, наприклад, існування невитрачених входів, виконання умов витрачання та відсутність створення додаткової вартості звичайною транзакцією. Дійсну непідтверджену транзакцію він може прийняти до локальної черги Mempool і передати сусідам. Кожний вузол має власну чергу та правила передавання; відмова передавати не завжди означає недійсність у блоці. Гаманець може використовувати власний вузол або чужий сервер, що надає інформацію. Навіть власний вузол не захищає викрадений ключ підписання. [Bitcoin Developer Guide — Transactions] [Bitcoin Developer Guide — Operating Modes]
Уповноважений держатель ключа може підписати дві різні транзакції, що витрачають те саме UTXO. Обидва підписи можуть бути правильними, а різні учасники спершу побачать різні платежі. Тому поряд із повноваженням потрібен спільний порядок. Подвійне витрачання — не копіювання файла з монетою, а спроба нав’язати два суперечливі використання одного виходу. До однієї дійсної історії може входити щонайбільше одне з них. Сам час отримання повідомлення, кількість підключених вузлів або твердження гаманця не розв’язують цей конфлікт глобально. [Bitcoin: A Peer-to-Peer Electronic Cash System]
Майнери складають кандидати в блоки й багаторазово обчислюють хеші, шукаючи Proof of Work, що відповідає цільовій складності. Блок посилається на попередній; зміна давнішої історії потребує повторного виконання наступної роботи. Вузол спершу перевіряє правила, а серед дійсних гілок обирає ту, що має найбільшу накопичену роботу, не обов’язково найбільше блоків. Майнінг допомагає визначити порядок, але не дає права витрачати чужі виходи. Навіть більшість обчислювальної потужності не змусить незмінений вузол прийняти недійсний блок; однак вона може порушувати порядок і доступність підтверджень. [Bitcoin Developer Guide — Block Chain]
Включення транзакції до прийнятого блоку дає перше підтвердження. Наступні блоки зазвичай збільшують вартість заміни цієї історії. Інтервал між блоками — не розклад: десять хвилин є довгостроковою ціллю, а не обіцяним строком платежу. Реорганізація може вилучити раніше прийнятий блок, повернути транзакцію до непідтверджених або замінити її конфліктним витрачанням. Потрібна кількість підтверджень залежить від вартості та ризику платежу; абсолютної певності вона не дає. У протоколі немає адміністратора скасувань. Добровільне повернення — новий платіж, комісію якого потрібно врахувати знову. [Bitcoin: A Peer-to-Peer Electronic Cash System] [Bitcoin Developer Guide — Block Chain]
Перша транзакція блоку, Coinbase Transaction, може виділити майнеру субсидію блоку та комісії включених транзакцій. Лише субсидія створює нові одиниці; комісії передають наявну вартість. Максимальна субсидія починалася з 50 BTC і зменшується вдвічі кожні 210 000 блоків. Цей Halving не стосується комісій. Округлення до цілих satoshi утримує суму дозволених субсидій нижче 21 мільйона BTC. Вузли відхиляють завищені винагороди. Втрачені ключі не збільшують майбутню емісію, а обмежена кількість одиниць сама не визначає купівельної спроможності. [Bitcoin Developer Guide — Block Chain]
Вихідний код можна досліджувати, а зміни пропонувати публічно. Розробник випускає програму, оператор вузла обирає правила перевірки, а майнер — вміст кандидата в блок. Жодна роль не вирішує сама за всіх; несумісні зміни можуть розділити мережу. Економічний вплив учасників водночас неоднаковий. Обмежений простір блоків стримує вимоги до перевірки й поширення даних, але за високого попиту створює конкуренцію за включення. Тому комісія пов’язана з розміром транзакції та попитом на включення, а не просто із сумою переказу. [Bitcoin Developer Guide — Block Chain] [Bitcoin Developer Guide — Transactions]
Публічна історія дозволяє перевірку, але й пов’язування платежів з особами, наприклад через біржові дані. Псевдонімність не є анонімністю. Самостійне зберігання усуває необхідність просити зберігача про підпис, але покладає на держателя відповідальність за резервні копії, безпеку пристрою та перевірку одержувача. Копія має відновити потрібні ключі й конфігурацію; саме відновлення гаманця не зробить розкритий секрет знову таємним. Власний вузол допомагає перевіряти історію, але не гарантує ціни, приватності чи безпечного підписання. Самостійна перевірка означає розуміти, яке саме з цих питань ми перевіряємо. [Bitcoin.org — Protect your privacy] [Bitcoin.org — Securing your wallet]
Для повної картини прочитайте також Satoshi Nakamoto, Bitcoin Whitepaper, Genesis Block, Proof of Work, Full Node, Ліміт 21 мільйон. На цю статтю також посилаються Satoshi Nakamoto, Bitcoin Whitepaper, Genesis Block, Full Node.