У меня есть контракт, развернутый с трюфелем в локальной тестовой сети testrpc. Этот контракт имеет функцию, которая развертывает новый контракт.
Этот новый контракт я могу проверить по адресу в консоли testrpc примерно так:
Transaction: 0x85a7f17406536dd9618c6647d7d0595a2cee7e7e065ffc08a99e58aa5473ab71
Contract created: 0x1104c5adf4476aec333ee687c725eacc8d417a7c
Gas usage: 2642382
Block Number: 7
Block Time: Mon Feb 26 2018 19:27:25 GMT+0900 (JST)
Но как я могу использовать этот новый контракт в консоли трюфеля для взаимодействия? Файл json контракта (ABI и т. д.) был создан в build
каталоге трюфеля, но поскольку контракт не перенесен, я не могу использовать эту команду:
MyNewContract.deployed().then(_app => { app = _app })
app.showMeTheMoney()
Кто-нибудь знает, как в консоли трюфеля я могу взаимодействовать с контрактами, развернутыми через другие контракты?
Вы можете вручную изменить файл контракта в каталоге сборки, чтобы включить адрес, но в конечном итоге он будет перезаписан, поэтому это не лучший способ сделать это.
Более того deployed()
, предназначен для использования в смысле синглтона. Если ваш контракт не является одноэлементным, вам не следует запрашивать его через deployed()
.
Если у вас есть следующее созвездие: контракт A (singleton) создает экземпляр контракта B, тогда вы можете сохранить ссылку(и) на B в A и запросить ее из JavaScript.
Пример
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()})
Если B должен быть синглтоном, вам нужно изменить свой сценарий миграции и развернуть его следующим образом.
deployer.deploy(A);
deployer.deploy(B);
Затем вы сможете запросить его через B.deployed()
.
Кто-нибудь знает, как в консоли трюфеля я могу взаимодействовать с контрактами, развернутыми через другие контракты?
Чтобы увидеть список контрактов, уже развернутых в сети Truffle Develop, работает эта команда:
truffle(develop)> networks [--clean]
Network: develop (id: 4447)
Migrations: 0xfb88de099e13c3ed21f80a7a1e49f8caecf10df6
MyNewContract: 0xf204a4ef082f5c04bb89f7d5e6568b796096735a
месквиб
ивикаа
месквиб
ивикаа
месквиб