Quiero hacer lo siguiente:
contract Base {
bool public active;
modifier canSetMetadata() {
require(active == false);
_;
}
}
contract BaseWithMetadataControl is Base {
address public metadataControl;
modifier canSetMetadata() {
if(msg.sender != metadataControl) {
super.canSetMetadata();
}
_;
}
}
Entonces, la clase secundaria debe llamar al modificador de clase principal. No parece ser posible, pero no quiero duplicar el código modificador porque es probable que cambie...
Podría anular una función interna que implementa el control
pragma solidity 0.4.24;
contract Base {
bool public active;
modifier canSetMetadata() {
require(canSetMetadata_());
_;
}
function canSetMetadata_() internal view returns (bool) {
return (active == false);
}
}
contract BaseWithMetadataControl is Base {
address public metadataControl;
function canSetMetadata_() internal view returns (bool) {
if(msg.sender != metadataControl) {
return super.canSetMetadata_();
} else {
return true;
}
}
}
CodificandoTuVida