Множество противоречивых статей, написанных о Биткойне, побудили меня написать статью о внутренней структуре этой системы.
Меня удивило, что некоторые авторы написал о цифровых монетах без понимания внутренней структуры, а предметом длительных дискуссий стала безуспешная попытка выяснить, является ли это мошенничеством.
Надеюсь, после этой статьи вера или доверие к Биткойну перерастут в уверенность и осознанность.
В этой статье я не буду раскрывать социально-экономическое влияние цифровых монет, а сосредоточусь исключительно на внутренних алгоритмах.
Ээлектронная цифровая подпись (ЭЦП)
К сожалению, я не нашел подходящих простых изображений, чтобы показать, как работает криптография на эллиптических кривых изнутри.Давайте примем этот инструмент на веру.
Те же алгоритмы используются в банковском секторе (и не только), поэтому крах ЦП приведет к кризису во многих отраслях.
Итак, приватным ключом мы подписываем «письма о передаче права собственности» (транзакции) и тем самым передаем свои монеты кому-то другому.
Мы используем открытый ключ для проверки подлинности транзакций других людей.
Хеширование
Если вы понимаете процесс хеширования, пропустите этот раздел.Демонстрация хеширования довольно проста.
Возьмем определенный номер.
например, номер телефона +7 (495) 606-36-02. Сложим все числа несколько раз: 7+4+9+5+6+0+6+3+6+0+2=48 => 4+8=12 => 1+2=3 Таким образом, вы можете однозначно связать определенный номер с любым номером телефона.
Процесс суммирования называется хешированием, сам метод — хеш-функцией, полученное число — хеш-суммой или просто хешем.
Обычно в результате хеширования достигаются следующие свойства: — Зная хеш-сумму (в нашем случае 3), невозможно определить исходный номер телефона.
— Вы не можете настроить номер телефона на заранее известную сумму (не применимо в нашем примере, обязательно для биткойнов).
— Небольшое изменение номера телефона приведет к резкому изменению хэша (в нашем примере неприменимо, но обязательно для биткойнов).
Есть также много других понятных повседневных примеров хеширования в вики статья.
Передача прав собственности.
Хэш-сумма открытого ключа Биткойн использует хэш открытого ключа в качестве адреса для передачи монет. Публичное объявление чьего-либо биткойн-адреса ничего не стоит. Даже участники «битвы экстрасенсов» не смогут узнать оригинальный ключ по его хешу.
А сама пара ключей будет использоваться только один раз — при передаче права собственности.
На этом жизнь пары ключей заканчивается.
PUB1 — открытый ключ
PRIV1 — секретный ключ
HASH1 или HASH(PUB1) — это хеш-сумма открытого ключа (адрес биткойна).
HASH2 или HASH(PUB2) — это хеш открытого ключа следующего владельца.
Давайте на время отдохнем от монет. Возьмем, к примеру, владельца автомобиля, принадлежность которого не вызывает сомнений.
- Владелец на публичном собрании (ярмарке, телешоу) показывает всем хеш своего публичного ключа HASH (PUB1), серийный номер автомобиля, и все с этим соглашаются - никто никаких претензий не предъявляет. — До момента продажи оба ключа PUB1 и PRIV1 продавца остаются секретными.
Известны только HASH(PUB1) и соответствующий серийный номер автомобиля.
— Как только владелец желает продать машину какому-либо покупателю, он пишет открытое письмо, в котором указывает серийный номер и хеш-сумму открытого ключа HASH (PUB2) второго владельца.
И, конечно же, он подписывает письмо своим закрытым ключом PRIV1, прилагая открытый ключ PUB1. — После передачи имущества секретный ключ перестает быть актуальным — второй такой буквы быть не может (см.
«Единая история»).
С помощью публичного ключа можно проверить само письмо и проверить второго владельца.
— О втором владельце ничего не известно, кроме HASH(PUB2), пока он не передаст права третьему владельцу.
И эта цепочка может быть бесконечной.
— Подписывая передачу прав с помощью ЭCP, собственник не только удостоверяет себя, но и накладывает обязательство по передаче.
Как говорится: «слово не воробей; если оно вылетит, вы не сможете его поймать».
— Благодаря HASH(PUB) достигается двойная защита.
Первая загадка — узнать открытый ключ по его хешу.
Вторая загадка – подписать чужим секретным ключом.
Если заменить автомобиль на биткойн, то вместо серийного номера появится хеш предыдущей транзакции.
И вся цепочка владения хранится публично у каждого пользователя.
«А сдача!Э»
Вы должны оставить сдачу себе.Но он устроен так, что секретный ключ используется только один раз, а часть ваших монет отправляется на ваш новый, нераскрытый адрес.
Из-за этого сложно понять, сколько монет принадлежит тому или иному адресу, и сложно судить об объеме переведенных монет за день/месяц/год.
Одна история.
Что добывают шахтеры? Чтобы предотвратить возможность потратить монеты дважды, должна быть единая история всех транзакций.
Тогда в журнале появится только первая транзакция (письмо о передаче прав на монеты) или хотя бы одна из нескольких.
Для этого транзакции объединяются в блоки и распознаются только «красивые» блоки.
«Красивый блок» найти сложно, так же как найти из тонны золотой руды только один стоящий самородок.
В нашем случае хеш блока должен содержать определенное количество нулей.
Блок состоит из предыдущего блока (хеш-суммы), хеш-суммы всех включенных транзакций и случайного числа (англ.
nonce).
Пример биткойн-блок с сайта Blockexplorer.com: * Hash: 00000000000001c21dbf4715d5da1a288061faa21e950dd8df6ae25c8b55d868
* Previous block?: 000000000000056a7dcf283f627c2a17c55ffe1937a6ed2bc467d9c524311da2
* Difficulty: 1 690 895.803052 ("Bits": 1a09ec04)
* Transactions: 184
* Total BTC: 4251.63216933
* Size: 58.913 kilobytes
* Merkle root: 98c5d975bf556f0344770eee7ab31688a1c108223c14cea908ff99b0ab8fe947
* Nonce: 3723473450
Видите, сколько нулей в начале хэш-суммы блока? Вот почему его было так трудно найти.
Но каждый может легко убедиться в подлинности «красоты» блока.
Количество нулей в хеше выбрано таким, чтобы каждый блок появлялся примерно раз в 6-10 минут. За нахождение блока дается вознаграждение, на данный момент оно составляет 50 монет. Нашедшему также предоставляются все комиссии за транзакции, включенные в его блок.
Единая история достигается за счет того, что всегда побеждает самая длинная цепочка блоков.
Не проблема, если от сети Биткойн будет выделена изолированная часть пользователей — впоследствии все отколовшиеся транзакции будут включены в более длинную цепочку (с учетом сложности).
Тонкости работы
— Хеширование обычно означает двойное sha256, т.е.sha256(sha256(x)).
— Удивительно, но Биткойн ничего не шифрует. Весь журнал транзакций представляет собой полностью открытую информацию.
Любой желающий может проверить целостность всех транзакций и посчитать количество монет в обращении.
Шансов на подделку нет. Единственная возможность зла — приостановить Биткойн на некоторое время.
— При первом запуске биткойн-приложение создает пару ключей.
Точнее, он заранее создает их сразу 100 пар, тем самым делая резервирование (резервное копирование) кошелька не более чем на 100 операций вперед. — Фактически в транзакции указывается не только сам биткойн-адрес, но и алгоритм проверки.
Биткойн имеет свой собственный встроенный примитив, намеренно урезанный язык программирования , что позволяет совершать сложные транзакции.
Например, вы можете запрограммировать отправку денег нескольким получателям (например, в сейф с несколькими ключами).
Или указать сроки расходования денег (не ранее 2013 года) и т.д. — Транзакции в блоке складываются в виде дерева хешей.
Таким образом, в будущем можно будет выбрасывать завершенные транзакции для экономии дискового пространства, не нарушая целостности блоков.
— Биткойн-адрес содержит контрольную сумму.
Поэтому ошибиться в адресе, пропустив или заменив один или несколько символов, нельзя.
Окончательно
Независимо от цены монеты (на систему могут обижаться только спекулянты), я считаю, что Биткойн стал очень успешным в техническом плане.Здесь есть чему поучиться и использовать полученный опыт в будущем.
Теги: #bitcoin #hashcash #платежные системы
-
Seo-Советы Для Начинающих
19 Oct, 24 -
Услуги Seo-Маркетинга — Обзор
19 Oct, 24 -
Самодельная Дымовая Машина
19 Oct, 24 -
486-Й От Китайской Республики
19 Oct, 24 -
Я Руководитель Команды, Зачем Мне Все Это?
19 Oct, 24 -
Мы Создаем Startup. Часть 2
19 Oct, 24 -
Необычные Поздравления С Днем Программиста
19 Oct, 24 -
Компании Покидают Second Life
19 Oct, 24