Durante los últimos 7 días he estado tratando de hacer el contrato de bienvenida, he pasado por 4 computadoras físicas diferentes en 2 ubicaciones diferentes y he intentado varias formas diferentes en 3 sistemas operativos diferentes.
Intenté todos los intentos anteriores con el cliente eth geth y c ++, también hice intentos con el compilador web en línea y la mezcla.
Después de 7 días, todavía no he podido crear ningún contrato, estoy intentando seguir la página https://www.ethereum.org/greeter para poder pasar a los otros ejercicios del tutorial para completar los ejercicios en ethereum. página .org.
Estoy siguiendo las instrucciones de la página palabra por línea y copiando directamente lo que me dice que copie, y he logrado llegar tan lejos como para compilar el contrato y decirle que se implemente. Me pide la contraseña de mi cuenta y la ingreso, la cual luego completa. Mi cuenta tiene ethereum.
Pero el problema es que las instrucciones dicen que se supone que la variable de bienvenida contiene una dirección que puede rastrear en la red a medida que se extrae o completa y contiene una dirección, pero la dirección no está definida, permanece indefinida indefinidamente. Además, mi cuenta nunca se deduce ninguna moneda, el valor de la cuenta sigue siendo el mismo. Por supuesto, esto significa
eth.getCode(greeter.address)
También se produce un error, ya que no puede enviar un código a una dirección indefinida. Esto me desconcierta y hasta ahora no he podido encontrar ayuda en ninguna parte. Simplemente asumí que era un error de software y que probablemente no mucha gente haya creado contratos, pero luego vi un video de Ethereum en YouTube que decía que había como 500,000 contratos y parece que la comunidad es muy dinámica con el diseño de contratos, así que ¿qué me podría estar perdiendo? eso está causando este error.
En caso de que se lo pregunte, mi último intento es en Mac OSX con el cliente geth, pero tengo acceso a Windows y Linux, así como al cliente c++ eth si es necesario.
Creo que quisiste decir que tu cuenta tiene ether, no ethereum.
Mi primera conjetura es que no tienes suficiente éter. Probar
web3.fromWei(eth.getBalance(eth.coinbase),'ether')
Es posible que necesite algo como 0.001 éter (solo una estimación) para implementar su contrato con éxito.
Cuando implemente, obtendrá un hash de transacción, que es mucho más largo que una dirección de ethereum. Toma este hash y corre
eth.getTransactionReceipt("0x00000.......")
Sustituyendo el 0x00000........ con el hash de tu transacción. Busque la dirección del contrato y el gas usado en la salida. Si no hay una dirección de contrato, es probable que no tenga fondos suficientes para implementar el contrato.
Pruebe esta versión modificada del ejemplo:
var _greeting = "Hello World!"
var greeterContract = web3.eth.contract(greeterCompiled.greeter.info.abiDefinition);
var greeter = greeterContract.new(_greeting,{from:web3.eth.accounts[0], data: greeterCompiled.greeter.code, gas: 300000}, function(e, contract){
if(!e) {
if(!contract.address) {
console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");
} else {
console.log("Contract mined! Address: " + contract.address);
console.log(contract);
}
} else {
console.log("Error!!");
console.log(e);
}
})
> greeter { address: undefined }
Algo durante el paso greetingerContract.new no funciona.
1) Asegúrese de que las unidades que están mirando sean en realidad Ether: web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')
.
2) También asegúrese de que la cuenta utilizada en el contrato sea la del Ether ( eth.accounts[0]
).
3) Asegúrese de escribir la contraseña correcta (y la contraseña de la cuenta correcta).
Cualquiera de estos errores daría los resultados que está experimentando.
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
espectáculos 0.005
_ Usé personal.unlockAccount con la segunda cuenta y contraseña para verificar la contraseña correcta y devuelve verdadero. Me aseguro de que greetingerContract.new use la segunda cuenta from:web3.eth.accounts[1]
. Después de todo eso, todavía devuelve un objeto con address: undefined
. Hasta el momento, después de aproximadamente 2 meses, todavía estoy esperando para liberar mi primer contrato. ¿Tienes alguna otra idea?¿Tu hiciste el mío?
Si está ejecutando una red privada, otra cosa que algunas personas también olvidan hacer es minar en la red para que se procese la transacción.
Entonces, si estás en geth
solominer.start()
Acabo de agregar un ejemplo paso a paso de cómo ejecutar el ejemplo de saludo documentado en La implementación del contrato de saludo a través de geth CLI no se está registrando en mi cadena de bloques privada .
Esta guía le proporciona los comandos para ejecutar y le muestra los resultados esperados en cada paso para que pueda confirmar que está ejecutando el ejemplo de Greeter correctamente.
tjaden hess
web3.fromWei(eth.getBalance(eth.accounts[0]))
debería devolver más de 0.002 más o menos.TMOTTM