简体   繁体   English

从应付地址到请求的字节内存的隐式转换无效。 此函数需要一个字节参数

[英]Invalid implicit conversion from address payable to bytes memory requested. This function requires a single bytes argument

function setBasicDetails(string memory _registrationNo,
                             string memory _farmerName,
                             string memory _farmAddress,
                             string memory _exporterName,
                             string memory _importerName
                             
                            ) public onlyAuthCaller returns(address) {
        
        uint tmpData = uint(keccak256(msg.sender));
        address batchNo = address(tmpData);
        
        basicDetailsData.registrationNo = _registrationNo;
        basicDetailsData.farmerName = _farmerName;
        basicDetailsData.farmAddress = _farmAddress;
        basicDetailsData.exporterName = _exporterName;
        basicDetailsData.importerName = _importerName;
        
        batchBasicDetails[batchNo] = basicDetailsData;
        
        nextAction[batchNo] = 'FARM_INSPECTION';   
        
        
        return batchNo;
    }

this is my solidity function code and i have error here's code这是我的 solidity 函数代码,这里的代码有错误

uint tmpData = uint(keccak256(msg.sender));
        address batchNo = address(tmpData);

error msg:Invalid type for argument in function call.错误消息:函数调用中的参数类型无效。 Invalid implicit conversion from address payable to bytes memory requested.从应付地址到请求的字节内存的隐式转换无效。 This function requires a single bytes argument.此函数需要一个字节参数。 Use abi.encodePacked(...) to obtain the pre-0.5.0 behaviour or abi.encode(...) to use ABI encoding.使用 abi.encodePacked(...) 获取 0.5.0 之前的行为或使用 abi.encode(...) 使用 ABI 编码。

If that is the only error in your code ()如果那是您的代码中唯一的错误 ()

keccak256(msg.sender)

keccak256 will return 32 bytes hash. keccak256将返回 32 字节散列。 but the address is 20 bytes.但地址是 20 个字节。 so instead of uint you should be using uint160所以你应该使用uint160而不是 uint

uint tmpData = uint160(keccak256(msg.sender))

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

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