A distributer ledger with ISIS algo for total ordering of messages
This has an ledger:append (with { Uid, self(), "Message" }) that adds to the ledger and a ledger:get that returns the ledger.
One ledger per node and one node per ledger (no pure-client nodes).
This implementation fails after more than n/2 nodes fail.
Compile everything:
erl -compile isis ledgerRun this on each terminal (one per node):
erl -setcookie wermer -snode <nodename>
net_adm:ping('<othernodename>@<host>').Connect everything and then start with ledger:start() at each node, you can stop the ledger with ledger:stop():
ledger:start().Then you can use the ledger with ledger:append and ledger:get():
> ledger:get().
[]
> ledger:append({0, self(), "Hola"}).
> ledger:get().
[{0, <0.72.0>, "Hola"}]- Formalizing and ImplementingDistributed Ledger Objects paper by Antonio Fernández Anta, Chryssis Georgiou, Kishori Konwar and Nicolas Nicolaou.
- The explanation of the ISIS algorithm for total ordering of messages
- The people giving the lectures on Sistemas Operativos I, LCC, FCEIA, UNR 2021