繁体   English   中英

使用Python Web3.py调用Solidity Function

[英]Calling Solidity Function using Python Web3.py

我编写了一个智能合约功能,使用了由以下给出的不同参数组成的实体

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() ,因为您应该为地址字段输入一个字符串。

让我知道它是否仍然无效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM