¿Hay alguna forma de usar modificadores de un contrato diferente? Mi intento no funcionó.
contract con1{
modifier supermod(uint _value){
require(_value == 1);
_;
}
}
contract con2{
con1 public contract1;
function setCon1Address(address _address)public{
contract1 = con1(_address);
}
function test() contract1.supermod(uint _value){
..stuff..
}
}
Los modificadores tienen un alcance similar a las funciones internas. La única forma de acceder supermod
desde con2
es si con2
hereda decon1
Cambiar a herencia.
contract con2 is con1 {
Eliminé las partes que no necesita y jugué con la función para obtener la entrada para el modificador.
contract con1{
modifier supermod(uint _value){
require(_value == 1);
_;
}
}
contract con2 is con1 {
function test(uint value) supermod(value){
// this will happen if value == 1
}
}
Espero eso ayude.
la única forma de usar otro modificador es heredar ese contrato
Los modificadores son propiedades heredables de los contratos y pueden ser anulados por contratos derivados, pero solo si están marcados como virtuales. Más información
Lomo
Rob Hitchens