From Volunteer Computing to the Clouds: Formal Aspects and Challenges