Транзакция никогда не добывается, используя web3.py - PullRequest
0 голосов
/ 17 сентября 2018

Я занимаюсь разработкой веб-сайта с использованием Python 3.6, Django 2.1.1, Solidity и web3.py v4. Я хочу добавить транзакцию в ropsten testnet, но транзакции никогда не подтверждаются. Вот код:

amount_in_wei = w3.toWei(questionEtherValue,'ether')
nonce=w3.eth.getTransactionCount(w3.toChecksumAddress(questionairAddress))+1

txn_dict = {
     'to': contractAddress,
     'value': amount_in_wei,
     'gas': 2000000,
     'gasPrice': w3.toWei('70', 'gwei'),
     'nonce': nonce,
     'chainId': 3
}
signed_txn = account.signTransaction(txn_dict)
txn_hash = w3.eth.sendRawTransaction(signed_txn.rawTransaction)

try:
    txn_receipt = w3.eth.waitForTransactionReceipt(txn_hash, timeout=300)
except Exception:
    return {'status': 'failed', 'error': 'timeout'}
else:
    return {'status': 'success', 'receipt': txn_receipt}

1 Ответ

0 голосов
/ 21 сентября 2018

Ах, как обнаружил @ yasaman.h, в nonce:

есть ошибочная ошибка.
# original:
nonce = w3.eth.getTransactionCount(w3.toChecksumAddress(questionairAddress)) + 1

# should be:
nonce = w3.eth.getTransactionCount(w3.toChecksumAddress(questionairAddress))

nonce транзакции должно быть равно количеству ранее отправленных транзакций. Таким образом, первая транзакция, отправленная новой учетной записью, будет иметь nonce ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...