Intento algo como esto:
Niño.sol
pragma solidity ^0.4.6;
contract Child {
address owner;
function Child() {
owner = msg.sender;
}
}
padre.sol
pragma solidity ^0.4.6;
import "./Child.sol"
contract Parent {
address owner;
function Parent(){
owner = msg.sender;
}
function createChild() {
Child child = new Child()
}
}
Luego implemento Parent.sol. Puedo encontrar esta transacción en etherscan. Luego llamo a la función createChild(), pero el contrato no se implementa porque no puedo encontrar ninguna transacción nueva.
Entonces la pregunta es, ¿cómo debo hacerlo bien? Gracias.
¿O debería simplemente archivar todas las direcciones de los contratos de niños en el contrato de padres? Entonces el contrato de los padres puede ser muy pesado.
Es posible que no esté viendo el contrato Child porque está en una transacción interna. Mire debajo de la pestaña "Transacción interna" en etherscan (en la página del contrato principal) para verificar.
En mi opinión, es un buen comienzo, pero Parent dice algo sobre el niño, por lo que no es útil.
Algunas ideas.
pragma solidity ^0.4.6;
contract Child {
address public owner; // public, so you can see it when you find the child
function Child() {
owner = msg.sender;
}
}
y ...
pragma solidity ^0.4.6;
import "./Child.sol"
contract Parent {
address owner;
address[] public children; // public, list, get a child address at row #
event LogCreatedChild(address child); // maybe listen for events
function Parent(){
owner = msg.sender;
}
function createChild() {
Child child = new Child();
LogChildCreated(child); // emit an event - another way to monitor this
children.push(child); // you can use the getter to fetch child addresses
}
}
Acabo de hacer eso aquí mismo en SE, así que espero no haberte equivocado en la sintaxis.
Espero eso ayude.
porfavorito