Я столкнулся с проблемой царапин на голове.Я создал два контракта UserRole с картой имени пользователя и базовым контрактом с модификатором, который проверяет, является ли роль <10. </p>
Итак, сначала я развернул первый контракт UserRole, а затем вызвалФункция set с параметрами _username = "jamesbond" и _role = 7.
После завершения транзакции я вызываю getRole с передачей _username = "jamesbond" и возвращаюсь 7.
СейчасЯ развертываю Base и передаю адрес контракта UserRole, который я развернул ранее.Я вызываю функцию testModifier и передаю ее _username = "jamesbond".Я ожидаю, что я получу значение 7 обратно.
Сначала я проверял это на http://remix.ethereum.org.Тогда я попробовал это на кворуме и паритете.На ремиксе он работает как положено, но как при кворуме, так и при паритете я не получаю никаких значений обратно.
Я не уверен, что делаю неправильно.
pragma solidity ^0.4.24;
contract UserRole {
address owner;
mapping (string => uint8) userRoles;
constructor()
public
{
owner = msg.sender;
}
function set(string _username, uint8 _role)
public
returns (bool sucesss)
{
userRoles[_username] = _role;
return true;
}
function getRole(string _username)
public
view
returns (uint8 _role)
{
return userRoles[_username];
}
}
contract Base {
address owner;
UserRole userRole;
address public userRoleAddress;
constructor(address _t)
public
{
owner = msg.sender;
userRoleAddress = _t;
userRole = UserRole(_t);
}
modifier isAuthorized(string _username) {
uint8 role = 5;
require(role < 10);
_;
}
function testModifier(string _username)
public
isAuthorized(_username)
view
returns (uint8 result)
{
return userRole.getRole(_username);
}
}