我编写了一个智能合约函数,它使用由下面给出的不同参数组成的solidity
function addDevice(address _address, string _deviceType, string _deviceName, string _minerID, string _deviceID) public
{
DeviceData storage device = devices[_address];
device.deviceType = _deviceType;
device.deviceName = _deviceName;
device.minerID = _minerID;
device.deviceID = _deviceID;
devicesAddresses.push(_address) -1;
}
我使用web3.py调用这个函数,使用给定的命令
D_Address = input("Device Address ").encode()
D_Type = input("Device Type ")
D_Name = input("Device Name ")
M_ID = input("Miner ID ")
D_ID = input("Device ID ")
tx_hash = contract_instance.functions.addDevice(D_Address,D_Type,D_Name,M_ID,D_ID).transact()
tx_receipt = web3.eth.waitForTransactionReceipt(tx_hash)
在REMIX中,这个智能合约工作正常,但是当我运行文件时,它显示以下错误
找到1个名为addDevice
:['addDevice(address,string,string,string,string)']的函数
由于没有匹配的参数类型,函数调用失败。你知道吗
删除
.encode()
,因为您应该为地址字段传入一个字符串。你知道吗如果还是不行就告诉我!你知道吗
相关问题 更多 >
编程相关推荐