Dieses sehr einfache Fabrikmuster funktioniert aus irgendeinem Grund nicht auf Rinkeby. Mit Trüffel v3.4.5
und Geth 1.7.3-stable
. Hier die Verträge:
pragma solidity ^0.4.11;
contract Factory {
address[] public pizzas;
function Factory() {
// constructor
}
function cookPizza() returns (address _pizza) {
Pizza newPizza = new Pizza();
pizzas.push(newPizza);
return newPizza;
}
function getPizzas() public constant returns (address[]) {
return pizzas;
}
}
contract Pizza {
function Pizza() {
// constructor
}
}
Wenn ich auf ganache-cli bereitstelle und ausführe:
truffle(development)> Factory.deployed().then(function(instance) { factory = instance})
undefined
truffle(development)> factory.cookPizza()
truffle(development)> factory.getPizzas()
[ '0xc4f8cf2d5a37e74981fffdab1b2108931822359a' ]
Es erstellt eine neue Adresse, hängt sie an und getPizzas
zeigt mir die Adressen an. Wenn ich auf rinkeby mit folgendem einsetze:
Running migration: 1_initial_migration.js
Deploying Migrations...
Migrations: 0x42e40188763019dd09a6166b76805d329bd71111
Saving successful migration to network...
Saving artifacts...
Running migration: 2_deploy_contracts.js
Deploying Factory...
Factory: 0xb9d60d9ddf16e3af3bce774a1e9286ecf5614166
Saving successful migration to network...
Saving artifacts...
In der Konsole:
> sender = eth.accounts[0]
> abi = "abi"
> contract = eth.contract(abi)
> factory = contract.at("0xb9d60d9ddf16e3af3bce774a1e9286ecf5614166")
> factory.cookPizza({from:sender})
"0xf0ce6f4c0a9665f593d3d837eca4977b85d011dcb3620bf3a2428d25225db967"
> factory.getPizzas()
[]
Gar nichts. Was könnte dies verursachen?
Ich habe Ihre Transaktion überprüft und sie ist fehlgeschlagen. https://rinkeby.etherscan.io/tx/0xf0ce6f4c0a9665f593d3d837eca4977b85d011dcb3620bf3a2428d25225db967
Deshalb gibt getPizzas() ein leeres Array zurück.
Fügen Sie Guthaben zu Konto[0] hinzu, entsperren Sie es und versuchen Sie es erneut. Es sollte funktionieren.
truffle.js
Datei hat folgendes: rinkeby: { host: "localhost", port: 8545, network_id: "4", from: "0xfc7846d06fab273c62cda0d29eac0936a22eeca4", gas: 2000000
Es sollte funktionieren..
Luis Soares
Michael O'Rourke
Luis Soares
Michael O'Rourke
geth attach ipc:/Users/mokn1/Library/Ethereum/rinkeby/geth.ipc
Luis Soares
Michael O'Rourke
geth --rinkeby --rpc --rpcapi web3,db,personal,eth,net