web3s.py
from web3 import Web3
import json
url = 'https://kovan.infura.io/v3/NODE'
web3 = Web3(Web3.HTTPProvider(url))
abi = json.loads('[{"ABI"}]')
Raw_ADDRESS = MY_ADDRESS
address = web3.toChecksumAddress(Raw_ADDRESS)
contract = web3.eth.contract(address=address,abi=ABI)
default_GasPrice = '5'
def firstMethod(Address1,publicKey,privateKey,GasPrice = default_GasPrice ) :
Address1 = web3.toChecksumAddress(Address1)
publicKey = web3.toChecksumAddress(publicKey)
if web3.isConnected() :
nonce = web3.eth.get_transaction_count(publicKey)
transaction = contract.functions.firstMethod(Address1).buildTransaction({
'from': publicKey ,
'gasPrice': web3.toWei(GasPrice, 'gwei'),
'nonce': nonce ,
})
...
web3s.py で address1 と address2 を定義すると、コードはうまく機能しますが、インポート後に別のファイル (Django-Rest ビューから) で firstMethod() を呼び出して同じ引数を渡すと、次のように返されます。
File "venv/lib/python3.8/site-packages/eth_utils/conversions.py", line 159, in hexstr_if_str
raise ValueError(
ValueError: when sending a str, it must be a hex string. Got: "'0x6e...32'"
示されているように、私はetherscanではなくinfuraを使用しています
問題はどこだ ?