es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“modificador desconocido: virtual” y “modificador desconocido: override” al llamar a new ethers.Contract en el constructor de la clase.

Al instanciar un nuevo ethers.Contract en el constructor de la clase, obtengo esto para cada declaración:

modificador desconocido: virtual
modificador desconocido: override

No estoy seguro de qué significa esto, he intentado investigar cómo deshacerme de esto pero sin éxito. Soy muy nuevo en Javascript y Node.js. No interrumpe el programa de ninguna manera, al parecer, ya que el .exe se ejecuta sin problemas y sin errores además de este mensaje cada vez que se llama a new ethers.Contract en el constructor de la clase. Solo quiero saber por qué aparece este mensaje.

El código donde ocurre y los mensajes:

class pair{
    constructor(token0, token1, address){
        this._token0 = web3.utils.toChecksumAddress(token0);
        this._token1 = web3.utils.toChecksumAddress(token1);
        this._address = web3.utils.toChecksumAddress(address);
        this._pair_contract = new ethers.Contract(
            this._address,
            pair_abi_template,
            account
        );
        this._token0contract = new ethers.Contract(
            this._token0,
            abi_template,
            account
        );
        this._token1contract = new ethers.Contract(
            this._token1,
            abi_template,
            account
        );
    }
}

Una nueva instancia de clase se agrega a un array que se llama mediante un evento de suscripción de la siguiente manera:

let pair_array = [];
async function init(){
    let query = new Moralis.Query('PairCreatedEvents');
    let subscription = await query.subscribe();
    subscription.on('create', pair_created);// Call Pair Created Function
}
pair_created = async(p_event) => {
    pair_array.push(new pair(p_event.get('token0'), p_event.get('token1'), p_event.get('pair')));
}

El mensaje:

modificador desconocido: virtual
modificador desconocido: override
modificador desconocido: virtual
modificador desconocido: override
modificador desconocido: virtual
modificador desconocido: override
modificador desconocido: virtual
modificador desconocido: override 
Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “unknown modifier: virtual” y “unknown modifier: override” indica que podría haber algún problema relacionado con la versión de Solidity que se utilizó para escribir los contratos inteligentes o algún error de sintaxis en el código.

    Una solución que puedes intentar es actualizar la versión de Solidity en el contrato inteligente y comprobar si eso resuelve el problema. Otra cosa que puedes intentar es verificar si está instalada la versión correcta de la biblioteca ethers.js y si estás utilizando la sintaxis correcta para las llamadas a las funciones.

    También es posible que los mensajes de error estén relacionados con el uso de la palabra clave override, que es una característica de sintaxis introducida en Solidity 0.6.0. Si estás utilizando una versión anterior de Solidity, es posible que necesites eliminar o reemplazar cualquier uso de la palabra clave override.

    Para investigar más a fondo el problema, también puedes intentar ejecutar el código con un compilador de Solidity que admita la versión de Solidity utilizada en tus contratos y ver si eso ayuda a identificar el problema.

    En general, es difícil identificar la causa exacta del mensaje de error sin más información sobre la versión de Solidity y la biblioteca ethers.js que se está utilizando y el resto del código base.

Comments are closed.