Error al crear el contrato con ethereum en el tx inicial

Recibo este error cuando trato de crear el contrato con algo de ETH, pero si solo hago clic en crear sin enviar ether, el contrato se implementa correctamente.

ingrese la descripción de la imagen aquí

Respuestas (2)

Su constructor no es payable.

Las funciones de contrato se lanzan si se envía Ether y la función no está marcada explícitamente payable. Esto ayuda a evitar que Ether quede aislado en contratos que no lo esperaban y no tienen una función de retiro con la que recuperarlo.

Dado que la función MyToken(... no es payablela implementación en sí misma falla con una excepción cuando llega Ether no deseado/inesperado.

Puedes resolver eso con

function MyToken(...) payable {}

Veo que tiene una payablefunción alternativa para que pueda implementar el contacto y luego enviar fondos a la dirección del contrato.

A primera vista, este contrato parece no tener forma de recuperar el Ether que se le envió, por lo que se quema una vez que se transfiere. De hecho, esto muestra que es importante que los diseñadores consideren cómo entra y sale Ether y por qué es deseable evitar recibos no deseados.

Espero eso ayude.

Gracias por la respuesta; Tengo otra pregunta para usted: ¿por qué se llama a la función de respaldo aunque envíe 0 ether al principio?

Publicaste esto como una respuesta, pero en realidad es una nueva pregunta. Obtendrá mejores respuestas si lo publica como una nueva pregunta.