Сколько предвычисление вы готовы сделать? Можно ли использовать компьютер для этого? Обратите внимание, что вы можете проверить это нескольких способов (путем исправления некоторых быстрый и грязный кода в libsecp, и с помощью шалфея моих Go-тос), и что предвычисление не будет иметь ничего общего с секретным ключом на всех, так что вы можете также спросите внешние стороны, чтобы проверить.
В зависимости от вашего ответа, это не может быть слишком сумасшедшим, и вы могли бы сделать это менее чем за один день на Публичных. Вот одна схема:
0. Как уже упоминалось другие, открытый ключ происходит от секретного ключа с помощью х → х * G, где х, ваш секретный ключ, является 256-битное число, G является стандартным генератором secp256k1 эллиптической кривой, и * означает повторяющееся добавление G к себе эллиптической кривой группе формула сложения.
0a. Формулу можно найти в Википедии и
Вот. Я рекомендую вам понять формулу википедии алгебраически, а затем перейти к этой ссылке, чтобы найти более вычислительно эффективных схем. В частности, вы будете использовать систему координат, которая позволяет не делать какую-либо модульную инверсию, потому что это медведь, чтобы сделать вручную. (Вы, возможно, потребуется, чтобы сделать это, потому что окончательная форма должна быть в аффинных координатах, но вы можете положить его до конца, а не делать это на каждом шагу.)
0b. Формулы, libsecp256k1 использования являются
в этом сценарии Sage, который при запуске, будет также проверить, что на самом деле они алгебраически эквивалентны очиститель формулы, найденную на вики и в других местах. вычислительные задачи libsecp в (избегать инверсий, сильно предпочитают дополнение к умножению) достаточно близки к цели, человеку, что это, вероятно, быстрее, чтобы просто использовать их, чем идти исследовать лучшие.
0с. Формулы для удвоения и добавления различных точек различны. Вам нужно удвоить, чтобы сделать Предвычисление, но не позже. Так что упростит вашу жизнь немного.
Хорошо, фактическая схема:
1. Возьмите secp256k1 генератор G, и вычислить G, 2G, 3G, ..., 15G. Затем вычислить каждое из этих времен 16, 16 раз ^ 2, ... раз, раз 16 ^ 63. (Это не так плохо, как это выглядит, так как каждое поколение может быть получен из последнего путем умножения на 16 раз.) Умножить на 16, двойные 4 раза. Это в общей сложности 15Ч64 = 960 очков вам нужно предвычисление. Теперь, я не в вашей голове, но я действительно думаю, что ваши духи позволит вам сделать это с помощью компьютера, так как это зависит от вашей тайны, и вы можете сделать это несколькими способами.
1a. Я думаю, что это было бы смешно для libsecp проекта продавать книги с этими предварительно вычисленными таблицами, как книги логарифмов, что моряки, используемыми для использования. Это быстрая работа в шалфея и LaTeX, если я до сих пор считаю, что это смешно, в конце этого поста я сделать PDF.
2. Теперь возьмите свой секретный ключ в шестнадцатеричном-кодировке. Это основание 16 кодирования, что-то вроде х = а + Ь * 16 + с * 16 ^ 2 + ... и так далее, где все а, б, в, находятся между 0 и 15 включительно. Там будет 64 цифр, некоторые из которых (четыре из них, в среднем) равны нулю. Таким образом, вы можете написать х * G = (а + Ь * 16 + с * 16 ^ 2 + ...) * G = а * G + Ь * 16 * G + с * 16 ^ 2 * G.
2а. Вот прохладная часть: 0 * G-х вы можете игнорировать. Все остальное, что умножается на G в приведенной выше формуле в вашей предвычисленной таблице. Таким образом, вы будете иметь (не более) 64 точек, которые вы просто посмотрите вверх, и вы должны добавить их вместе. 63 дополнения. Для этого в течение 24 часов, вы должны сделать каждый из них немного до 23 минут. Это правдоподобно, но я не мог этого сделать.
Увеличивая размер ваших предвычисленных таблиц вы можете уменьшить работу с 64 точек, но таблица становится намного больше. (Для того, чтобы сократить вдвое вашу работу, вы должны примерно квадратного размер таблицы.) Для того, чтобы добавить 32 очков, вы должны были бы 8160 предвычисленных точек; 16 пунктов, которые Вы должны были бы чуть более миллиона; на 8 это 35000000000 ... в течение 1 вы должны выписывать буквально каждую точку.)
Редактировать: Вот, я сделал Предвычисления для вас. Вы хотите страницы 38, база 16 цифр.
https://download.wpsoftware.net/bitcoin/todl.pdf