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.