¿Cómo agregar saldos de éter a las cuentas en el compilador en línea de Solidity Javascript VM?

Usando el compilador en línea de Solidity configurado en su propia máquina virtual de JavaScript, llamar a cualquier función con ether msg.valuegenera una excepción. No veo una manera de agregar un saldo de éter a una dirección.

La segunda pestaña (la que está al lado del engranaje) permite especificar un valor cuando se invoca una función. ¿Eso ayuda? Es posible que deba invocar una función ficticia que envíe primero el éter a la dirección deseada.
Exactamente, y si pongo un valor distinto de cero en ese campo, la VM siempre arroja una excepción. La única razón que se me ocurre es que la cuenta no tiene eth, aunque en ese caso no sé cómo está pagando el gas. Lo he intentado con tan solo un peso... tira con eso, no tira con cero. Y no puedo encontrar ningún lugar que diga cuánto eth tiene cada cuenta.

Respuestas (1)

Desde Solidity 4.0 tienes que marcar tus funciones con el modificador payablepara poder tomar Ether. Esta es una medida de seguridad, para evitar pagos no deseados que sucedían a menudo, por ejemplo con el contrato DAO.

payable for functions: Les permite recibir Ether junto con una llamada.
- de Solidity Documentation - Modificadores

Al hacerlo, podrá invocar la transacción de solidez del navegador con un cargo de Ether y ya no generará una excepción.

Esté atento a los cambios actuales porque Solidity se mueve rápidamente como lo hace todo el sistema Ethereum: https://github.com/ethereum/solidity/blob/develop/Changelog.md