Проведение транзакций Ethereum в приложении Django с помощью web3.py

Я разрабатываю свое первое в жизни приложение для блокчейна, и я наткнулся на эту библиотеку Django под названием django-web3-auth

Это позволяет пользователям регистрироваться / входить в систему, используя кошелек Ethereum.

Теперь я хочу иметь возможность осуществлять транзакции с помощью моих приложений, и для этого я написал следующий код, используя библиотеку web3 и ganache:

import json
from web3 import Web3

ganache_url = 'http://127.0.0.1:7545'
web3 = Web3(Web3.HTTPProvider(ganache_url))

print(web3.isConnected())


#build a transaction
#sign and send transaction
#return transaction hash
def transaction(account1, account2, privatekey, amount):
    nonce = web3.eth.getTransactionCount(account1)
    #build a transaction
    transX = {
         'nonce' : nonce,
         'to': account2,
         'value':web3.toWei(amount,'ether'),
         'gas': 2000000,
         'gasPrice': web3.toWei('50', 'gwei')
    }
    #sign and send transaction
    signedTransX = web3.eth.account.signTransaction(transX, privatekey)
    hashTransX = web3.eth.sendRawTransaction(signedTransX.rawTransaction)
    #return transaction hash
    return web3.toHex(hashTransX)
     

def checkBalance(account1):
    balance  = web3.eth.getBalance(account1)
    return(web3.fromWei(balance, 'ether'))




print(checkBalance('<address>'))

Как вы видите, мне нужен закрытый ключ для завершения транзакции. Просить приватный ключ в моем приложении не представляется правильным по очевидным причинам. Поскольку Django-web3-auth аутентифицирует пользователя по его кошельку Ethereum, есть ли способ подписать транзакцию вошедшего пользователя, когда он отправляет эфир на другой счет?

Кроме того, есть ли способ запустить ganache на моем сервере развертывания (как replit или pythonanywhere).

Вернуться на верх