Проведение транзакций 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).