Таким образом, до тех пор, пока основная криптография будет строгой и надежной, она не сможет просто украсть биткойны.
Теперь рассмотрим возможность атаки на отказ в обслуживании.
Скажем, Алисе сильно не нравится какой-то другой пользователь Боб.
Поэтому Алиса может решить, что она не будет включать какие-либо транзакции, происходящие из адреса Боба, в любом блоке, который она предлагает, чтобы попасть в цепочку блоков.
Другими словами, она отказывает в сервисе Бобу.
К счастью, у Алисы в итоге ничего не получится, это будет не более чем незначительная досада.
Если транзакция Боба не будет включена в следующий блок, который предлагает Алиса, эта транзакция просто подождёт, пока честный узел не получит предложение предложить блок, а затем его транзакция попадет в этот блок.
Рассмотрим атаку двойной траты.
Алиса может попытаться запустить атаку двойной траты.
Чтобы понять, как это работает, предположим, что Алиса является клиентом какого-либо онлайн-продавца или веб-сайта, который ведет Боб, который предоставляет некоторые онлайн-услуги в обмен на оплату в биткойнах.
Скажем, сервис Боба позволяет загружать некоторые программы.
Вот как может работать атака с двойной тратой.
Алиса добавляет товар в свою корзину на веб-сайте Боба, и сервер запрашивает платеж.
Затем Алиса создает транзакцию биткойна со своего адреса Бобу и транслирует ее в сеть.
Предположим, что какой-то честный узел создает следующий блок и включает эту транзакцию в этот блок.
Теперь есть блок, который был создан честным узлом, который содержит транзакцию, которая представляет платеж от Алисы покупателю Бобу.
Напомним, что транзакция представляет собой структуру данных, содержащую подпись Алисы, инструкцию для оплаты открытому ключу Боба и хэш.
Этот хэш представляет собой указатель на предыдущую транзакцию, который Алиса получила перед этим и сейчас тратит.
Этот указатель должен ссылаться на транзакцию, которая была включена в какой-то предыдущий блок в консенсусной цепочке.
Заметьте, кстати, что здесь есть два разных типа хеш-указателей, что может запутать.
Во-первых, Блоки содержат хеш-указатель на предыдущий блок, который они расширяют.
И во-вторых, транзакции включают один или несколько хэш указателей на предыдущие транзакции, которые не являются потраченными.
Вернемся к тому, как Алиса может начать атаку двойной траты.