Создание EVM кошельков с помощью библиотеки Web3 на Python

Содержание:

Как использовать код из статьи

Как запускать файлы .py и .ipynb написано в инструкции.

Скачайте репозиторий с Гитхаба. В нем будет:

  • Файлы .py - 3 варианта создания кошельков
  • create-evm-wallets-var-1.py
  • create-evm-wallets-var-2.py
  • create-evm-wallets-var-3.py
  • Таблицы Excel и фалы TXT, которые получаются в результате работы каждого скрипта. Выложены для примера.
  • Файл create-evm-wallets.ipynb - весь код (все варианты) в формате jupyter-notebook.

Вариант 1 - создание приватных ключей

create-evm-wallets-var-1.py. В этом варианте для каждого аккаунта будут созданы публичные адреса и приватные ключи.

Импорт библиотек

from web3 import Web3
import pandas as pd

Сколько аккаунтов генерировать

ACCOUNTS_QUANTITY = 10

Подключение

connection = Web3()

Создание аккаунтов, запись публичных адресов и приватных ключей в excel или txt

В цикле создается аккаунт connection.eth.account.create() и записывается в переменную account. При каждой итерации создается словарь с публичным адресом address и приватным ключом private_key, словарь записывается в список list_of_dicts:

list_of_dicts = []
for number in range(ACCOUNTS_QUANTITY):
    account = connection.eth.account.create()
    address = account.address
    private_key = account.key.hex()
    print('Account', number+1, '\n',
          'Public:', address, '\n',
          'Private_key:', private_key, '\n',
          '--------------------------')
    dictionary = dict()
    dictionary['address'] = address
    dictionary['private_key'] = private_key
    list_of_dicts.append(dictionary)
Процесс отображается в терминале:

Запись в Excel

Из списка list_of_dicts создается датафрейм:
df = pd.DataFrame.from_dict(list_of_dicts)
Экспорт датафрейма в Excel:
writer_kernel = pd.ExcelWriter('ready_evm_accounts_var_1.xlsx', engine='xlsxwriter')
df.to_excel(writer_kernel, index=False)
writer_kernel.close()
Полученный результат в экселе:

Запись в txt

Адрес и приватник записываются через запятую с новой строки:
with open('ready_evm_accounts_var_1.txt', 'w') as file:
    for d in list_of_dicts:
        file.write(f"{d['address']},{d['private_key']}\n")
Полученный результат в txt:

Вариант 2 - создание сид-фраз, приватных ключей и публичных адресов

create-evm-wallets-var-2.py. В этом варианте для каждого аккаунта будут созданы сид-фразы, публичные адреса и приватные ключи.

Импорт библиотек

from web3 import Web3
import pandas as pd

Сколько аккаунтов генерировать

ACCOUNTS_QUANTITY = 10

Подключение

connection = Web3()

Создание аккаунтов, запись сид-фраз, публичных адресов и приватных ключей в excel или txt

connection.eth.account.enable_unaudited_hdwallet_features()
list_of_dicts = []
for number in range(ACCOUNTS_QUANTITY):
    account = connection.eth.account.create_with_mnemonic()
    seed_phrase = account[1]
    address = account[0].address
    private_key = account[0].key.hex()
    print('Account', number+1, '\n',
          'Seed:', seed_phrase, '\n',
          'Public:', address, '\n',
          'Private_key:', private_key, '\n',
          '--------------------------')
    dictionary = dict()
    dictionary['seed_phrase'] = seed_phrase
    dictionary['address'] = address
    dictionary['private_key'] = private_key
    list_of_dicts.append(dictionary)
Процесс в терминале:

Запись в Excel

Из списка list_of_dicts создается датафрейм:
df = pd.DataFrame.from_dict(list_of_dicts)
Экспорт датафрейма в Excel:
writer_kernel = pd.ExcelWriter('ready_evm_accounts_var_2.xlsx', engine='xlsxwriter')
df.to_excel(writer_kernel, index=False)
writer_kernel.close()
Полученный результат в экселе:

Запись в txt

Сид-фраза, адрес и приватник записываются через запятую, каждый блок отделен точкой с запятой:
with open('ready_evm_accounts_var_2.txt', 'w') as file:
    for d in list_of_dicts:
        file.write(f"{d['seed_phrase']},{d['address']},{d['private_key']};\n")
Результат в txt:

Вариант 3 - создание 1 сид-фразы и генерация из нее адресов и приватников

create-evm-wallets-var-3.py. В этом варианте создается 1 сид-фраза, а из нее генерируются публичные адреса и приватные ключи.

Импорт библиотек

from web3 import Web3
import pandas as pd

Сколько аккаунтов генерировать

ACCOUNTS_QUANTITY = 10

Подключение

connection = Web3()

Создание аккаунтов, запись сид-фразы, публичных адресов и приватных ключей в excel или txt

connection.eth.account.enable_unaudited_hdwallet_features()
Создание сид-фразы:
mnemonic = connection.eth.account.create_with_mnemonic()[1]
Генерация кошельков из сид-фразы:
list_of_dicts = []
for number in range(ACCOUNTS_QUANTITY):
    account = connection.eth.account.from_mnemonic(mnemonic, 
                                                   account_path=f"m/44'/60'/0'/0/{number}")
    address = account.address
    private_key = account.key.hex()
    print('Account', number+1, '\n',
          'Public:', address, '\n',
          'Private_key:', private_key, '\n',
          '--------------------------')
    dictionary = dict()
    dictionary['address'] = address
    dictionary['private_key'] = private_key
    list_of_dicts.append(dictionary)
Процесс в терминале:

Запись в Excel

Из списка list_of_dicts создается датафрейм:
df = pd.DataFrame.from_dict(list_of_dicts)
Экспорт датафрейма в Excel:
writer_kernel = pd.ExcelWriter('ready_evm_accounts_var_3.xlsx', engine='xlsxwriter')
df.to_excel(writer_kernel, index=False)
writer_kernel.close()

Запись в txt

Адрес и приватник записываются через запятую, каждый блок отделен точкой с запятой:
with open('ready_evm_accounts_var_3.txt', 'w') as file:
    for d in list_of_dicts:
        file.write(f"{d['address']},{d['private_key']};\n")

Другой вариант экспорта аккаунтов с одной сид-фразой

Запись в Excel

Из списка list_of_dicts создается датафрейм:
df = pd.DataFrame.from_dict(list_of_dicts)
Добавляется столбец, в котором записана общая для всех аккаунтов сид-фраза:
df['seed'] = mnemonic
Создается группировка:
pivot_df = df.pivot_table(index=['seed', 'address', 'private_key'])
Экспорт датафрейма в Excel:
writer_kernel = pd.ExcelWriter('ready_evm_accounts_var_3_global_seed.xlsx', engine='xlsxwriter')
pivot_df.to_excel(writer_kernel)
writer_kernel.close()
Результат в экселе:

Запись в txt

Записывается сид-фраза, отделяется линией. Адрес и приватник записываются через запятую, каждый блок отделен точкой с запятой:
with open('ready_evm_accounts_var_3_global_seed.txt', 'w') as file:
    file.write(f'{mnemonic}, \n --------------- \n \n')
    for d in list_of_dicts:
        file.write(f"{d['address']},{d['private_key']};\n")
Результат в txt:
# Теги

Пишу статьи с Python кодом для автоматизации крипты. Телеграм - @rukidablkliki

© Crypto-Py.com