9.11 Service Smart Contract
9.11.1 Descrizione.
Il service smart contract è di fondamentale importanza in T.R.I.N.C.I.. A differenza di altri smart contract che sono opzionali oppure sono a carico della fantasia del programmatore, il service smart contract è in qualche modo l’anima che sostiene la blockchain.
È chiamato anche smart contract di bootstrap poiché ha molte caratteristiche: esso è il primo smart contract che viene collocato all’interno di qualsiasi HDSB. Al suo interno, infatti, sono presenti tutte le funzioni che vanno a regolamentare come questa HDSB dovrà funzionare.
Ci sono quindi funzioni ben precise che devono avere quel nome preciso. Il comportamento è a discrezione di chi sviluppa il service smart contract, ma ha delle funzioni precise, un’interfaccia ben precisa. Questa interfaccia permette allo sviluppatore di: decidere se e quanto far pagare per le transazioni; se, ed in che modo, portare all’interno del sistema nuovi smart contract; determinare alcuni comportamenti relativi al controllo delle fees che vengono distribuite durante gli spostamenti.
Questo è uno smart contract che normalmente viene costruito come qualunque altro smart contract: compilato in WASM; depositato nella cartella del nodo.
Immaginiamoci un nodo vergine: quando un nodo parte, un nodo vergine appena scaricato da GitHub, la prima cosa che fa è controllare che esista un database. Ovviamente, essendo vergine, avrà un database vuoto: in biologia sarebbe definito come una cellula staminale, cioè che ha tutte le caratteristiche per diventare più o meno qualsiasi cosa poiché ha tutto il bagaglio di ingredienti per diventare ciò che vuole, ma non ha ancora una specializzazione.
Quando un nodo viene avviato per la prima volta, esso potrebbe diventare qualunque HDSB (Alfa, Beta, Gamma), ma ancora non ha una sua specializzazione, non sa qual è il suo destino, perché ha il proprio database “ancora da determinare”, poiché vuoto.
Quindi il nodo va a cercare questo bootstrap, lo carica e da quel momento comincia a conoscere una serie di informazioni:
- l’hash del bootstrap, cioè l’hash del file fisico bootstrap.wasm, che potrebbe essere specifico di una particolare HDSB. L’hash è univoco e rappresenta la chiave univoca della rete a cui questa blockchain si sottomette;
- questo significa che 2 bootstrap uguali in 2 parti diverse del mondo costituiscono un anello di una blockchain;
- 2 nodi uno accanto all’altro con 2 bootstrap diversi saranno 2 blockchain HDSB diverse che non si parlano, non si vedono, non interagiscono;
- quindi il service account contiene questo bootstrap e se qualcuno ne cambia anche solo una virgola, va a modificare il comportamento deterministico di quella blockchain;
- ripetiamo: 2 blockchain con lo stesso bootstrap sono la stessa blockchain, mentre 2 nodi con 2 bootstrap diversi sono 2 blockchain diverse.