Estoy tratando de establecer una cadena y recibirla de mi contrato.
este es mi codigo
import web3
import json
from web3 import Web3
def main():
w3 = Web3(Web3.HTTPProvider("http://localhost:8545"))
w3.eth.defaultAccount = w3.eth.accounts[0]
print(w3.eth.defaultAccount)
with open('abi', 'r') as abi_definition:
abi = json.load(abi_definition)
contract = w3.eth.contract(address=w3.toChecksumAddress('0x82A978B3f5962A5b0957d9ee9eEf472EE55B42F1'),abi=abi)
contract.constructor().transact()
contract.functions.storeID('yes').call()
get = contract.functions.getID().call()
print(get)
if __name__ == '__main__':
main()
Estoy recibiendo el siguiente error
Traceback (most recent call last):
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/web3/contract.py", line 1214, in call_contract_function
output_data = decode_abi(output_types, return_data)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_abi/abi.py", line 63, in decode_abi
return decoder(stream)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 99, in __call__
return self.decode(stream)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_utils/functional.py", line 22, in inner
return callback(fn(*args, **kwargs))
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 135, in decode
yield HeadTailDecoder.as_decoder(tail_decoder=decoder)(stream)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 99, in __call__
return self.decode(stream)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 113, in decode
start_pos = decode_uint_256(stream)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 99, in __call__
return self.decode(stream)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 162, in decode
raw_data = cls.read_data_from_stream(stream)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/eth_abi/decoding.py", line 244, in read_data_from_stream
len(data),
eth_abi.exceptions.InsufficientDataBytes: Tried to read 32 bytes. Only got 0 bytes
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/sapan/PycharmProjects/GlobalCA/Node.py", line 18, in <module>
main()
File "/home/sapan/PycharmProjects/GlobalCA/Node.py", line 14, in main
get = contract.functions.getID().call()
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/web3/contract.py", line 979, in call
**self.kwargs)
File "/home/sapan/PycharmProjects/GlobalCA/venv/lib/python3.5/site-packages/web3/contract.py", line 1236, in call_contract_function
raise BadFunctionCallOutput(msg) from e
web3.exceptions.BadFunctionCallOutput: Could not transact with/call contract function, is contract deployed correctly and chain synced?
Esta línea podría estar equivocada:
contrato.funciones.storeID('sí').llamada()
si está cambiando el estado, como sugiere el nombre, debería ser
contrato.funciones.storeID('sí').transact()
usuario19510
savia13