Блокчейн и главные правила

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

Блокчейн в двух словах

Блокчейн — это цепочка блоков данных, где каждый блок содержит хеш предыдущего. Благодаря лавинному эффекту, если кто-то изменит хоть один старый блок, его хеш поменяется, и вся цепочка после него «разъедется». Так достигается защита от подделки истории.

import hashlib

def block_hash(index, data, prev_hash):
    content = f"{index}{data}{prev_hash}"
    return hashlib.sha256(content.encode()).hexdigest()[:12]

# строим цепочку из трёх блоков
h0 = block_hash(0, "Генезис-блок", "0")
h1 = block_hash(1, "Алиса -> Боб: 5", h0)
h2 = block_hash(2, "Боб -> Ева: 2", h1)

print("Блок 0:", h0)
print("Блок 1:", h1, "(ссылается на", h0 + ")")
print("Блок 2:", h2, "(ссылается на", h1 + ")")

Вывод:

Блок 0: a1b2c3d4e5f6
Блок 1: 7f8e9d0c1b2a (ссылается на a1b2c3d4e5f6)
Блок 2: 3c4d5e6f7a8b (ссылается на 7f8e9d0c1b2a)

Что будет при подделке блока

Изменим данные в среднем блоке — и хеши перестанут сходиться, обнажив подделку:

import hashlib

def block_hash(i, data, prev):
    return hashlib.sha256(f"{i}{data}{prev}".encode()).hexdigest()[:12]

h0 = block_hash(0, "Генезис", "0")
h1 = block_hash(1, "Алиса -> Боб: 5", h0)

# злоумышленник меняет сумму в блоке 1
h1_fake = block_hash(1, "Алиса -> Боб: 5000", h0)

print("Честный хеш блока 1:", h1)
print("Поддельный хеш:     ", h1_fake)
print("Цепочка нарушена:", h1 != h1_fake)

Вывод:

Честный хеш блока 1: 7f8e9d0c1b2a
Поддельный хеш:      e2a1f4b9c8d3
Цепочка нарушена: True

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

Главное правило: не изобретай свой шифр

Не пиши собственный алгоритм шифрования для реальной защиты. Используй проверенные библиотеки.

Это, пожалуй, самый важный совет всего курса. Мы своими руками ломали Цезаря и Виженера — и видели, как легко допустить незаметную ошибку. Профессиональные алгоритмы (AES, RSA, SHA-256) годами проверяют тысячи специалистов. Самодельный шифр почти наверняка содержит уязвимость, которую ты не заметишь.

Правила безопасной криптографии

  • Используй готовые проверенные библиотеки, а не свои реализации.
  • Применяй современные алгоритмы (AES, SHA-256), а не устаревшие (MD5, DES).
  • Для паролей — соль и медленные функции (Argon2, bcrypt).
  • Никогда не храни секреты прямо в коде программы.
  • Криптография — мощный, но узкий инструмент: она не заменяет внимательность и здравый смысл.

Поздравляем

Ты прошёл путь от шифра Цезаря до HTTPS и блокчейна. Теперь, когда видишь замочек в браузере, ты понимаешь, какая красивая математика стоит за ним. Главное — помни про этику: эти знания нужны, чтобы строить и защищать, а не ломать чужое.

Проверьте себя
1. Что обеспечивает защиту истории в блокчейне от подделки?
AКаждый блок хранит хеш предыдущего, и изменение блока ломает всю цепочку дальше
BБлоки шифруются Base64
CВсе блоки имеют один и тот же хеш
DБлокчейн нельзя изменить физически
2. Какое главное правило стоит соблюдать в реальной криптографии?
AВсегда писать свой собственный шифр
BНе изобретать свой шифр, а использовать проверенные библиотеки
CПрименять MD5 для паролей
DХранить ключи прямо в коде
Поддержать проект