Ich habe einen Vertrag, der mit Truffle in einem lokalen testrpc-Testnet bereitgestellt wird. Dieser Vertrag hat eine Funktion, die einen neuen Vertrag bereitstellt.
Bei diesem neuen Vertrag kann ich die Adresse in der testrpc-Konsole ähnlich wie folgt überprüfen:
Transaction: 0x85a7f17406536dd9618c6647d7d0595a2cee7e7e065ffc08a99e58aa5473ab71
Contract created: 0x1104c5adf4476aec333ee687c725eacc8d417a7c
Gas usage: 2642382
Block Number: 7
Block Time: Mon Feb 26 2018 19:27:25 GMT+0900 (JST)
Aber wie kann ich mit diesem neuen Vertrag in der Trüffelkonsole interagieren? Die JSON-Datei des Vertrags (die ABI usw.) wurde im Truffle- build
Verzeichnis erstellt, aber da der Vertrag nicht migriert wird, kann ich diesen Befehl nicht verwenden:
MyNewContract.deployed().then(_app => { app = _app })
app.showMeTheMoney()
Weiß jemand, wie ich in der Truffle-Konsole mit Verträgen interagieren kann, die über andere Verträge bereitgestellt werden?
Sie könnten die Vertragsdatei im Build-Verzeichnis manuell ändern, um die Adresse aufzunehmen, aber sie wird schließlich überschrieben, daher ist dies keine gute Möglichkeit, dies zu tun.
Darüber hinaus deployed()
soll im Sinne eines Singletons verwendet werden. Wenn Ihr Vertrag kein Singleton ist, sollten Sie ihn nicht über abfragen deployed()
.
Wenn Sie folgende Konstellation haben: Vertrag A (Singleton) instanziiert Vertrag B, dann können Sie die Referenz(en) auf B in A speichern und von JavaScript aus abfragen.
Beispiel
contract A {
B[] public arrayOfBs;
function create() returns (B) {
B b = new B();
arrayOfBs.push(b);
return b;
}
}
deployer.deploy(A);
...
A.deployed()
.then(a => {return a.arrayOfBs(idx)})
.then(bAddr => {return B.at(b)})
.then(b => {b.showMeTheMoney()})
Wenn B ein Singleton sein soll, müssen Sie Ihr Migrationsskript ändern und wie folgt bereitstellen.
deployer.deploy(A);
deployer.deploy(B);
Dann können Sie es über abfragen B.deployed()
.
Weiß jemand, wie ich in der Truffle-Konsole mit Verträgen interagieren kann, die über andere Verträge bereitgestellt werden?
Um die Liste der bereits im Truffle Develop-Netzwerk bereitgestellten Verträge anzuzeigen, funktioniert dieser Befehl:
truffle(develop)> networks [--clean]
Network: develop (id: 4447)
Migrations: 0xfb88de099e13c3ed21f80a7a1e49f8caecf10df6
MyNewContract: 0xf204a4ef082f5c04bb89f7d5e6568b796096735a
Meskeeb
ivicaa
Meskeeb
ivicaa
Meskeeb