Ich habe versucht, meinen Vertrag für Rinkbey bereitzustellen, aber es scheint nichts zu passieren.
Ich habe früher Verträge lokal für Ganache RPC bereitgestellt und verwendet, truffle migrate
es hat gut funktioniert, und ich konnte die Methode des bereitgestellten Vertrags problemlos aufrufen.
Danach habe ich die folgenden Zeilen in truffle.js hinzugefügt
rinkeby: {
host: "127.0.0.1", // Connect to geth on the specified
port: 8545,
from: "xxxxxxxxxxxxxxxx", // find it from geth console by typing `eth.accounts` use the first one
network_id: 4,
gas: 5000000
}
so wurde es
module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// to customize your Truffle configuration!
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
},
rinkeby: {
host: "127.0.0.1", // Connect to geth on the specified
port: 8545,
from: "xxxxxxxxxxxx", // find it from geth console by typing `eth.accounts` use the first one
network_id: 4,
gas: 5000000 // Gas limit
}
}
};
Meine migrations/1_initial_migration.js
ist wie folgt:
var Migrations = artifacts.require("./Migrations.sol");
module.exports = function(deployer) {
deployer.deploy(Migrations);
};
und contracts/Migrations.sol
lautet wie folgt:
pragma solidity ^0.4.17;
contract Migrations {
address public owner;
uint public last_completed_migration;
modifier restricted() {
if (msg.sender == owner) _;
}
function Migrations() public {
owner = msg.sender;
}
function setCompleted(uint completed) public restricted {
last_completed_migration = completed;
}
function upgrade(address new_address) public restricted {
Migrations upgraded = Migrations(new_address);
upgraded.setCompleted(last_completed_migration);
}
}
Danach habe ich die lokale Ausführung angehalten geth
und den folgenden Befehl ausgeführt, um das Konto zu entsperren und mich auf die Bereitstellung des Vertrags für rinkbey vorzubereiten
geth --rinkeby --rpc --rpcapi db,eth,net,web3,personal --unlock="xxxxxxxxxxxxxxxx"
dann den folgenden Befehl in einem anderen Terminalfenster ausgeführt
truffle compile; truffle migrate --network rinkeby
und bekam diese Ausgabe
Using network 'rinkeby'.
Network up to date.
Während ich erwartet hatte, hätte es mir die abgeschlossene Migration zu rinkbey und der Vertragsadresse zeigen sollen, aber es heißt immer nur Network is up to date
. Sogar ich habe meinen Vertrag ein wenig bearbeitet und dachte, das könnte eine neue Migration auslösen. Aber das half nicht. Irgendeine Idee, was ich hier falsch mache?
UPDATE: Ich habe irgendwo gelesen, ich muss den build
Ordner löschen, also habe ich es getan. Dann rannte truffle compile; truffle migrate --network rinkeby
und bekam diesmal folgendes:
Compiling ./contracts/Migrations.sol...
Compiling ./contracts/addition.sol...
Writing artifacts to ./build/contracts
Using network 'rinkeby'.
Network up to date.
Ich sehe immer noch keine bereitgestellte Vertragsadresse?
Erstellen Sie eine neue Datei mit dem Namen 2_deploy_contracts.js, die nach der anfänglichen Migration automatisch aufgerufen wird
1_initial_migration.js aktualisiert nur den bereits bereitgestellten Migrationsvertrag
var myContract = artifacts.require("MyContract");
module.exports = function(deployer) {
deployer.deploy(myContract);
};
truffle compile; truffle migrate --network rinkeby
? nicht wahr? Ich denke, Sie haben einen Tippfehler..erste Zeile der Migration artifact path
sein sollteartifacts.require("./MyContract");
deployer.deploy(myContract, param1, param2, ... , options)
Zitat aus den Dokumenten: "Von hier aus können Sie neue Migrationen mit zunehmend nummerierten Präfixen erstellen, um andere Verträge bereitzustellen und weitere Bereitstellungsschritte durchzuführen."artifacts.require("MyContract");
korrigierenartifacts.require("./MyContract");
Adam Kipnis
deployer.deploy(addition)
irgendwo eine Migration? Es sieht so aus, als hätten Sie nur den Migrationsvertrag aufgelistet. Sie sollten eine weitere Bereitstellungsdatei namens 2_deploy.js haben (sie kann beliebig heißen, solange sie mit 2_ beginnt). Der Inhalt sollte fast identisch mit 1_initial_migration.js sein, beschreibt aber, wie Sie Ihren Vertrag bereitstellen (Konstruktorargumente, Abhängigkeiten usw.).JVK
migrations
, und das ist 1_initial_migration.js, und ich habe den Inhalt dieser Datei oben in meiner Beschreibung gepostet. Das ist die EINZIGE Datei, diedeployer.deploy(addition)
Mein anderer Vertragsname hataddition.sol
, also sagen Sie, ich sollte auch2_addition.js
die Datei untermigrations
dem Ordner sehen? aber ich sehe dort keine solche Datei.