Creando el contrato B a partir del contrato A, pero la dirección del contrato B muestra un contrato de tipo A en Remix

function _createB() public {
    address newB = new B();
    newB(newB); //Event logs the address of contract B
}

Cuando copio y pego la dirección que se registra desde el evento newB en el "contrato de carga en la dirección" en Remix, obtengo otro contrato de tipo A.

¿Cómo podría crear contratos separados de tipo B?

Respuestas (1)

Al intentar obtener un contrato de un tipo particular por "en la dirección", ese contrato debe seleccionarse en el menú desplegable.

Lo que sucede en tu caso es que obtienes el contrato de tipo "A" pero seguirá comportándose como contrato de tipo "B".

Qué hace "en la dirección":

Simplemente proporciona una interfaz para el contrato que se selecciona y que se espera que se implemente en la dirección dada.

  • Encuentra qué contrato se selecciona para la operación de "en la dirección"
  • Luego encuentra la interfaz (ABI) de ese contrato a partir del código que está escrito en el archivo actual.
  • Genera hashes de funciones.
  • Muestra cada nombre de función.
  • Cada vez que se llama a una función, los datos de la transacción se preparan de acuerdo con el hash de la función y se envían al contrato.

Ahora bien, si el contrato tiene la capacidad de responder a esos datos, es decir, llevar a cabo esa función, obtendrá la salida correcta de acuerdo con el contrato en esa dirección.

Nota: Esto debe usarse con precaución porque si no se usa correctamente, podría terminar interactuando con otro contrato.