He estado tratando de implementar mi contrato en Rinkbey, pero parece que no pasa nada.
Anteriormente implementé contratos localmente en ganache RPC y truffle migrate
lo usé funcionó bien y pude llamar al método de contrato implementado sin ningún problema.
Después de eso, agregué las siguientes líneas en truffle.js
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
}
así se convirtió
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
}
}
};
Mi migrations/1_initial_migration.js
es el siguiente:
var Migrations = artifacts.require("./Migrations.sol");
module.exports = function(deployer) {
deployer.deploy(Migrations);
};
y contracts/Migrations.sol
es el siguiente:
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);
}
}
después de eso, detuve la ejecución local geth
y ejecuté el siguiente comando para desbloquear la cuenta y prepararme para implementar el contrato en rinkbey
geth --rinkeby --rpc --rpcapi db,eth,net,web3,personal --unlock="xxxxxxxxxxxxxxxx"
luego ejecutó el siguiente comando en una ventana de terminal diferente
truffle compile; truffle migrate --network rinkeby
y obtuve esta salida
Using network 'rinkeby'.
Network up to date.
Mientras esperaba, debería haberme mostrado la migración completa a rinkbey y la dirección del contrato, pero sigue diciendo Network is up to date
. Incluso edité mi contrato pensando un poco, eso puede provocar una nueva migración. Pero eso no ayudó. ¿Alguna idea de qué estoy haciendo mal aquí?
ACTUALIZACIÓN: leí en alguna parte, necesito eliminar la build
carpeta, así que lo hice. Luego corrió truffle compile; truffle migrate --network rinkeby
y obtuvo seguidores esta vez:
Compiling ./contracts/Migrations.sol...
Compiling ./contracts/addition.sol...
Writing artifacts to ./build/contracts
Using network 'rinkeby'.
Network up to date.
¿Todavía no veo la dirección del contrato implementado?
cree un nuevo archivo llamado 2_deploy_contracts.js que se llamará automáticamente después de la migración inicial
1_initial_migration.js solo actualizará el contrato de migraciones ya implementado
var myContract = artifacts.require("MyContract");
module.exports = function(deployer) {
deployer.deploy(myContract);
};
truffle compile; truffle migrate --network rinkeby
? ¿no es así? Creo que tienes un error tipográfico... la primera línea de la migración artifact path
debería serartifacts.require("./MyContract");
deployer.deploy(myContract, param1, param2, ... , options)
Cita de los documentos: "Desde aquí, puede crear nuevas migraciones con prefijos numerados en aumento para implementar otros contratos y realizar más pasos de implementación".artifacts.require("MyContract");
aartifacts.require("./MyContract");
adam kipnis
deployer.deploy(addition)
en una migración en cualquier lugar? Parece que solo tiene el contrato de migración en la lista. Debería tener otro archivo de implementación llamado 2_deploy.js (se puede llamar cualquier cosa siempre que comience con 2_). El contenido debe ser casi el mismo que 1_initial_migration.js, pero describe cómo implementar su contrato (argumentos del constructor, dependencias, etc.).JVK
migrations
carpeta y es 1_initial_migration.js y he publicado el contenido de ese archivo arriba en mi descripción. Ese es el ÚNICO archivo que tienedeployer.deploy(addition)
Mi otro nombre de contrato,addition.sol
así que creo que está diciendo que también debería ver2_addition.js
el archivo enmigrations
la carpeta. pero no veo ningún archivo de ese tipo allí.