pragma solidity ^0.4.25; contract CagnotteFestival{ //mapping (address => uint) organisateurs; // Mapping des organisateurs et leurs parts address[] organisateurs; uint[] parts; uint constant dateFestival = 65465456; uint dateLiquidation = dateFestival + 2 weeks; uint valeur; // valeur d'une part mapping (address => uint) buyers; uint seuil; constructor() public { organisateurs[0] = msg.sender; parts[0] = 100; valeur = 10; seuil = 40; } function controlerDepense(address buyer, uint depense) internal { require(buyers[buyer] + depense <= seuil,"le seuil autorisé va être dépassé!"); buyers[buyer] += depense; } function retraitOrga(uint indice) public { require(block.timestamp >= dateLiquidation); require(organisateurs[indice] != address(0)); require(parts[indice] > 0); organisateurs[indice].transfer(parts[indice]*valeur); // on met l'orga à la fin pour un pop address inter = organisateurs[indice]; organisateurs[indice] = organisateurs[organisateurs.length-1]; organisateurs[organisateurs.length-1] = inter; // on fait pareil avec sa part uint partInt = parts[indice]; parts[indice] = parts[organisateurs.length-1]; parts[organisateurs.length-1] = partInt; delete organisateurs[indice]; delete parts[indice]; if(organisateurs.length == 0){ this.selfdestruct(inter); } } }
0.4.25