Intenté la interacción del contrato usando el siguiente código:
contract C2 {
function aFunction(uint aParameter) returns(uint) {
return (10);
}
}
contract C1 {
function call (uint aParameter) returns(uint){
C2 c2 = new C2();
return c2.aFunction(aParameter);
}
}
Funcionó para mí. Luego cambié return c2.aFunction(aParameter);
a return c2;
Me devolvió una dirección (supongamos que c2_addr). Ejecuté eth.getCode(c2_addr);
Simplemente devolvió "0x". Ahora tengo las siguientes preguntas:
sendTransaction()
. Entonces, cómo C2 c2 = new C2();
se ejecuta la línea..call()
y por qué no hay un código de bytes en la cadena de bloques con respecto a este contrato. Y si C2 no está minado, cómo es posible invocar su función.¿Que cliente estás usando?
reemplazando
return c2.aFunction(aParameter);
con
return c2;
en el contrato C1 no se compila ya que es un tipo de objeto devuelto por un método declarado para devolver enteros sin signo ( uint ).
A partir de ahora, puede devolver objetos solo dentro de las llamadas a funciones internas y no a un cliente remoto.
Editar:
He ejecutado el código. La "dirección" que está obteniendo no es una dirección, sino una conversión a bytes de la instancia del contrato c2 .
Aniket
Aniket
Sebí
Aniket
Sebí
Sebí
Aniket
Sebí