def send(self, user_pk, from_address, to_address, value):
try:
User = get_user_model()
user = User.objects.get(pk=user_pk)
password = get_wallet_password(user.wallet_secret_key)
client = get_rpc_client(host=settings.ETHNODE_URL)
client.personal_unlockAccount(address=from_address, passphrase=password)
balance = client.eth_getBalance(from_address)
value = eth2wei(value)
fee = eth2wei(constants.TX_FEE)
if balance >= value:
if value > fee:
client.eth_sendTransaction(from_address=from_address,
to_address=to_address,
value=value - fee)
else:
raise ValidationError("Fee higher than 'value' itself")
else:
raise ValidationError("Not enough money")
except (ConnectionError, ConnectTimeout) as e:
raise self.retry(countdown=constants.SEND_RETRY_COUNTDOWN)
评论列表
文章目录