Я относительно новичок в криптовалютах в целом и пробовал использовать биткойны и несколько альткойнов, но меня всегда беспокоит, что некоторые цифровые активы доступны не во всех кошельках. Насколько я понимаю, я мог бы использовать одну и ту же мнемоническую фразу во всех кошельках, даже если некоторые активы не указаны в списке, если это правда, мне не нужно было бы хранить разные списки слов для каждого кошелька. Единственная проблема заключается в том, что большинство популярных кошельков поддерживают разное количество слов в мнемонической фразе. Можно ли преобразовать туда и обратно, скажем, фразу из 24 слов в фразу из 12 слов, и какие инструменты я могу использовать для преобразования?
Можно ли преобразовать туда и обратно, скажем, фразу из 24 слов в фразу из 12 слов, и какие инструменты я могу использовать для преобразования?
Нет, это невозможно. Мнемонические слова представляют собой энтропию, например, мнемоническая фраза из 24 слов представляет 256 бит энтропии, а мнемоническая фраза из 12 слов представляет 128 бит энтропии. Эти мнемонические слова передаются функции PBKDF2 для создания начального числа, которое затем будет использоваться для создания мастер-ключей для различных токенов. Также важно отметить, что если вы используете фразу-пароль для своего кошелька, эта фраза-пароль будет использоваться в качестве «соли» в функции PBKDF2 и сгенерирует совершенно другое начальное число, если бы вы не использовали парольную фразу.
Насколько я понимаю, я мог бы использовать одну и ту же мнемоническую фразу во всех кошельках, даже если некоторые активы не указаны в списке, если это правда, мне не нужно было бы хранить разные списки слов для каждого кошелька.
При этом следует соблюдать осторожность, так как многие кошельки используют разные пути генерации мастер-ключа. Если вы взаимозаменяемо используете несколько кошельков, попробуйте записать путь получения. Например, скажем, аппаратный кошелек A использует m/49'/0'/0' в качестве пути, он будет генерировать совершенно другие адреса по сравнению с кошельком, который будет использовать вывод am/44'/0'/0'.
Я задавал себе подобные вопросы, которые позволили мне больше узнать о мнемонике биткойна и, как и многих других (не всех) криптовалют, которые используют BIP39 , который представляет собой спецификацию, основанную на уникальном списке слов из 2048 слов (с нулевым индексом от 0 до 2047). ), доступный на разных языках (хотя я должен отметить, что вы не можете переводить слова на поддерживаемые языки, поскольку они не содержат одинаковые значения индекса на разных языках для данной мнемоники, с точки зрения одного метода «преобразования», который вы могли бы иметь в виду).
О мнемонике: В основе каждой мнемоники лежит очень большое случайное число и контрольная сумма, которая добавляется в конец, поэтому вы не можете просто выбрать свои 12 или 24 слова, так как часть последнего слова вычисляется на основе этой контрольной суммы ( об этом ниже).
Например, в BIP39 список слов соответствует диапазону степени 2 ^ 11 (т. е. 2048), и причина, по которой мнемоника оказывается состоящей из 12 или 24 слов, зависит от желаемой безопасности с точки зрения битов, в зависимости от того, является ли это 128 битами. или 256 бит.
Поэтому, когда вы щелкаете, чтобы создать кошелек, совместимый с BIP39, должен быть криптографически безопасный генератор псевдослучайных чисел (CSPRNG), такой как криптографический API WorldWideWide Consortium (W3C) для веб-кошельков (примечание: я являюсь участником этого spec на Github), работающий локально, который собирает различные биты случайности с вашего локального устройства таким образом, что злоумышленнику будет трудно воспроизвести или предсказать, а затем эти биты используются в качестве начальной энтропии (для создания мнемоники).
Другими словами, для мнемоники из 24 слов устройство выдаст 256 бит, преобразует эту строку в массив байтов и хэширует ее с помощью SHA256, что приводит к еще одному 256-битному выводу, из которого берутся и добавляются первые 8 бит. до конца начальной энтропии, что делает его длиной 264 бита.
Если вы разделите 264 бита на 11 бит на слово, результирующие 24 группы по 11 бит каждая будут соответствовать одному и тому же значению 11-битного индекса, где каждое слово находится в списке (где 0 = 00000000000 и 2047 = 11111111111). Таким образом, каждому слову соответствует 11-битное число в полученной мнемонике. Слова — это просто простой способ найти 11-битное число, воссоздать исходную энтропию + контрольную сумму для получения кошелька.
С точки зрения преобразования: не рекомендуется выбирать свои собственные слова, во-первых, потому что этот процесс выбора может иметь некоторую предвзятость, которая снизит результирующую безопасность мнемоники по сравнению со случайно сгенерированной, а во-вторых, потому что контрольная сумма должна быть вычислена детерминировано ( поэтому, если вы сократите свои 24 слова пополам и используете первые 12 в другом кошельке, очень мала вероятность того, что они будут соответствовать контрольной сумме (вероятность 1/16), тогда как выбор собственных 24 слов будет еще более маловероятным. быть жалобой на контрольную сумму (вероятность 1/256).
Энтропия: то же самое относится и к выбору вашей собственной энтропии, с точки зрения того, что лучше оставить это доверенному программному обеспечению. Хотя другие в отрасли привели несколько примеров подбрасывания монеты 128 раз и написания 1 для каждого орла и 0 для каждой решки, что является способом вручную создать 128-битную энтропию для кошелька (где кошелек будет вычислять 4-битная контрольная сумма) при условии, что процесс подбрасывания монеты является случайным (т. е. нет монеты, взвешенной с одной стороны).
Существует инструмент мнемонического конвертера ( примечание : я участвую в нем на Github) с расширенными функциями, которые могут принимать энтропию для создания мнемоники различной длины, но я бы не рекомендовал это для тех, кто только начал, или даже для тех, у кого много лет. опыта, если вы не владеете спецификацией BIP39, а также BIP44 и BIP32, и всеми бесчисленными способами, которыми одна маленькая ошибка может привести к необратимой потере средств.
Что касается вопроса о преобразовании : хотя я не совсем уверен, что вы имели в виду под «преобразованием», предполагая, что вы имели в виду разрезание 24 мнемоник пополам, чтобы использовать только первые 12 слов, я объяснил выше, почему это не жизнеспособный вариант, если только 12 слов не окажутся совместимыми с контрольной суммой. (некоторое программное обеспечение может сканировать действительные мнемоники из 24 слов, чтобы найти тот, который также является претензией к контрольной сумме при использовании только первых 12 слов, но последние 12 слов, вероятно, не будут соответствовать контрольной сумме, так как будет шанс 1/256 как для первых 12, так и для последних 12).
Что касается использования одной и той же мнемоники во всех кошельках: если кошелек совместим с BIP39, есть большая вероятность, что он также совместим с BIP44 для поддержки нескольких учетных записей / монет, что означает, что до тех пор, пока правильный путь деривации был добавлен для поддержки разработчики этого кошелька, эта криптовалюта будет поддерживаться и может использоваться с вашей существующей мнемоникой (но не в том случае, если они используют другой список слов, например, Monero, который не совместим с BIP39). Вот почему мне нравится думать о мнемониках как о криптохранилищах, а не о кошельках (поскольку одна мнемоника может содержать несколько учетных записей криптовалют, каждая из которых содержит несколько кошельков, см. HD-кошельки, чтобы узнать больше об этом на основе BIP32).
Вывод: лучше всего использовать программное обеспечение, предоставляемое базовым проектом токена/криптовалюты, поскольку в некоторых проектах используется другой список слов и/или другие различия, которые могут сделать мнемонику несовместимой и привести к безвозвратной потере средств или другим неудобствам, таким как если одна и та же мнемоника может получить разные адреса, которые не совпадают в программном обеспечении, даже с одним и тем же выбранным путем деривации, если корневое семя или другие шаги расходятся по неизвестным причинам (и такое устранение неполадок очень техническое, чтобы найти потенциальную ошибку).
Пример технических данных для случайно сгенерированного мнемоника (не используйте его с реальными средствами):
Начальная энтропия 128 бит в шестнадцатеричном формате:
659b8a03bfbb80cdcdc3c383d4b0d505
Энтропия в байтах:
bytearray(b'e\x9b\x8a\x03\xbf\xbb\x80\xcd\xcd\xc3\xc3\x83\xd4\xb0\xd5\x05')
Хэш-дайджест SHA-256 байтов энтропии в шестнадцатеричном формате:
c993b627272ef0cbc683ce275cf47ff82f73403ece8155bdd92c2dca2d86e3b1
Частичный фрагмент начального «байта» хэша, представляющий первые 4 бита:
c
Первые n битов хеша для преобразования в шестнадцатеричный формат:c
Контрольная сумма (шестнадцатеричная в биты):
1100
Начальная энтропия + контрольная сумма = общее количество битов:
011001011001101110001010000000111011111110111011100000001100110111001101110000111100001110000011110101001011000011010101000001011100
Общая длина бит:
132
Разделены на 12 групп по 11 бит:
['01100101100', '11011100010', '10000000111', '01111111011', '10111000000', '01100110111', '00110111000', '01111000011', '10000011110', '10100101100', '00110101010', '00001011100']
Соответствующие значения индекса для каждой группы (в базе 10):
[812, 1762, 1031, 1019, 1472, 823, 440, 963, 1054, 1324, 426, 92]
Соответствующая мнемоника:
grain sword liberty legal retreat group damage journey long pitch crystal argue
запл