Понимая Биткоин

Перевод подготовлен биткоинером Tony ₿

Предисловие

Около года назад вышла книга “Понимая Биткоин” (Grokking Bitcoin) моего друга Калле Розенбаума. Я сразу же связался с ним с предложением перевести ее на русский. К сожалению права на книгу принадлежат не автору, а издателю Manning Publications, которые с молниеносной скоростью успели продать права на перевод неизвестному заинтересованному лицу. В общем, ждем выхода русской версии. 

Но есть еще хорошие новости: Калле оставил за собой право выложить бесплатную версию книги для свободного доступа (https://rosenbaum.se/book/grokking-bitcoin.html), а раз перевод книги затянулся, я решил поделиться с вами переводом краткого содержания книги.


Встречайте: “Понимая Биткоин. Основные тезисы”


Глава 1: Введение в Биткоин

 > Биткоин — это глобальные деньги, не подверженные влиянию государственных границ, которые может использовать любой, у кого есть подключение к интернету.


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


 > Сеть компьютеров (сеть Биткоин) проверяет и ведет учет всех платежей.


 > Транзакция проходит следующие этапы: отправка транзакции, проверка транзакции, добавление транзакции в блок и уведомление кошельков получателя и отправителя.


 > Биткоин решает проблемы, вызванные инфляцией, наличием границ, разделением и повышает уровень приватности его участников, путем обеспечения ограниченного предложения, децентрализации и отсутствия границ.


 > Помимо Биткоина существует несколько альтернативных криптовалют, таких как Ethereum, Zcash и Namecoin.


 > Полезность (крипто) валюты растет по мере того, как ей начинает пользоваться все большее количество юзеров. Это называется сетевым эффектом.



Глава 2: Криптографические хеш-функции и цифровые подписи

 > Биткоины создаются в качестве вознаграждения нодам, обеспечивающим безопасность блокчейна.


 > Вознаграждение уменьшается вдвое каждые 210,000 блоков (примерно четыре года), с целью ограничения эмиссии.


 > Вы можете использовать криптографические хеш-функции для обнаружения изменений в файле или в сообщении.


 > Вы не можете вычислить входные данные (pre-image) криптографического хеша. Pre-image - это вход, который имеет определенный известный выход.


 > Цифровые подписи полезны для подтверждения подлинности платежа. Только законный владелец биткоинов может потратить монеты.


 > Проверяющий цифровую подпись не обязан знать, кто сделал эту подпись. Необходимо знать лишь то, что подпись была сделана с помощью приватного ключа, на который она ссылается.


 > Чтобы получить биткоины или любые другие токены, нужен публичный ключ. Сначала вы создаете приватный ключ для собственного использования. Затем из этого приватного ключа вы генерируете публичный ключ.


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


 > Как правило, чем лучше приватный ключ защищен от кражи, тем легче его случайно потерять, и наоборот.



Глава 3: Адрес

 > Приватность важна для каждого, а не только для преступников.


 > Использование хеша публичного ключа (PKH) вместо личных имен в качестве идентификаторов получателей платежей важно для обеспечения приватности и повышения уровня безопасности.


 > Кодирование PKH в качестве Биткоин-адреса снижает риск отправки денег в никуда, благодаря контрольной сумме в адресе.


 > Биткоин-адреса важны лишь пользователям сети. Сеть Биткоин имеет дело с обычными PKH.


 > Вы можете обладать столькими Биткоин-адресами, сколькими захотите. Использование нескольких адресов (желательно нового на каждую полученную оплату) улучшает вашу приватность.



Глава 4: Кошельки

 > Для отправки и получения биткоинов обычно используется мобильное приложение, называемое кошельком.


 > Кошелек генерирует и хранит ключи, сканирует или показывает платежные реквизиты, отправляет платежи, показывает ваш баланс и делает резервные копии ключей. Пользователю не нужно делать ничего из этого вручную.


 > Осуществить резервное копирование правильно — нелегкая задача. Резервные копии, защищенные паролем, страдают от проблем, связанных с забытыми паролями, улучшениями технологии, а также от того, что люди — попросту никудышные генераторы случайных чисел.


 > С помощью HD-кошельков вы можете создавать резервные копии и хранить их в безопасном месте. Сделайте это всего один раз (и забудьте об этой проблеме).


 > Сид-фраза может быть зашифрована с помощью мнемонической фразы, что облегчает ее хранение.


 > HD-кошельки генерируют несколько приватных ключей из сид-фразы и организовывают их в древовидную структуру с целью улучшения приватности.


 > Дерево публичных ключей (или любая из его ветвей) может быть сгенерировано из xPub. Это полезно для небезопасных сред, таких как веб-серверы.


 > Укрепленные производные приватных ключей хранят "учетные записи" в разрозненном виде. Это ограничивает злоумышленника в пределах одной учетной записи.



Глава 5: Транзакции

 > Транзакции имеют входы и выходы, поэтому вы можете потратить несколько "монет" и заплатить нескольким получателям в рамках одной транзакции.


 > Выходы операций являются "программируемыми". Кошелек отправителя решает, какие инструкции вставить в выходные данные. Это определяет действия, необходимые для траты средств.


 > Любой может проверить весь реестр, потому что все подписи являются общедоступными. Это значительно снижает требуемое доверие к Лизе (персонаж, выступающий в качестве примера майнера).


 > Скрипты могут быть использованы для активации возможностей мультисиг, например, 3-из-7. Это — отличное решение для компаний и благотворительных организаций.


 > Новый тип адреса — p2sh адрес, начинающийся с “3”, используется для упрощения процесса оплаты для многих изысканных типов платежей, таких как мультисиг.


 > Все транзакции происходят от одной или нескольких транзакций coinbase. Трансакции coinbase - это единственный способ создания новых биткоинов.


 > Создание денег проверяется любым участником, чтобы убедиться, что Лиза создает ровно столько, сколько согласовано: 7,200 токенов в день и уменьшает это число вдвое каждые четыре года.


 > Лиза может цензурировать и возвращать транзакции вспять. Пользователям все равно приходится доверять ей эту работу.



Глава 6: Блокчейн

 > Транзакции помещаются в блоки, которые подписывает Лиза, чтобы оставить за ней ответственность, если она попытается удалить транзакции.


 > Каждая подпись блока приводит к фиксации транзакций в этом блоке и всех предыдущих блоках, поэтому история не может быть изменена без повторной подписи подделываемого и всех последующих блоков.


 > Транзакции в блоке коллективно хешируются в структуре дерева меркл для создания корня меркл, который заносится в заголовок блока. Это позволяет создавать облегченные (lightweight) кошельки.


 > Облегченные кошельки повышают пропускную способность путем экономии места, но жертвуют при этом безопасностью.


 > Облегченные кошельки снижают безопасность, потому что такие кошельки не могут полностью проверить транзакцию, а также потому, что полная нода может скрывать транзакции от таких кошельков.


 > Единственный способ быть абсолютно уверенным в соблюдении правил блока - это запустить свою собственную полную ноду.


 > Безопасность облегченного кошелька может быть улучшена путем подключения к нескольким полным нодам или доверенной ноде.


 > Лиза все еще может цензурировать транзакции.



Глава 7: Доказательство проделанной работы (Proof of Work)

 > Наличие большого количества майнеров препятствует центральному органу, способному в противном случае цензурировать транзакции.


 > Доказательство проделанной работы (далее PoW) используется для определения участника, который получит возможность создать следующий блок.


 > PoW позволяет любому заняться майнингом, не спрашивая ничьего разрешения.


 > Целевое число автоматически калибруется каждые 2,016 блоков, чтобы поддерживать заданный темп эмиссии.


 > Транзакционные комиссии выступают в роли стимула, чтобы майнеры включили транзакцию в свой блок.


 > Чтобы снизить риск двойного расходования, получатель монет выбирает, сколько подтверждений необходимо, чтобы транзакция считалась принятой.


 > Майнер, участвующий в пуле, получает такой объем вознаграждений за созданный блок, какой он заслуживает. Чем больше хешрейта он предоставляет системе, тем большую долю вознаграждения он получает.


 > Чем крепче цепочка, тем большим объемом PoW она располагает и, соответственно, тем сложнее ее изменить.



Глава 8: Пиринговая (p2p) сеть

 > Пиринговая сеть делает блоки устойчивыми к цензуре.


 > Нода соединяется с несколькими пирами, чтобы понизить уровень уязвимости к сокрытию информации.


 > Протокол сети Биткоин - это "язык", на котором ноды общаются между собой.


 > Транзакции транслируются по одноранговой (p2p) сети Биткоин, чтобы как можно быстрее достичь как майнеров, так и получателей средств.


 > Новые ноды синхронизируются с сетью Биткоин, чтобы быть в курсе работы других нод. Это может занять от нескольких часов до нескольких дней.


 > Нодам не нужно быть онлайн 24/7. Они могут выпадать, возвращаться и вновь синхронизироваться, чтобы быть в курсе последних событий.


 > Для старых блоков проверку подписи можно пропустить. Это ускорит первоначальную синхронизацию. Это полезно, если вы знаете, что конкретный блок валиден.



Глава 9: Транзакции — копаем глубже

 > Транзакции могут быть залочены по времени или высоте блока в зависимости от ваших потребностей. Блокировки могут быть как абсолютными, так и относительными.


 > Вывод транзакции может потребовать блокировки траты по времени. Это полезно во многих цифровых контрактах.


 > Атомарные свопы — полезный способ обмена криптовалютами между двумя не доверяющими друг другу сторонами.


 > Произвольные данные, например, токен собственности на автомобиль, могут храниться в выходных данных OP_RETURN, не обременяя тем самым набор UTXO.


 > Транзакция может быть помечена как заменяемая. Это позволяет заменить транзакцию в случае, если она не подтвердится в течение ожидаемого времени.


 > Подписи могут относиться к различным частям транзакции, используя шесть комбинаций типов SIGHASH. Это может быть полезно в некоторых цифровых контрактах



Глава 10: Segregated Witness (SegWit)

 > SegWit перемещает данные скриптов подписей из транзакций для решения проблем, связанных с гибкостью транзакций.


 > SegWit использует новый алгоритм хеширования подписей, который ускоряет проверку транзакций. Это помогает нодам оставаться в курсе событий, задействуя меньшее количестве ресурсов.


 > Приватность облегченных кошельков растет, не жертвуя объемами трафика и не загружая свидетельские данные.


 > p2wsh упрощает улучшение скриптового языка в случае апгрейда.


 > Мы можем несколько увеличить максимальный размер блока, делая скидку на байты свидетеля (за счет их переноса из транзакций).


 > Новый формат адресов помогает кошелькам отличать старые платежи от платежей SegWit.


 > SegWit может быть "встроен" в адреса старого формата p2sh, чтобы старые кошельки могли отправлять деньги на SegWit-кошельки.



Глава 11: Биткоин-апгрейды

 > Разделение цепочки крайне нежелательно в случае форка, так как это приведет к сбою в Биткоин-экономике.


 > Хард форк — это изменение правил консенсуса, которые требуют обновления каждого майнера. В противном случае, блокчейн разделится.


 > Софт форк — это изменение правил консенсуса, которые не требуют одновременного апгрейда всей сети.


 > Во время разделения цепочки через хард форк, вам нужна защита от стирания, чтобы убедиться, что старые ноды не обновят новую ветку.


 > При разделении блокчейна необходима защита от изменений, чтобы выбирать, к какой ветке будут применяться те или иные транзакции.


 > Активированный майнерами софт форк, например, с использованием BIP9 для развертывания, позволяет майнерам развернуть софт форк без каких-либо разногласий.


 > Активированный пользователями софт форк позволяет пользователям внедрять софт форк. Если за этой версией следуют майнеры, обладающие большинством хешрейта, софт форк успешно срабатывает без долговременного разделения цепочки.


Не пропусти новые публикации


Подписаться

Нажимая на кнопку, вы даете согласие на обработку персональных данных