Diferentes errores al implementar con geth console y truffle

Estoy tratando de implementar un contrato de dos maneras diferentes, no puedo tener éxito en ninguna.
Primera forma:
1. geth console —rinkeby —rpc —rpcapi db,eth,net,web3,personal —unlock="0x..." 2>>geth.log
Tengo ether en mi cuenta, introduzco mi contraseña correctamente, estoy seguro de que la cuenta está en la lista eth.accounts
2. Compilo mi contrato con solc, me da un código binario y abi, que pongo en variable biny abi. Pongo 0xantes de código binario.
3. var contract = web3.eth.contract(abi)
4.var token = myContract.new( {from: eth.coinbase, data: bin, gas: 1000000}, function(e, myContract) { if (e) { console.log(e); } else { if (myContract.address) { console.log ("mined " +myCcontract.address); } } })

Y dice que

Error: No se pudo almacenar el código de contrato, verifique su cantidad de gas.

La segunda forma es usando Truffle. Ya he logrado implementar el contrato en rinkeby muchas veces, pero ahora estoy atascado en este error.
1. Ejecuto gethy desbloqueo la cuenta
2. Hay mi truffle.js:

módulo.exportaciones = {
redes: {
desarrollo: {
host: "localhost",
puerto: 8545,
network_id: "*", gas: 900000 },
rinkeby: {
host: '127.0.0.1',
puerto: 8545,
network_id: 4 ,
gas: 4612388, // Límite de gas utilizado para despliegues
desde: "0xeb1eb48fc3c2756cde3dce8a53472e437062f976" } } };

3. truffle migrate --reset --network rinkeby
Y dice

Error encontrado, rescate. Estado de la red desconocido. Revise las transacciones exitosas manualmente. TypeError: contract.detectNetwork no es una función en /usr/local/lib/node_modules/truffle/build/cli.bundled.js:201861:21 en /usr/local/lib/node_modules/truffle/build/cli.bundled. js:326484:15 a las

Mi propósito era aprender a interactuar con las funciones del contrato por geth o truffle console. Pero algo salió mal. Por favor ayúdame a arreglarlo.
Si llegaste al final de esta pregunta, desde ya muchas gracias.

Respuestas (2)

intente primero con testrpc: https://github.com/ethereumjs/testrpc .

Y este mensaje de error "Error encontrado, rescate. Estado de la red desconocido" significa que geth no está funcionando correctamente o no está usando el puerto 8545 o no está funcionando debido a la ip 127.0.0.1.

Prueba con testrpc. Vas a tener una gran experiencia. Es más rápido interactuar con contratos con fines de prueba.

Lo intentaré ahora solo para averiguar si se implementará o no. Pero necesito implementarlo en testnet, para que mis coleques puedan intentar interactuar con él.
Otra forma de conectarse a un nodo sin geth es usar infura. No olvide ejecutar "npm install truffle-hdwallet-provider" Aquí está el texto para agregar dentro de truffle.js: var HDWalletProvider = require("truffle-hdwallet-provider"); var mnemonic = "las palabras de tus cuentas"; módulo.exportaciones = { directorio_migraciones: "./migraciones", redes: { rinkeby: { proveedor: nuevo HDWalletProvider(mnemotécnico, " rinkeby.infura.io/" ), gas: 4500000, network_id: 4 } } }

Alternativamente, he escrito una pequeña biblioteca para la implementación que puede ser útil para alguien. Se implementa usando ethers.js (el primo estable de web3.js) y es detallado y brillante :)

const etherlime = require('etherlime');

const ICOTokenContract = require('./build/contracts/ICOToken.json');

const randomAddress = '0xda8a06f1c910cab18ad187be1faa2b8606c2ec86';

const defaultConfigs = {
    gasPrice: 20000000000,
    gasLimit: 4700000
}

const deployer = new etherlime.InfuraPrivateKeyDeployer('Your Privste KEY', 'ropsten', 'Your infura API key', defaultConfigs);

const runICODeployment = async () => {
    const contractWrapper = await deployer.deploy(ICOTokenContract);
    const transferTransaction = await contractWrapper.contract.transferOwnership(randomAddress);
    const result = await contractWrapper.verboseWaitForTransaction(transferTransaction.hash, 'Transfer Ownership');
}
runICODeployment()

Pon esto en un archivo y ejecútalo con node.