Web3-Python-Development
January 14

Генерация Кошельков | Python

Кратко разбираем как создавать новые Ethereum кошельки с помощью python скриптов

План:

  1. Подготовка окружения
  2. Код
  3. Анализ

1. Подготовка окружения

Покажи мне свое окружение и я покажу тебе твое будущее

1. Среда Разработки

Я выбираю JetBrains Продукты, пишу в PyCharm (Professional Версия), для старта спокойно подойдет ее беспатный вариант Community Edition

jetbrains.com/pycharm/download

Основые Отличия - Поддержка веб-разработки, баз даных, удаленных сред (Docker, Ssh) и тестирования

Также отлично подойдет VS Code - code.visualstudio.com/

2. Установка компонентов

Установка Python - python.org/downloads

(устанавливаем последнюю версию)

проверяем установку в терминале

python3 --version

далее

pip3 --version

если не работает, проверяем без 3

если pip не установлен - добавляем его самостоятельно

bootstrap.pypa.io/get-pip.py

Устанавливаем в любую папку доступную из командной строки - Downloads например

3. Создание проекта

PyCharm - New Project - Указываем Путь к Папке Проекта

Далее создаем файл любое_название.py

4. Локальная Установка

открываем терминал Alt + f12 / cmd + option + t

переходим в папку нашего проекта

pip install web3

или

pip3 install web3

Также для нашего скрипта нам понадобится еще одна библиотека - eth_account

pip install eth-account

Наш проект готов к работе!

2. Код

from web3 import Web3
from eth_account import Account

infuraURL = "https://mainnet.infura.io/v3/InfuraКлюч"
web3 = Web3(Web3.HTTPProvider(infuraURL))

if web3.is_connected:    
   print("Connected to the Ethereum network ✅ ")    
   print("Current block number:", web3.eth.block_number)ž
   
   Account.enable_unaudited_hdwallet_features()
    # let's create a wallet
   account, mnemonic_phrase = Account.create_with_mnemonic()
   address = account.address    
   private_key = account.key.hex()
   
   print(f"NEW WALLET CREATED ☑")    
   print(f"Address: {address}")    
   print(f"Private key: {private_key}")    
   print(f"Mnemonic phrase: {mnemonic_phrase}")   
    
else:    
   print("Failed to connect to the Ethereum network ❌ ")

3. Анализ

Процесс Выполнения Скрипта:

  1. Подключение web3py библиотеки
  2. Подключение eth_account библиотеки и импорт класса Account для управления аккаунтами
  3. Получение и подключение к Ethereum Ноде через API Infura
  4. Включает функции для работы с HD (Hierarchical Deterministic) кошельками, которые используют мнемонические фразы для генерации адресов и ключей. (Account.enable_unaudited_hdwallet_features())
  5. Создаем новый Ethereum-аккаунт и возвращаем кортеж, содержащий объект аккаунта и сид-фразу, используемую для его создания. - account, mnemonic_phrase = Account.create_with_mnemonic()
  6. Возвращаем адрес Ethereum-аккаунта в виде строки (address = account.address)
  7. Возвращаем закрытый ключ аккаунта в виде байтов (private_key = account.key.hex())
  8. Финал - вывод address, private_key & mnemonic_phrase в консоль

p.s - https://eth-account.readthedocs.io/en/stable/eth_account.html

метод create_with_mnemonic() является экспериментальным и не прошёл аудита

используем его с осторожностью и только в целях разработки или тестирования

справка

  • Кортеж - неизменяемая последовательность элементов. Он похож на список, но в отличие от списка, кортеж нельзя изменять после его создания: добавлять, удалять или изменять элементы (в нашем случае кортеж = сид-фраза, при ее изменении доступ к кошельку теряется)
  • .hex(): Преобразует байтовое представление закрытого ключа в строку в шестнадцатеричном формате. Закрытый ключ используется для подписания транзакций и должен храниться в безопасности.

Финал:

Для создания кошелька библиотека web3.py не обязательна.

Мы можем использовать только библиотеку eth_account.

Однако, если необходимо взаимодействовать с сетью Ethereum (проверять баланс или отправлять транзакции), тут web3.py необходим

Всем спасибо за прочтение!

Все обновления по блокчейн-разработке в моем Telegram-Канале

t.me/code_vartcall

14.01.2025

by vartcall