Skip to content
Learning Platform

Глоссарий криптографии и блокчейна

Справочник ключевых терминов криптографии и блокчейна — от математических основ до ZK-proofs. Каждый термин содержит определение, примеры кода и ссылки на уроки курса.

12 categories · 71 terms

Математические основы

Модулярная арифметика

Modular Arithmetic
Term

Система арифметики, где числа «оборачиваются» при достижении модуля. Операция a mod n возвращает остаток от деления a на n. Фундамент криптографии: RSA, Диффи-Хеллман, эллиптические кривые — все строятся на модулярной арифметике.

Example:
# Python: модулярная арифметика
17 % 5        # → 2
pow(3, 7, 13) # → 3^7 mod 13 = 2187 mod 13 = 3

# Модулярное обратное
pow(7, -1, 13) # → 2  (потому что 7 × 2 = 14 ≡ 1 mod 13)

Конечное поле

Finite Field (Galois Field)
Term

Множество конечного числа элементов с операциями сложения и умножения, удовлетворяющее аксиомам поля. Обозначается GF(p) или F_p для простого p. Все операции в эллиптических кривых выполняются в конечном поле.

Example:
# GF(7): поле из 7 элементов {0,1,2,3,4,5,6}
# Сложение: (5 + 4) mod 7 = 2
# Умножение: (3 × 5) mod 7 = 1
# Обратный к 3: 5 (потому что 3 × 5 = 15 ≡ 1 mod 7)

Группа

Group
Term

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

Example:
# Циклическая группа Z*_7 = {1,2,3,4,5,6}
# Генератор g = 3:
# 3^1=3, 3^2=2, 3^3=6, 3^4=4, 3^5=5, 3^6=1
# Порядок группы: 6

Простое число

Prime Number
Term

Натуральное число > 1, делимое только на 1 и на себя. Простые числа — основа RSA (произведение двух больших простых), конечных полей (GF(p)), и генерации параметров эллиптических кривых.

Example:
# Тест простоты (пробное деление)
def is_prime(n):
    if n < 2: return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0: return False
    return True

# RSA использует простые ~2048 бит
# secp256k1 использует p = 2^256 - 2^32 - 977

Дискретный логарифм

Discrete Logarithm
Term

Задача нахождения x по известным g, h и p, где g^x ≡ h (mod p). Вычислительно неразрешима для больших p — это основа безопасности Диффи-Хеллмана, DSA и криптографии на эллиптических кривых (ECDLP).

Example:
# Легко: 3^5 mod 23 = 243 mod 23 = 13
# Трудно: найти x, если 3^x ≡ 13 (mod 23)
# Ответ: x = 5, но для больших чисел
# перебор невозможен (~2^128 операций)

Хеш-функции

Хеш-функция

Hash Function
Term

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

Example:
import hashlib

# SHA-256: всегда 256 бит (32 байта)
hashlib.sha256(b'Hello').hexdigest()
# → '185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969'

# Лавинный эффект: 1 бит изменения → ~50% битов меняются
hashlib.sha256(b'hello').hexdigest()
# → '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'

SHA-256

Secure Hash Algorithm 256-bit
Term

Криптографическая хеш-функция из семейства SHA-2, выдающая 256-битный дайджест. Используется в Bitcoin (double SHA-256 для блоков, Merkle-деревьев), сертификатах TLS. 64 раунда с операциями сдвига, вращения и XOR.

Example:
# Bitcoin double-SHA256
import hashlib

def double_sha256(data: bytes) -> bytes:
    return hashlib.sha256(
        hashlib.sha256(data).digest()
    ).digest()

# Заголовок блока хешируется дважды
block_hash = double_sha256(block_header)

Keccak / SHA-3

Keccak (SHA-3)
Term

Хеш-функция, победившая конкурс NIST SHA-3. Построена на конструкции sponge (губка) вместо Merkle-Damgård. Ethereum использует Keccak-256 (до финализации NIST) для хеширования адресов, storage-слотов и Solidity-селекторов.

Example:
# Ethereum использует Keccak-256
from Crypto.Hash import keccak

k = keccak.new(digest_bits=256)
k.update(b'transfer(address,uint256)')
k.hexdigest()[:8]  # → 'a9059cbb' (selector)

# Адрес = последние 20 байт Keccak-256(pubkey)

Дерево Меркла

Merkle Tree
Term

Двоичное дерево хешей, где каждый листовой узел — хеш данных, а каждый внутренний узел — хеш конкатенации дочерних. Корень (Merkle root) фиксирует всё дерево. Позволяет эффективно доказывать включение элемента за O(log n).

Example:
# Merkle Root из 4 транзакций
#         Root
#        /    \
#      H12    H34
#     / \    / \
#    H1  H2 H3  H4
#    |   |   |   |
#   tx1 tx2 tx3 tx4

# Proof для tx3: [H4, H12]
# Verify: H(H(H(tx3) + H4) + H12) == Root?

Лавинный эффект

Avalanche Effect
Term

Свойство криптографической хеш-функции: изменение одного бита входа приводит к изменению ~50% битов выхода. Критически важно для безопасности — предотвращает предсказание хеша по частичному знанию входа.

Шифрование

AES

Advanced Encryption Standard
Term

Симметричный блочный шифр с размером блока 128 бит и ключами 128/192/256 бит. Стандарт шифрования (NIST, 2001). 10/12/14 раундов подстановки-перестановки (SubBytes, ShiftRows, MixColumns, AddRoundKey).

Example:
from Crypto.Cipher import AES
import os

key = os.urandom(32)   # AES-256
nonce = os.urandom(12) # для GCM

cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
ciphertext, tag = cipher.encrypt_and_digest(b'Secret')

# Расшифровка
decipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
plaintext = decipher.decrypt_and_verify(ciphertext, tag)

RSA

Rivest-Shamir-Adleman
Term

Асимметричный криптоалгоритм, безопасность которого основана на сложности факторизации произведения двух больших простых чисел. Используется для шифрования и цифровых подписей. Ключи: n = p × q, e (открытый), d (закрытый).

Example:
# Упрощённый RSA (малые числа)
p, q = 61, 53
n = p * q                 # 3233
phi = (p-1) * (q-1)      # 3120
e = 17                    # открытый экспонент
d = pow(e, -1, phi)       # 2753 (закрытый)

# Шифрование: c = m^e mod n
c = pow(42, e, n)         # 2557
# Расшифровка: m = c^d mod n
m = pow(c, d, n)          # 42 ✓

Режим CBC

Cipher Block Chaining
Term

Режим работы блочного шифра, где каждый блок открытого текста XOR-ится с предыдущим блоком шифротекста перед шифрованием. Первый блок XOR-ится с вектором инициализации (IV). Обеспечивает рассеивание, но уязвим к padding oracle атакам.

Режим GCM

Galois/Counter Mode
Term

Аутентифицированный режим шифрования, объединяющий CTR-шифрование с аутентификацией Galois MAC. Обеспечивает конфиденциальность и целостность. Стандартный режим для TLS 1.3 и современных протоколов.

Цифровые подписи и кривые

Эллиптическая кривая

Elliptic Curve
Term

Кривая вида y² = x³ + ax + b над конечным полем. Точки на кривой образуют абелеву группу с операцией «сложения». Безопасность основана на задаче дискретного логарифма на эллиптической кривой (ECDLP). Ключи в 256 бит эквивалентны RSA-3072.

Example:
# secp256k1 (Bitcoin/Ethereum)
# y² = x³ + 7 (a=0, b=7)
# p = 2²⁵⁶ - 2³² - 977
# n = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
# G = генераторная точка

# Приватный ключ: k (случайное 256-бит число)
# Публичный ключ: P = k × G (скалярное умножение)

secp256k1

secp256k1
Term

Эллиптическая кривая, используемая в Bitcoin и Ethereum. Параметры: y² = x³ + 7 над полем F_p, где p = 2²⁵⁶ − 2³² − 977. Выбрана Сатоши Накамото. Эндоморфизм GLV позволяет ускорить верификацию подписей на ~33%.

Ed25519

Ed25519
Term

Схема подписи на кривой Curve25519 (Edwards form). Используется в Solana, Monero, SSH. Преимущества: детерминированные подписи (без случайного k), быстрая верификация, устойчивость к side-channel атакам.

ECDSA

Elliptic Curve Digital Signature Algorithm
Term

Алгоритм цифровой подписи на эллиптических кривых. Подпись (r, s): r = (k×G).x mod n, s = k⁻¹(hash + r×privKey) mod n. Используется в Bitcoin и Ethereum для авторизации транзакций.

Example:
# Подпись транзакции (упрощённо)
k = random(1, n-1)       # одноразовый nonce
R = k × G                # точка на кривой
r = R.x mod n             # первая часть подписи
s = k⁻¹(z + r×d) mod n   # z = hash(msg), d = privkey
# signature = (r, s)

# КРИТИЧНО: повторное использование k → утечка privkey!

Подпись Шнорра

Schnorr Signature
Term

Простая и элегантная схема подписи: (s, e), где s = k − e×x, e = H(R ‖ M). Линейность позволяет агрегировать подписи (MuSig2). Добавлена в Bitcoin через Taproot (BIP 340).

Bitcoin

UTXO

Unspent Transaction Output
Term

Неизрасходованный выход транзакции — базовая единица «владения» в Bitcoin. Каждый UTXO содержит сумму и скрипт блокировки (scriptPubKey). Транзакция потребляет UTXO (inputs) и создаёт новые (outputs). Баланс адреса = сумма всех его UTXO.

Example:
# Алиса имеет UTXO на 1.5 BTC
# Платит Бобу 1.0 BTC:
# Input:  UTXO_alice (1.5 BTC)
# Output1: Bob  (1.0 BTC)
# Output2: Alice (0.4999 BTC) — сдача
# Fee: 0.0001 BTC (inputs - outputs)

Bitcoin Script

Bitcoin Script
Term

Стековый язык программирования Bitcoin (не Тьюринг-полный). scriptPubKey блокирует UTXO, scriptSig — разблокирует. Отсутствие циклов — by design для предотвращения DoS. Основные типы: P2PKH, P2SH, P2WPKH (SegWit).

Example:
# P2PKH: Pay to Public Key Hash
# scriptPubKey:
#   OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
# scriptSig:
#   <sig> <pubKey>

# Стек выполнения:
# [sig, pubKey] → DUP → [sig, pubKey, pubKey]
# → HASH160 → [sig, pubKey, hash]
# → EQUALVERIFY → [sig, pubKey]
# → CHECKSIG → [TRUE]

Proof of Work

Proof of Work (PoW)
Term

Механизм консенсуса, где майнеры перебирают nonce, чтобы хеш блока был меньше target. Затраты энергии делают атаку 51% экономически невыгодной. Bitcoin: SHA-256 double hash, среднее время блока 10 минут, корректировка каждые 2016 блоков.

Example:
# Майнинг (упрощённо)
import hashlib

target = 2 ** (256 - difficulty_bits)
nonce = 0
while True:
    header = f'{prev_hash}{merkle_root}{nonce}'
    h = int(hashlib.sha256(
        hashlib.sha256(header.encode()).digest()
    ).hexdigest(), 16)
    if h < target:
        print(f'Block mined! nonce={nonce}')
        break
    nonce += 1

Lightning Network

Lightning Network
Term

Протокол Layer 2 над Bitcoin для мгновенных микроплатежей. Использует payment channels (двусторонние каналы) и HTLC для маршрутизации через промежуточные узлы. Транзакции off-chain, settlement on-chain.

HTLC

Hash Time-Locked Contract
Term

Контракт с двумя условиями разблокировки: предъявление прообраза хеша (hashlock) или истечение таймаута (timelock). Основа маршрутизации в Lightning Network — позволяет атомарные платежи через цепочку каналов.

Related lessons:

Merkle Root

Merkle Root
Term

Корневой хеш дерева Меркла всех транзакций в блоке Bitcoin. Включается в заголовок блока. Позволяет SPV-нодам верифицировать транзакцию без скачивания всего блока — достаточно Merkle proof из O(log n) хешей.

Ethereum и EVM

EVM

Ethereum Virtual Machine
Term

Стековая виртуальная машина Ethereum для выполнения смарт-контрактов. 256-битные слова, ~140 opcodes. Три области памяти: stack (1024 элемента), memory (линейная, volatile), storage (key-value, persistent). Детерминированное выполнение на всех нодах.

Example:
// EVM opcodes: PUSH1 0x60 + ADD
// Stack trace:
// PUSH1 0x0a  → [10]
// PUSH1 0x14  → [10, 20]
// ADD         → [30]
// PUSH1 0x00  → [30, 0]
// SSTORE      → []  (storage[0] = 30)

Gas

Gas
Term

Единица измерения вычислительной работы в Ethereum. Каждый opcode имеет стоимость в gas. Транзакция задаёт gasLimit и gasPrice (или maxFeePerGas/maxPriorityFeePerGas после EIP-1559). Base fee сжигается, priority fee идёт валидатору.

Example:
// Стоимость основных opcodes
// ADD:     3 gas
// MUL:     5 gas
// SSTORE:  20000 gas (новый слот)
// SLOAD:   2100 gas (cold) / 100 gas (warm)
// CALL:    2600 gas (cold) + value transfer

// EIP-1559: fee = baseFee + priorityFee
// baseFee динамически корректируется

Solidity

Solidity
Term

Объектно-ориентированный язык для смарт-контрактов Ethereum. Компилируется в EVM bytecode. Типизированный, с наследованием, модификаторами, событиями. Версия 0.8+ имеет встроенную защиту от overflow.

Example:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

contract SimpleStorage {
    uint256 private value;

    event ValueChanged(uint256 newValue);

    function set(uint256 _value) external {
        value = _value;
        emit ValueChanged(_value);
    }

    function get() external view returns (uint256) {
        return value;
    }
}

ERC-20

ERC-20 Token Standard
Term

Стандарт взаимозаменяемых токенов: transfer, approve, transferFrom, balanceOf, totalSupply, allowance. Интерфейс из 6 функций и 2 событий. Основа DeFi — все DEX, lending протоколы работают с ERC-20.

Example:
// Ключевые функции ERC-20
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
}
Related lessons:

ERC-721

ERC-721 (NFT Standard)
Term

Стандарт невзаимозаменяемых токенов (NFT). Каждый токен уникален (tokenId). Функции: ownerOf, safeTransferFrom, approve, getApproved. Metadata через tokenURI. Используется для цифрового искусства, игровых предметов, сертификатов.

Related lessons:

Proof of Stake

Proof of Stake (PoS)
Term

Механизм консенсуса Ethereum (после The Merge, сентябрь 2022). Валидаторы стейкают 32 ETH и выбираются для предложения блоков пропорционально стейку. Экономические наказания (slashing) за нарушения вместо затрат энергии.

Example:
// Beacon Chain параметры
// Min stake: 32 ETH
// Epoch: 32 slots × 12 sec = 6.4 min
// Finality: 2 epochs (~12.8 min)
// Slashing: min 1/32 стейка за двойную подпись
// Rewards: ~4-5% APR (зависит от активных валидаторов)

Account Abstraction

Account Abstraction (ERC-4337)
Term

Стандарт, позволяющий смарт-контрактам быть аккаунтами с произвольной логикой валидации. UserOperation вместо обычных транзакций. Bundler собирает операции, EntryPoint контракт исполняет. Поддерживает social recovery, газ-спонсорство, батч-транзакции.

Related lessons:

MPT

Modified Merkle Patricia Trie
Term

Структура данных Ethereum для хранения состояния. Комбинация Patricia trie (prefix tree) и Merkle tree. Четыре типа узлов: leaf, extension, branch, null. State root в заголовке блока фиксирует всё состояние сети.

Related lessons:

Solana

Proof of History

Proof of History (PoH)
Term

Механизм упорядочивания событий в Solana через последовательную цепочку SHA-256 хешей. Не механизм консенсуса, а «криптографические часы» — каждая нода может верифицировать время между событиями. Позволяет Solana достигать ~400ms время блока.

Related lessons:

Program (Solana)

Program
Term

Смарт-контракт в Solana — stateless исполняемый код. В отличие от Ethereum, программа не хранит данные: все данные в отдельных аккаунтах, передаваемых в инструкцию. Программы владеют аккаунтами через program-derived addresses (PDA).

PDA

Program Derived Address
Term

Детерминированный адрес без приватного ключа, «принадлежащий» программе. Вычисляется из seeds и program_id. Bump seed гарантирует, что адрес не лежит на кривой Ed25519. PDA позволяет программам подписывать CPI-вызовы.

Example:
// Anchor: PDA из seeds
#[account(
    init,
    payer = user,
    space = 8 + 32 + 8,
    seeds = [b"vault", user.key().as_ref()],
    bump
)]
pub vault: Account<'info, Vault>,

// JS: findProgramAddress
const [pda, bump] = PublicKey.findProgramAddressSync(
    [Buffer.from('vault'), user.toBuffer()],
    programId
);

Anchor

Anchor Framework
Term

Фреймворк для разработки Solana-программ на Rust. Абстрагирует сериализацию/десериализацию, проверки аккаунтов, PDA-деривацию. Макросы #[program], #[derive(Accounts)], #[account]. Аналог Hardhat/Foundry для Solana.

Tower BFT

Tower BFT
Term

Вариант PBFT-консенсуса в Solana, оптимизированный с помощью Proof of History. Валидаторы голосуют за слоты; каждый голос удваивает lockout (2^k слотов). Финализация через 32 последовательных подтверждения (~12.8 сек).

Related lessons:

DeFi

AMM

Automated Market Maker
Term

Децентрализованный механизм обмена токенов через пулы ликвидности вместо книги ордеров. Цена определяется математической формулой (x·y = k для Uniswap V2). Ликвидность предоставляют LP (liquidity providers), получающие комиссии.

Example:
# Uniswap V2: x · y = k
# Pool: 1000 ETH × 2,000,000 USDC = 2B (k)
# Цена ETH = 2,000,000 / 1000 = $2000

# Покупка 10 ETH:
# Новый y = k / (x - 10) = 2B / 990 ≈ 2,020,202 USDC
# Стоимость = 2,020,202 - 2,000,000 = $20,202
# Средняя цена = $2020.2 (slippage: 1.01%)

Impermanent Loss

Impermanent Loss (IL)
Term

Потери LP по сравнению с простым холдингом токенов. При изменении цены в пуле арбитражёры перебалансируют пул. IL = 2√r/(1+r) − 1, где r = новая/старая цена. При 2x цены IL ≈ 5.7%, при 5x ≈ 25.5%. «Непостоянные», пока позиция открыта.

Concentrated Liquidity

Concentrated Liquidity
Term

Механизм Uniswap V3: LP размещают ликвидность в выбранном ценовом диапазоне [p_a, p_b] вместо (0, ∞). Капитал-эффективность в 4000x при узком диапазоне. Позиция представлена как NFT (ERC-721).

Oracle

Oracle
Term

Система доставки off-chain данных (цены, погода, рандом) в смарт-контракты. Chainlink — ведущая сеть оракулов с децентрализованными потоками данных. TWAP (Time-Weighted Average Price) — on-chain оракул Uniswap.

Flash Loan

Flash Loan
Term

Беззалоговый заём, который берётся и возвращается в одной транзакции. Если заём не возвращён — вся транзакция откатывается. Применение: арбитраж, ликвидации, рефинансирование залогов. Используются и для атак (oracle manipulation).

Ликвидация

Liquidation
Term

Принудительное закрытие undercollateralized позиции в lending протоколе. Health Factor < 1 → ликвидатор погашает часть долга и получает залог со скидкой (liquidation bonus, ~5-10%). Критически важный механизм для устойчивости DeFi.

Related lessons:

Стейблкоин

Stablecoin
Term

Токен с привязкой к стабильному активу (обычно $1 USD). Типы: фиатный (USDC, USDT — резервы в банке), крипто-обеспеченный (DAI — overcollateralized), алгоритмический (нестабильные, крах UST). Основа DeFi-экономики.

Related lessons:

Токеномика

Tokenomics
Term

Экономический дизайн токена: распределение (team, investors, community), вестинг, механизмы инфляции/дефляции, utility (governance, fees, staking rewards). Влияет на долгосрочную устойчивость и стоимость проекта.

Related lessons:

Безопасность

Reentrancy

Reentrancy Attack
Term

Атака, при которой вредоносный контракт повторно вызывает функцию жертвы до обновления состояния. Причина взлома The DAO (2016, $60M). Защита: паттерн checks-effects-interactions, модификатор nonReentrant, transfer вместо call.

Example:
// Уязвимый код:
function withdraw() external {
    uint bal = balances[msg.sender];
    (bool ok,) = msg.sender.call{value: bal}("");
    require(ok);
    balances[msg.sender] = 0; // ← слишком поздно!
}

// Безопасный (checks-effects-interactions):
function withdraw() external {
    uint bal = balances[msg.sender];
    balances[msg.sender] = 0; // ← сначала обновляем
    (bool ok,) = msg.sender.call{value: bal}("");
    require(ok);
}

MEV

Maximum Extractable Value
Term

Прибыль, которую валидатор/builder может извлечь через переупорядочивание, вставку или цензурирование транзакций в блоке. Типы: арбитраж (полезный), frontrunning (вредный), sandwich attacks, ликвидации. PBS (Proposer-Builder Separation) разделяет роли.

Integer Overflow

Integer Overflow/Underflow
Term

Переполнение целого числа: uint8(255) + 1 = 0 (overflow), uint8(0) - 1 = 255 (underflow). До Solidity 0.8 — молчаливое переполнение, использовалось для кражи токенов. С 0.8+ — автоматический revert. Unchecked{} отключает проверку для оптимизации gas.

Slashing

Slashing
Term

Наказание валидатора в PoS за нарушение протокола: двойная подпись (proposer equivocation), двойное голосование (attester equivocation), surround voting. Минимальный штраф: 1/32 стейка. Коррелированные нарушения усиливают штраф (до 100% стейка).

Аудит смарт-контрактов

Smart Contract Audit
Term

Систематический анализ кода на уязвимости: ручной review + автоматические инструменты (Slither — статический анализ, Mythril — symbolic execution). Методология: scope → automated scan → manual review → findings report → remediation.

Governance и масштабирование

DAO

Decentralized Autonomous Organization
Term

Организация, управляемая смарт-контрактами и голосованием держателей токенов. Proposal → голосование → timelock → исполнение. OpenZeppelin Governor — стандартная реализация. Примеры: Uniswap DAO, Aave DAO, MakerDAO.

Governance Token

Governance Token
Term

ERC-20 токен с функцией delegate() для участия в голосовании. Voting power = количество делегированных токенов. ERC-20Votes (OZ) — расширение с checkpoints для снимков voting power на момент создания proposal.

Timelock

Timelock
Term

Контракт-задержка между одобрением proposal и его исполнением. Даёт участникам время на exit (продажу токенов, вывод ликвидности) перед потенциально опасным изменением. OZ TimelockController: минимальная задержка 24-48 часов.

Optimistic Rollup

Optimistic Rollup
Term

Решение Layer 2: транзакции выполняются off-chain, данные публикуются on-chain. «Оптимистичный» — транзакции считаются валидными по умолчанию. Challenge period (~7 дней) для fraud proof. Примеры: Optimism (OP Stack), Arbitrum (Nitro).

ZK Rollup

ZK Rollup
Term

Решение Layer 2 с криптографическими доказательствами валидности (validity proofs). Каждый batch транзакций сопровождается ZK-proof, верифицируемым on-chain. Мгновенная финальность (без challenge period). Примеры: zkSync Era, StarkNet, Scroll.

Трилемма блокчейна

Blockchain Trilemma
Term

Гипотеза (Виталик Бутерин): невозможно одновременно достичь decentralization + security + scalability. Bitcoin/Ethereum жертвуют масштабируемостью. Solana жертвует децентрализацией. Layer 2 — попытка обойти трилемму.

Bridge

Cross-chain Bridge
Term

Протокол передачи активов и данных между блокчейнами. Типы: lock-and-mint, burn-and-mint, atomic swaps. Мосты — крупнейший вектор атак в крипто ($2B+ потерь). Верификация: мультисиг, light clients, ZK proofs.

Zero-Knowledge Proofs

Zero-Knowledge Proof

Zero-Knowledge Proof (ZKP)
Term

Криптографическое доказательство, позволяющее Prover убедить Verifier в истинности утверждения, не раскрывая никакой дополнительной информации. Три свойства: completeness (честный prover убедит), soundness (нечестный не обманет), zero-knowledge (verifier ничего не узнает).

zk-SNARK

Zero-Knowledge Succinct Non-Interactive Argument of Knowledge
Term

ZK-proof с постоянным размером (~200 байт) и быстрой верификацией (~мс) независимо от сложности вычисления. Non-interactive: prover отправляет одно сообщение. Требует trusted setup (Groth16) или universal setup (PLONK).

zk-STARK

Zero-Knowledge Scalable Transparent Argument of Knowledge
Term

ZK-proof без trusted setup (transparent). Использует FRI protocol и Reed-Solomon коды. Доказательства больше (~50-100KB), но quantum-resistant и не требуют «церемонии доверия». StarkNet/StarkEx построены на STARKs.

R1CS

Rank-1 Constraint System
Term

Система ограничений вида A·w ⊙ B·w = C·w, куда преобразуется арифметическая схема для ZK-proof. Каждый constraint: (линейная_комбинация) × (линейная_комбинация) = (линейная_комбинация). Circom компилирует circuit → R1CS → QAP → Groth16 proof.

Trusted Setup

Trusted Setup (Ceremony)
Term

Процедура генерации публичных параметров для zk-SNARK (Groth16). Создаёт «токсичные отходы» (tau), которые должны быть уничтожены. Powers of Tau: n участников, достаточно 1 честного. Zcash Sapling, Hermez — примеры масштабных церемоний.

Related lessons:

Circom

Circom
Term

DSL для описания арифметических схем (circuits) для zk-SNARK. Компилирует в R1CS + witness generator (WASM/C++). Библиотека circomlib содержит готовые шаблоны: Poseidon hash, comparators, binary operations. Используется с snarkjs для генерации proof.

Example:
// circom 2.0: простой multiplier circuit
pragma circom 2.0.0;

template Multiplier() {
    signal input a;
    signal input b;
    signal output c;
    c <== a * b;  // constraint: a × b = c
}

component main = Multiplier();

Commitment Scheme

Commitment Scheme
Term

Двухфазный протокол: commit (фиксация значения в «конверте») и reveal (открытие). Свойства: hiding (нельзя узнать значение до reveal), binding (нельзя изменить после commit). Pedersen commitment: C = v·G + r·H.

Related lessons:

Эвристика Фиата-Шамира

Fiat-Shamir Heuristic
Term

Трансформация интерактивного протокола в неинтерактивный: challenge от verifier заменяется хешем transcript (e = H(commitment ‖ message)). Безопасность в модели случайного оракула. Основа всех non-interactive ZK-proof систем.

Индексация и данные

Индексация блокчейна

Blockchain Indexing
Term

Процесс извлечения, трансформации и хранения on-chain данных в базу для быстрых запросов. Прямые RPC-вызовы медленны и ограничены. Индексаторы (The Graph, Subsquid) обрабатывают блоки, декодируют события и строят queryable API.

GraphQL

GraphQL
Term

Язык запросов для API: клиент запрашивает ровно те поля, которые нужны. Нет over-fetching/under-fetching. The Graph и Subsquid предоставляют GraphQL endpoint для запроса индексированных данных. Schema-first подход.

Example:
# Запрос ERC-20 трансферов
query {
  transfers(
    orderBy: blockNumber_DESC
    limit: 10
    where: { from_eq: "0xAlice..." }
  ) {
    id
    from
    to
    value
    blockNumber
    timestamp
  }
}

Subgraph

Subgraph (The Graph)
Term

Единица индексации в The Graph: manifest (subgraph.yaml) + schema (GraphQL) + mappings (AssemblyScript handlers). Graph Node обрабатывает события и заполняет хранилище. Deploy в Subgraph Studio или self-hosted ноду.

Subsquid

Subsquid
Term

Модульная платформа индексации: Subsquid Network (P2P данные) + squid processor (TypeScript ETL) + GraphQL сервер. Batch-обработка до 50000 блоков/сек. TypeORM для PostgreSQL-хранилища. Поддержка EVM, Substrate, Solana.

Event Log

Event Log (Ethereum)
Term

Записи, генерируемые инструкцией LOG0..LOG4 в EVM. Topics (indexed параметры, до 3) + data (non-indexed). Bloom filter в заголовке блока позволяет быстро фильтровать блоки по наличию события. Основа для индексации.

Example:
// Solidity event
event Transfer(
    address indexed from,   // topic[1]
    address indexed to,     // topic[2]
    uint256 value            // data
);
// topic[0] = keccak256("Transfer(address,address,uint256)")
// = 0xddf252ad...

Term not found? Use Cmd+K to search the entire course or refer to module lessons for more detailed information. The glossary is regularly updated with new terms.