-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathStorer
58 lines (54 loc) · 2.53 KB
/
Storer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
pragma solidity ^0.4.2;
/*'pragma' indique au compileur dans quelle version de Solidity ce code est écrit */
contract storer {
/*'contract' indique le début du contrat a proprement parler 'contract' est similaire
à 'class' dans d'autres langages (class variables, inheritance, etc.)*/
address public owner;
string public log;
/* Les deux lignes précédentes déclarent variables du contrat et leur type
'owner' est une adresse ethereum et est publique (on peut la lire publiquement
dans la blockchain)
'log' est une chaîne de caractères de taille indéfinie et est publique */
function storer() {
owner = msg.sender ;
}
/* 'storer' est une fonction un peu particulière, il s'agit du constructeur du contrat.
Cette fonction s'exécute une seule fois au moment de la création du contrat.
La création du contrat est une transaction et comme toute transaction elle est
représentée en solidity par "msg", "msg.sender" correspond à l'adresse qui
émet cette transaction.
A la création du contrat la variable owner reçoit l'adresse qui a déployer le
contrat */
modifier onlyOwner {
if (msg.sender != owner)
throw;
_;
}
/* le 'modifier' permet de poser des conditions à l'exécution des fonctions.
Ici, 'onlyOwner' sera ajouté à la syntaxe des fonctions que l'on
veut réserver au 'owner'. Le modifier teste la condion msg.sender != owner
si le requêteur de la fonction n'est pas le owner alors l'exécution
s'interrompt, c'est le sens du 'throw'. S'il s'agit bien du minter alors
la fonction s'exécute. Notez le '_' underscore après le test, il signifie
à la fonction de continuer son exécution.*/
function store(string _log) onlyOwner() {
log = _log;
}
/*La fonction 'store' reçoit une chaîne de caractère qu'elle associe à une
variable d'état '_log'. Cette fonction n'est utilisable que par l'adresse qui
est 'owner', si c'est bien cette adresse qui fait la requête alors la variable
'log' devient '_log'.*/
function changeOwner (address _newOwner)
onlyOwner()
{
owner = _newOwner;
}
function kill() onlyOwner() {
selfdestruct(owner); }
/* Cette dernière fonction permet de "nettoyer" la blockchain en supprimant le
contrat. Il est important de la faire figurer pour libérer de l'espace sur
la blockchain mais aussi pour supprimer un contrat buggé. En précisant une
adresse selfdestruct(address), tous les ethers stockés par le contrat y sont
envoyés. Attention si une transaction envoie des ethers à un contrat qui s'est
"selfdestruct" ces ethers seront perdus*/
}