¿Es posible usar un modificador de un contrato diferente?

¿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..
    }


}

Respuestas (3)

Los modificadores tienen un alcance similar a las funciones internas. La única forma de acceder supermoddesde con2es si con2hereda 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.

El problema aquí es que quiero usar un modificador de un contrato que ya existe. si uso la herencia, creo un nuevo con1 según tengo entendido. Pero gracias por la ayuda.
Pregunta diferente. Entonces no. Imposible.

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