Cómo calcular el gas para el despliegue del contrato @_@

Consulte lo siguiente:

rinkeby: {
  host: "localhost",
  port: 8545,
  from: "my address",
  network_id: 4,
  gas: 4800000,
  gaslimit: 2100000000000
}

Cuando configuré el gas en 4700000, recibí el siguiente error al implementar mi contrato.

Error: insufficient funds for gas * price + value

Cuando configuré el gas en 4800000, recibí el siguiente error:

Error: exceeds block gas limit

Confía en mí, cualquier valor intermedio dará como resultado cualquiera de los errores anteriores.

¿Puedo saber qué puedo hacer? ¿Significa esto que mi contrato es demasiado complicado para Rinkeby?

------ Notas adicionales: ------

Así es como empiezo mi nodo de Rinkeby.

geth --datadir rinkeby console --rinkeby --rpc --rpcapi db,eth,net,web3,personal --rpcaddr "0.0.0.0" --rpccorsdomain "*"

Puedo saber si hay algún error, porque después de comenzar, uso el siguiente comando para verificar la cuenta (con mucho ETH en Metamask). Siempre devuelve 0.

 eth.getBalance("<public key>");

Respuestas (2)

Despliéguelo primero en http://remix.ethereum.org usando Javascript VM. Luego puede buscar el uso real de gas para la implementación.

ingrese la descripción de la imagen aquí

Creo que debería intentar implementar su contrato usando Remix + Metamask. A ver si funciona. Si funciona, el problema es con su configuración. Parece que estás usando Truffle y geth/parity para implementar tu contrato, ¿verdad? Asegúrate de que tu cuenta esté desbloqueada (tienes que pagar la gasolina).

Y esta herramienta es muy útil si desea ver cuánto gas gasta su contrato: https://github.com/cgewecke/eth-gas-reporter

Creo que noté algo extraño. ¿Estoy iniciando mi nodo correctamente? geth --datadir rinkeby console --rinkeby --rpc --rpcapi db,eth,net,web3,personal --rpcaddr "0.0.0.0" --rpccorsdomain "*" Después de eso uso: eth.getBalance("<dirección >"). Esta es una cuenta de Rinkeby con mucho ether, pero el resultado devuelto es 0.
Y si expones personal, por mainnet, estás tostado (Seguridad)
¿Importó la cuenta a su directorio local?
Sí, importé mi cuenta y la desbloqueé. Entonces, ¿quieres decir que debería eliminar el derecho personal?
Estuve sincronizando durante todo un día, pero eth.syncing todavía muestra que estoy unos cientos de bloques por detrás del actual, y getbalance todavía muestra que mi cuenta tiene 0, pero metamask muestra que hay algunos cientos en ella.