Ich versuche so etwas:
Kind.sol
pragma solidity ^0.4.6;
contract Child {
address owner;
function Child() {
owner = msg.sender;
}
}
Parent.sol
pragma solidity ^0.4.6;
import "./Child.sol"
contract Parent {
address owner;
function Parent(){
owner = msg.sender;
}
function createChild() {
Child child = new Child()
}
}
Dann stelle ich Parent.sol bereit. Ich kann diese Transaktion auf Etherscan finden. Dann rufe ich die Funktion createChild() auf, aber der Vertrag wird nicht bereitgestellt, weil ich keine neuen Transaktionen finden kann.
Die Frage ist also, wie mache ich es richtig. Vielen Dank.
Oder soll ich einfach alle Adressen der Child-Verträge im Parent-Vertrag archivieren? Dann kann der Elternvertrag wirklich schwer sein.
Es ist möglich, dass Sie den untergeordneten Vertrag nicht sehen, weil er sich in einer internen Transaktion befindet. Sehen Sie unter der Registerkarte „Interne Transaktion“ auf Etherscan (auf der Seite des übergeordneten Vertrags) nach, um dies zu überprüfen.
Meiner Meinung nach ist das ein guter Anfang, aber Eltern sagt nichts über das Kind aus, also ist es nicht nützlich.
Einige Ideen.
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;
}
}
und ...
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
}
}
Ich habe das gerade hier in SE gemacht, also hoffe ich, dass ich Ihnen nicht die Syntax vermasselt habe.
Ich hoffe es hilft.
Vorlieb