From 801cc3fc273b5ee974a1c73667e86068a381428c Mon Sep 17 00:00:00 2001 From: Maksim Harbacheuski Date: Thu, 17 Jul 2025 11:26:38 +0300 Subject: [PATCH] remove wallet --- wallet.py | 51 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/wallet.py b/wallet.py index d37648a..cfe8331 100644 --- a/wallet.py +++ b/wallet.py @@ -3,8 +3,6 @@ import os import json import getpass from pathlib import Path - -import rich from web3 import Web3 from Crypto.Cipher import AES from Crypto.Protocol.KDF import PBKDF2 @@ -48,7 +46,7 @@ def connect_to_network(): rpc_url = Prompt.ask("[bold cyan]Введите RPC URL[/]", default="https://ethereum-rpc.publicnode.com") web3 = Web3(Web3.HTTPProvider(rpc_url)) if web3.is_connected(): - print("[green]Успешное подключение к сети Ethereum[/]") + print("[green1]Подключено![/]") else: print("[red]Ошибка подключения к сети![/]") web3 = None @@ -67,6 +65,23 @@ def import_wallet(): save_wallet(account) +def delete_wallet(): + global selected_wallet + + address = Prompt.ask("[red1]При удалении кошелька доступ к средствам будет потерян, введите номер кошелька для подтверждения операции") + + if address != selected_wallet['address']: + print("[red]Операция отменена") + return + + file_path = os.path.join(WALLETS_DIR, selected_wallet['address']+'.json') + if os.path.exists(file_path): + os.remove(file_path) + + selected_wallet = None + print(f"[green1]Кошелек удален[/]") + + def save_wallet(account): print("[bold cyan]Введите пароль для шифрования кошелька: [/]", end='') password = getpass.getpass(prompt="") @@ -77,7 +92,7 @@ def save_wallet(account): with open(filename, 'w') as f: json.dump({"address": account.address, "data": encrypted}, f) - print(f"[green]Кошелек сохранен: {account.address}[/]") + print(f"[green1]Кошелек сохранен: {account.address}[/]") def select_wallet(): @@ -88,7 +103,7 @@ def select_wallet(): return for i, fname in enumerate(files): - print(f"[orange1][{i}] {Path(fname).stem}[/]") + print(f"[orange1][{i+1}] {Path(fname).stem}[/]") try: choice = int(Prompt.ask("[bold cyan]Выберите номер кошелька[/]")) @@ -96,9 +111,8 @@ def select_wallet(): print("[red]Неверный номер.[/]") return - with open(os.path.join(WALLETS_DIR, files[choice])) as f: + with open(os.path.join(WALLETS_DIR, files[choice-1])) as f: selected_wallet = json.load(f) - print(f"[green]Кошелек выбран: {selected_wallet['address']}[/]") def get_balance(): @@ -111,7 +125,7 @@ def get_balance(): def send_transaction(): if not selected_wallet: - print("[red]Кошелек не выбран.[/]") + print("[red1]Кошелек не выбран.[/]") return to = Prompt.ask("[bold cyan]Введите адрес получателя[/]") @@ -141,16 +155,16 @@ def send_transaction(): private_key = decrypt_wallet(selected_wallet['data'], password) del password except: - print("[red]Неверный пароль![/]") + print("[red1]Неверный пароль![/]") return try: signed = web3.eth.account.sign_transaction(tx, private_key) del private_key tx_hash = web3.eth.send_raw_transaction(signed.raw_transaction) - print(f"[green]Транзакция отправлена! TX Hash: {tx_hash.hex()}[/]") + print(f"[green1]Транзакция отправлена! TX Hash: {tx_hash.hex()}[/]") except Exception as error: - print(f"[red]{error.message}[/]") + print(f"[red1]{error.message}[/]") finally: gc.collect() @@ -164,6 +178,7 @@ def main(): b. Просмотр баланса s. Отправка средств i. Импорт существующего кошелька + d. Удаление кошелька q. Выход """) @@ -179,18 +194,24 @@ def main(): if web3 and selected_wallet: get_balance() else: - print("[red]Необходимо подключиться к сети и выбрать кошелек[/]") + print("[red1]Необходимо подключиться к сети и выбрать кошелек[/]") elif choice == 's': if web3 and selected_wallet: send_transaction() else: - print("[red]Необходимо подключиться к сети и выбрать кошелек[/]") + print("[red1]Необходимо подключиться к сети и выбрать кошелек[/]") elif choice == 'i': import_wallet() + elif choice == 'd': + if not selected_wallet: + select_wallet() + + if selected_wallet: + delete_wallet() + else: + print("[red1]Необходимо выбрать кошелек[/]") elif choice == 'q': break - else: - print("[red]Неверный выбор[/]") if __name__ == "__main__":