Implementé el contrato Token y Crowdsale en archivos de migración separados. Durante la migración, no hubo ningún error. Los registros de migración se comparten:
Running migration: 2_deploy_token.js Deploying DappToken... ... 0xc1ed596e0249507186d75f2d42ba1c34e5b72697774baf9a283e0fb422214b70 DappToken: 0x949e24c24a79f437bbf75d3da7b9ba50235c2a8a Saving successful migration to network... ... 0x1c8bc4b87bfbfa40bb16aa3eb6cf0341efc79f444b1e293abd1f0db394881d55 Saving artifacts... Running migration: 3_deploy_crowdsale.js Saving successful migration to network... Deploying DappTokenCrowdsale... ... 0xdae8535756b9b7100af8d1a3bdf9d20b622c25dcb03aa40435b7f7019bfcdf7a Guardando artefactos...
Después de esto, cuando traté de crear una instancia de Crowdsale usando la consola truffle como
truffle(ganache)> DappTokenCrowdsale.deployed().then(ic => tokensale = ic)
Recibí el error:
Error: DappTokenCrowdsale no se ha implementado en la red detectada (discrepancia de red/artefacto)
Aunque he creado con éxito la instancia del contrato DappToken. Los archivos relacionados se comparten a continuación:
DappTokenCrowdsale.sol
pragma solidity 0.4.24;
import "openzeppelin-solidity/contracts/crowdsale/Crowdsale.sol";
contract DappTokenCrowdsale is Crowdsale {
constructor(
uint256 _rate,
address _wallet,
ERC20 _token
)
Crowdsale(_rate, _wallet, _token)
public
{
}
}
3_deploy_crowdsale.js
const DappToken = artifacts.require("./DappToken.sol");
const DappTokenCrowdsale = artifacts.require('DappTokenCrowdsale');
module.exports = async function(deployer, network, accounts) {
const deployedToken = await DappToken.deployed();
const _rate = 1000;
const _wallet = accounts[1];
const _token = deployedToken.address;
await deployer.deploy(DappTokenCrowdsale, _rate, _wallet, _token);
};
2_deploy_token.js
const DappToken = artifacts.require("./DappToken.sol");
module.exports = async function(deployer, network, accounts) {
const _name = "Dapp Token";
const _symbol = "DAPP";
const _decimals = 18;
await deployer.deploy(DappToken, _name, _symbol, _decimals);
};
En caso de migración, no puede estar seguro de que el contrato se implementó, devuelve el hash de la transacción. Debe eliminar async/await
(es la forma más sencilla) para ver el resultado de la implementación.
const DappToken = artifacts.require("./DappToken.sol");
module.exports = function(deployer, network, accounts) {
const _name = "Dapp Token";
const _symbol = "DAPP";
const _decimals = 18;
deployer.deploy(DappToken, _name, _symbol, _decimals)
.then(function () {
return deployer.deploy(Crowdsale, DappToken.address);
});
};
OceanToken
Unha Volver
Unha Volver
Aniket
Unha Volver
abcoathup