No se puede hacer un contrato de bienvenida

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.

¿Estás seguro de que es tu primera cuenta que tiene el éter? web3.fromWei(eth.getBalance(eth.accounts[0]))debería devolver más de 0.002 más o menos.
mismo problema aquí, pero para testnet. pero para testnet, obtuve 4 ether de faucet.

Respuestas (4)

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);
     }
})
Ah, lo siento, no quise dejar esos detalles fuera. Tengo 0.01 éter en mi cuenta y no recibo ningún hash de transacción, después del paso greetingerContract.new me pide mi contraseña y luego devuelve un objeto con una propiedad, dirección que no está definida> 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.

Creé una nueva cuenta solo para comenzar de nuevo limpia, transferí 0.005 ether a ella. 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?
Estoy teniendo el mismo problema. Verifiqué que tengo ether en la cuenta, seguí los pasos del ejemplo del tutorial, incluso probé el contrato modificado que se indica arriba. La línea de comando devuelve un hash txn que dice "esperando ser extraído", que aparece en el explorador de blockchain: 0x8a8abcb23e486558e21c1bb3e6e807494c01a948a03970989981ae94486ab224, pero la función no funciona. En un intento, recibí "Error de importación InvalidBlockFormat". No hay solución todavía.
@BillLaPrise si está obteniendo el hash de la transacción, verifique que esta transacción esté pendiente para la mía usando " eth.pendingTransactions". Si hay uno con el mismo hash txn, debe minar usando "miner.start ()" en el caso de Geth.

¿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 gethsolominer.start()

No estoy en una red privada o minería

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.

¿Crees que podrías agregar algunos consejos sobre cómo hacer lo mismo con testnet?