This question is not about external solutions, but are there technical limitations to why a contract that has funds, can't schedule itself to run at a future block? Could the Ethereum protocol have been designed to include this functionality and if so, what would it have involved?
In a recent post by Vitalik Buterin on Reddit he mentions several proposals that were considered in the protocol design but didn't make the cut.
One of the proposals called delayed calls would introduce an opcode ALARM that allow a contract to execute in a future block. The proposal has several use cases but it was discarded due to time constraints.
I believe this was designed as a feature to minimize the burden on the network and reduce resources. There are several solutions if you want to "call on a contract":
I'm proud to announce the launch of the Ethereum Alarm Clock service.
The Alarm service facilitates scheduling contract function calls for a specified block number in the future. The current release should be considered alpha software.
- Schedule contract function calls to be executed at a specified block in the future.
- Trustless. No administrative API's or special access granted to anyone, including myself.
- Published verifiable source code.
- Lots of documentation with examples.
I'm very interested to hear people's feedback. Feel free to send me a message at pipermerriam on gitter.