-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathalgo-pieces-isomorphes
49 lines (30 loc) · 1.92 KB
/
algo-pieces-isomorphes
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
Notary
clients: {local: int, global: int}[nbClients]
next: int[nbNotaries] (init à 1)
id: int
temporary_transactions: set<(client_id, sn), {received_true: int, received_false: true}>
Notary::send_money(quantity, from, to)
v = {quantity, from, to}
broadcast init(id, v, next[id])
Notary::receive init(j, v, sn)
Notary::receive echo(j, v, sn)
if( echo(j, v, sn) received from striclty more than (n+t)/2 different processes
AND ready(j, v, sn) never sent )
if( clients[v.from].local >= v.quantity )
broadcast ready(j, v, sn, true)
else
broadcast ready(j, v, sn, false)
Notary::receive ready(j, v, sn)
temporary_transactions[(v.from, sn)].received++
if( ready(j, v, sn) never sent
AND temporary_transactions[(v.from, sn)].received > t + 1 )
broadcast ready(j, v, sn)
if( ready(j, v, sn) received )
if( ready(j, v, sn, true) received from at least t + 1 different notaries
AND ready(j, v, sn, accept) never sent )
Ajout de notaire: bracha pour dire à tout le monde qu'on arrive
Dans les messages de transaction, rajouter la quantité d'argent espéré après la transaction pour une bonne synchronisation des nouveaux
Dans le cas où un notaire arrive pendant une transaction, il va reçevoir l'ancienen valeur du compte, si ce compte n'est jamais mis à jours et que les autres notaires partent, la valeur du compte sera perdue à jamais
Solution: si on laisser un seul notaire arriver à la fois, "l'ancien nouveau" notaire sera mis à jour par la transaction en cours et donc la valeur du compte ne sera jamais perdue
Quand un notaire reçoit les colonnes des autres pour se synchroniser, il regarde si pour une colonne une même valeur apparait t+1 fois. Si plusieurs colonnes apparaissent t+1 fois, on conserve celle qui est la plus récente
Pour une transaction en cours, chaque notaire stocke un n local qui indique combien de réponse il attend. Quand un notaire part on modifie ce n pour prendre en compte le départ.