Генерируем мнемоническую seed-фразу без использования кошелька

Ответить
Аватара пользователя
cemehbl4
Newbie
Сообщения: 10
Зарегистрирован: 10 май 2022, 18:27

Генерируем мнемоническую seed-фразу без использования кошелька

Сообщение cemehbl4 »

Изначально идея состояла в том, чтобы сгенерировать сид (и адрес кошелька) вообще без участия компа. Но оказалось, что на это уйдет уйма времени, часов этак 20:) Поэтому пришлось упростить решение задачи.

Итак, нам понадобится:
1) Монетка
2) Чистая система, не подключенная к интернету, любой лайв дистрибутив линукса подойдет.
3) Список слов на любом из языков https://github.com/bitcoin/bips/blob/ma ... rdlists.md

Подкидываем монетку 256 раз и записываем результат (0 - орёл, 1 - решка или наоборот)

Код: Выделить всё

1001000101010011101011111000101011101111011110100001110001001010100100001001011010011100110001001001110100000010000110110001010010111111011001011011011111100001111100000101111110001110010000100010011100001100111000111011100101100110110000011101100101101111
Записываем результат, отделяя каждые 11 бит, вот так:

Код: Выделить всё

10010001010 10011101011 11100010101 11011110111 10100001110
00100101010 01000010010 11010011100 11000100100 11101000000
10000110110 00101001011 11110110010 11011011111 10000111110
00001011111 10001110010 00010001001 11000011001 11000111011
10010110011 01100000111 01100101101 111
На "хвост" из 3-х бит пока внимания не обращаем.
Переводим двоичные значения в десятичные с помощью калькулятора в холодной системе, или используя знания по информатике)

Код: Выделить всё

1162 1259 1813 1783 1294
298  530  1692 1572 1856
1078 331  1970 1759 1086
95   1138 137  1561 1595
1203 775  813
Теперь берем список из 2048 слов и находим их по номеру, отсчет начинается от нуля, поэтому для числа 1162 мы ищем слово под номером 1163.

Код: Выделить всё

mule output tired ten peace
census drastic squeeze setup trend
man city wagon swim march
armor mixture bachelor segment shuffle
nose genius grant
Осталось определить последнее 24 слово. Вычисляется оно с помощью алгоритма SHA-256, собственно это и делает расчет вручную очень сложным.
► Показать
В качестве входных данных мы берем полученное в самом начале число целиком (256 бит). Это в консоли делается, если кто не понял.

Код: Выделить всё

echo 1001000101010011101011111000101011101111011110100001110001001010100100001001011010011100110001001001110100000010000110110001010010111111011001011011011111100001111100000101111110001110010000100010011100001100111000111011100101100110110000011101100101101111 | shasum -a 256 -0
Результат выглядит так:
c716ada6e8ebd952598bb5622ccbd119620a9ad0ccbcf29ad55077a38603d61b
Из этой строчки нас интересуют два первых символа: c7
Переводим это число из шестнадцатеричной системы в двоичную: 11000111, и добавляем 3-хбитный "хвост" в начало этого числа: 11111000111
Переводим в десятичную систему: 1991
Последнее слово: wedding

При импорте сида в кошелек не забывайте добавлять парольную фразу для пущей безопасности. Да пребудет с вами Биткоин, друзья)

P.S. На самом деле, самое важное в этом мероприятии - это сгенерировать случайное число. Для механической генерации можно использовать не только монетку, но и карты, кости и т.д. При чём существуют специальные кости для этой, несомненно, сложной задачи. С примерами ознакомиться можно тут http://nabatchikov.com/blog/view/hrdwr_rndgn
Ответить