El contrato de muestra "Advanced Token" aquí: https://www.ethereum.org/token
No funciona cuando se implementa en la red de prueba. Intentar enviar ether al contrato para comprar tokens da como resultado el mensaje de error:
El contrato no permitirá que se ejecute esta transacción.
Nada en el tutorial explica por qué sucedería esto.
Editar Entonces, descubrí el problema. Mi función "pagadera" se llama comprar(). Supuse que el contrato seleccionaría automáticamente la función pagadera al enviar ether, pero parece que necesita la función pagadera general, en lugar de una con nombre, para recibir pagos arbitrarios de ether. Una vez que eliminé el nombre de la función, todo funcionó.
Editar: Aunque la siguiente información fue parte del problema, la solución específica está arriba.
Entonces, lo mejor que puedo decir aquí es el problema ...
Entonces, para que buy() funcione, hay un par de opciones (en orden de complejidad creciente)
Tiene mucho sentido mirar el código en detalle, simplemente no captó el aspecto de la dirección del propietario, a la que se hace referencia como "msg.sender" en lugar de la dirección del contrato, a la que se hace referencia como "este".
Después de la creación del contrato, la asignación inicial de monedas pertenece al propietario del contrato. Debe transferir algunas de las monedas nuevas al contrato en sí.
Con un saldo cero, el contrato no permitirá que se realice la transacción.
Richard Horrocks
El limpiabotas
Richard Horrocks
El limpiabotas
El limpiabotas