Надежное хранение криптовалют вызывает уйму вопросов, потому что уже неоднократно взламывались онлайн кошельки, сервера бирж, а мошенники применяют кучу разных способов, чтобы ввести держателей монет в заблуждение. Сейчас в этом направлении ведется активная работа и появляются новые полезные ресурсы.
Генератор адресов для бумажных кошельков с криптовалютой – Walletgenerator помогает создать счета оффлайн. Т.е. без подключения к интернету можно сделать новый адрес и распечатать к нему ключи на бумаге.
На этом этапе точно никто не сможет украсть данные, а для длительного хранения альткоинов, это отличный вариант.
Что такое бумажный кошелек и зачем нужен Walletgenerator?
Хранение ключей от крипто кошелька на бумаге – надежный способ защиты от злоумышленников.
Когда данные хранятся за пределами компьютера и через интернет к ним нет доступа, остается только физическое воровство информации. В этом случае думать нужно уже о сохранности листка бумаги, где распечатан QR код.
Сервис Walletgenerator предлагает генерацию адресов под разную криптовалюту в режиме оффлайн. Т.е. даже при создании нового бумажного кошелька, злоумышленники точно не смогут добраться до приватного ключа.
Для удобства, эта информация переносится в QR код, который потом легко считать приложениями на мобильных устройствах.
Система уникальная в своём роде, это вы поймете, когда посмотрите инструкцию по её использованию. О проекте мы уже говорили в другой статье про НЕ ОПУБЛИКОВАНА!!!бумажные кошельки криптовалют.
Аналогов полно, но они вряд ли вам потребуются, потому что здесь поддерживается множество альткоинов и всё на русском языке.
Инструкция по Walletgenerator
Когда вы зайдете на данный сайт, по умолчанию сразу перейдете к созданию бумажного кошелька для Биткоинов. Через боковую панель нужно выбрать криптовалюту, в данный момент их доступно 197:
Какую из монет вы бы ни выбрали, откроется страничка с подробной инструкцией. Сначала нужно загрузить архив на компьютер, в нём есть файл index.html.
Он открывает главную страницу Walletgenerator оффлайн, т.е. при отключении от интернета. Это нужно сделать, чтобы повысить безопасность:
Открываем файл, в браузере появится та же страничка. Теперь нужно водить курсором по ней, чтобы закончился счетчик или заполнилась зеленая полоса справа. Должны появляться зеленые точки на экране. Таким образом генерируются случайные символы:
Можно ввести свои символы в специальное поле или нажать кнопку Skip, чтобы пропустить этот шаг. Как только в счетчике появится ноль, система сгенерирует приватный и публичный ключ, которые будут внесены в QR коды:
Бумажный кошелек для криптовалюты создан. Открытый ключ нужен для получения переводов и пополнения. Секретный – это приватный ключ, который нельзя никому передавать. В верхней части есть две кнопки, для генерации нового адреса или для распечатки QR кодов.
Перед тем как переводить на такой кошелек большие суммы, попробуйте его протестировать небольшим пополнением.
Генерируем Bitcoin-адрес на Python
Тема криптовалют снова начинает будоражить интернет. Супер, что вам не надо идти в отделение банка с паспортом и выстаивать очередь, чтобы открыть счет. Сгенерировать кошелек Bitcoin — дело нескольких строк кода на Python.
Нам понадобятся библиотеки base58 и ecdsa. base58 – это кодирование бинарных данных 58-ю печатными символами (цифрами и латинскими буквами, кроме 0, O, I, l, которые похожи друг на друга). ecdsa – библиотека криптографии на эллиптических кривых.
pip install base58 ecdsa
Импортируем то, что нужно:
import hashlib import ecdsa from binascii import hexlify from base58 import b58encode
Нам нужен приватный ключ, из него мы вычислим публичный ключ, а из него – адрес кошелька Bitcoin. (Обратная процедура не возможна без полного перебора до конца времен). Приватный ключ – это 32 байта данных, которые мы получим из криптографически-надежного источника случайных чисел. Вообще можно придумать свой приватный ключ самостоятельно, если так хочется. Для генерации случайного приватного ключа мы воспользуемся библиотекой ecdsa:
private_key = ecdsa.SigningKey.generate(curve=ecdsa.SECP256k1)
Вычислим этой же библиотекой публичный ключ и добавим спереди байт 0x4 (это признак «несжатого» публичного ключа; есть и другие форматы).
public_key = b’\04′ + private_key.get_verifying_key().to_string()
Теперь нужно из публичного ключа сделать привычный число-буквенный адрес Bitcoin. Взглянем на схему:
Схема генерации адреса BTC из публичного ключа.
Для получения адреса из публичного ключа вычисляем сначала RIPEMD160(SHA256(public-key)):
ripemd160 = hashlib.new(‘ripemd160’) ripemd160.update(hashlib.sha256(public_key).digest())
Дополняем его префиксом 0x0 (главная сеть Bitcoin):
r = b’\0′ + ripemd160.digest()
Вычисляем контрольную сумму (нужна, чтобы наши денюжки не пропадали, если мы ошибемся в каком-то символе адреса). Контрольная сумма это первые 4 байта от SHA256(SHA256(r)):
checksum = hashlib.sha256(hashlib.sha256(r).digest()).digest()[0:4]
Получаем адрес кошелька, закодировав в base58 сложенные r и checksum:
address = b58encode(r + checksum)
Выведем результат:
print(f’private key: {hexlify(private_key.to_string())}’) print(f’public key uncompressed: {hexlify(public_key)}’) print(f’btc address: {address}’)
Генерация приватного ключа из своего источника случайностей, например, os.urandom:
def random_secret_exponent(curve_order): while True: bytes = os.urandom(32) random_hex = hexlify(bytes) random_int = int(random_hex, 16) if random_int >= 1 and random_int < curve_order: return random_int def generate_private_key(): curve = ecdsa.curves.SECP256k1 se = random_secret_exponent(curve.order) from_secret_exponent = ecdsa.keys.SigningKey.from_secret_exponent return from_secret_exponent(se, curve, hashlib.sha256).to_string()
Важно для конфиденциальных данных, вроде приватного ключа, использовать криптографически безопасный источник случайности. Об этом я писал в одной из недавних статей!
Полный пример кода генерации кошельков.
Проверить ключи и адрес можно здесь. (Нажимаем Skip, дальше Enter my own…)
Подробнее по теме можно почитать здесь.
Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway