Глоссарий / Кошельки и хранение
Список мнемонических слов
- Что такое список мнемонических слов?
- Список мнемонических слов представляет собой фиксированный словарь, по которому кошелек индексирует случайные биты и превращает их в слова для записи, и BIP-39 публикует десять таких списков, по одному на каждый поддерживаемый язык и письменность.
Определено в BIP-39.
Список слов представляет собой словарь, а не секрет: его может скачать кто угодно, и безопасность зависит от того, какие слова выбраны и в каком порядке. Каждый официальный список содержит ровно 2048 записей, поэтому каждое слово в вашей резервной копии несет 11 бит и не более. Копируйте резервную копию на английском, если у вас нет причин поступать иначе, потому что сама спецификация решительно отговаривает от остальных девяти.
Как это работает
Каждый список мнемонических слов содержит 2048 записей, потому что 2048 равно двум в одиннадцатой степени. Благодаря этому сопоставление является арифметикой, а не магией поиска: разделите энтропию и контрольную сумму кошелька на фрагменты по 11 бит, прочитайте каждый фрагмент как число от 0 до 2047 и выведите запись, стоящую на этой позиции. В английском файле позиция 0 занята словом "abandon", а позиция 2047 словом "zoo".
Для кодировщика важна только позиция. Каждый файл хранится в алфавитном порядке, что позволяет кошельку находить введенное слово двоичным поиском или деревом префиксов вместо перебора 2048 строк. Поскольку каждый язык сортирует свой собственный словарь, под индексом 500 в английском стоит "direct", а во французском "dauphin".
BIP-39 ставит перед хорошим файлом три цели: четыре введенные буквы должны однозначно определять слово, почти одинаковые слова вроде "build" и "built" или "woman" и "women" должны быть исключены, а весь набор должен быть отсортирован. Английский выполняет первую и третью цели полностью. Записи содержат от трех до восьми букв, и ни у одной из 2048 нет общего четырехбуквенного префикса с другой.
Вторая цель мягче, чем кажется. Собственные примеры спецификации соблюдены, поскольку "build", "woman" и "quick" в файле есть, а "built", "women" и "quickly" нет, но многие соседи, различающиеся одной буквой, уцелели: "angle" и "ankle", "action" и "auction", "awake" и "aware" все находятся в одних и тех же 2048. Когда копируете резервную копию, читайте слово целиком, а не его форму.
В обещании четырех букв есть пробел, о котором стоит знать. 103 английских записи имеют длину всего три буквы, и 49 из них являются началом более длинной записи в том же файле: "act" стоит рядом с "action", "actor", "actress" и "actual", а "art" рядом с "artefact", "artist" и "artwork". Четыре нажатия клавиш вообще не могут выбрать "act", поэтому кошелек должен принимать пробел или нажатие на подсказку. Записанное сокращение по-прежнему безопасно, потому что усечение каждой записи до четырех букв оставляет 2048 различных строк; разделитель нужен только при вводе в реальном времени.
Помимо английского существуют девять переводов: японский, корейский, испанский, китайский в упрощенной и традиционной письменности, французский, итальянский, чешский и португальский. Каждый создавался по своим опубликованным правилам. Французские записи содержат от пяти до восьми букв, без названий жителей и без слов с циркумфлексом или седилью. Итальянский отвергает удвоенные гласные и, по собственному правилу, "words that remind negative/sad/bad things". Чешский исключает каждую букву с диакритическим знаком, что его автор называет самой трудной задачей, поскольку диакритический знак есть у трети чешских букв.
Совпадения между языками представляют собой ту часть, о которой никто не упоминает. Испанский не имеет общих записей ни с одним другим языком, поэтому одно испанское слово определяет всю фразу. Английский и французский не так аккуратны: 100 слов встречаются в обоих файлах, среди них "abandon", "orange", "piano", "puzzle" и "village", и ни одно из этих 100 не стоит под одним и тем же индексом в двух файлах. "abandon" стоит под 0 в английском и под 1 во французском.
Это расхождение важно, потому что сид получается из введенных вами букв, а не из индексов за ними. BIP-39 растягивает саму объединенную фразу, поэтому фраза, составленная только из этих 100 общих слов, дает один и тот же сид при любой из двух языковых настроек, тогда как контрольная сумма, которая вычисляется из индексов, обычно отвергнет ее при неправильной настройке. Настоящий перевод фразы, когда каждое слово заменяется словом с тем же индексом из другого файла, меняет фразу и потому дает вам совершенно другой кошелек.
Почему это важно при покупке биткоина
Двадцать четыре слова, взятые из списка на 2048 записей, выглядят одинаково независимо от того, кодируют они 256 бит случайности или 72. Список слов представляет собой формат записи и ничего не говорит о качестве чисел за ним, и именно поэтому дефект Coldcard, описанный в нашем обзоре, оставался незамеченным более пяти лет: с марта 2021 года ошибка сборки направляла генерацию сид-фразы в программный генератор случайных чисел, оставляя фактическое пространство поиска, которое Coinkite оценивает примерно в 40 бит на Mk2 и Mk3 и примерно в 72 бита на Mk4, Mk5 и Q, при целевых 128 битах. Исправленная прошивка вышла 31 июля 2026 года. Напечатанные слова никогда не выглядели иначе, и ничто в них не могло никого предупредить.
Вопрос языка по-разному встает в 231 гиде по странам на этом сайте. Читателю в Мадриде, Праге или Осаке приложение кошелька может предложить локализованный файл, а сам BIP-39 прямо говорит, что подавляющее большинство кошельков поддерживают только английский и что от альтернатив решительно отговаривают. Переведенный файл решает проблему записи сейчас и создает проблему восстановления позже, когда кошелька, предложившего эту опцию, может уже не быть, а его замена может читать только английский. У японского есть вторая ловушка: его фразы записываются идеографическими пробелами, а не пробелами ASCII, поэтому фраза, набранная заново на неправильной клавиатуре, может выглядеть правильно и разделяться неправильно.
Некоторые кошельки, обозреваемые здесь, полностью избегают выбора. Tangem с рейтингом 3,8 продается наборами из двух карт за 59,90 $ или из трех за 69,90 $ и генерирует ключи внутри карты, по умолчанию не показывая никакой фразы, поэтому нет ни файла на выбор, ни записанного текста, который можно сфотографировать. Это настоящий ответ на проблему, которую создает список слов, и он имеет свою цену, которую излагает обзор.
Почему Trezor Safe 5 может выдать вам двадцать слов
Trezor Safe 5 поддерживает резервные копии из 12, 20 и 24 слов, а 20 не является длиной BIP-39. BIP-39 создает фразы из 12, 15, 18, 21 и 24 слов и ничего больше, поэтому двадцать слов происходят из SLIP-39, схемы Shamir, которую сами авторы BIP-39 предложили как преемницу. SLIP-39 имеет собственный файл ровно на 1024 слова, вдвое меньший, потому что упаковывает в каждое слово 10 бит вместо 11.
Два файла не являются непересекающимися. 553 из 1024 слов SLIP-39 также встречаются в английском файле BIP-39, поэтому по словарю нельзя отличить одну схему от другой. Считайте слова. SLIP-39 также закрыл пробел с тремя буквами правилом: ничего короче четырех букв, ничего длиннее восьми, уникальные четырехбуквенные префиксы во всем файле и минимальное расстояние Дамерау-Левенштейна 2 между любыми двумя записями. Он не поддерживает никакого языка, кроме английского, и прямо об этом говорит, возлагая вину на прежние "arbitrary wordlists" за путаницу у пользователей и ущерб совместимости.
Список мнемонических слов vs сид-фраза
Список мнемонических слов является публичным, а сид-фраза нет. Список представляет собой файл в открытом репозитории, копию которого несет каждый кошелек BIP-39; ваша фраза представляет собой конкретные 12 или 24 записи, которые ваше устройство взяло из него, в том порядке, в котором оно их взяло. Скачивание английского файла ничего не сообщает злоумышленнику, примерно как владение словарем никому не помогает угадать предложение. Эту разницу стоит держать в голове, когда аккаунт поддержки, расширение браузера или страница "wallet validator" просит вас сверить свои слова с официальным списком: список не нуждается в проверке, и запрос всегда направлен только на фразу.