Abstract

Il raggruppamento economico (RE) applica le leggi economiche alle tecnologie a registro distribuito (DLT) per consentire la scalabilità in presenza di reti estese. Questo documento limiterà l’ambito di applicazione dell’Economic Clustering alla struttura Directed Acyclic Graph (DAG) del Tangle di IOTA.

Nelle DLT ogni nodo solitamente elabora e memorizza una copia locale dell’intero registro. A causa della loro natura globale e della loro crescente adozione, questo approccio si scontrerà necessariamente con problemi di scalabilità. Mentre la memoria è a buon mercato, la larghezza di banda e la latenza sono i primi fattori a causare problemi. L’Economic Clustering offre una scalabilità infinita per l’intero sistema, mantenendo bassi i requisiti per i singoli nodi, suddividendo il registro globale in cluster economicamente rilevanti. Il concetto è supportato da leggi economiche.

Introduzione

Scalabilità nell’economia mondiale reale

Ispirandosi all’economia mondiale reale che non soffre di tali limitazioni, il RE cerca di applicare i concetti alle DLT. Il più importante di questi è il concetto di località gerarchica: l’economia globale (che chiameremo livello globale) è un sistema composto da economie nazionali più piccole e dalle relazioni tra di esse. Ricorsivamente, queste economie nazionali sono costituite da molte economie regionali che sono tra loro collegate. E ancora una volta, le economie regionali sono una moltitudine di imprese ed individui che interagiscono tra di loro, all’interno della loro economia regionale. Smetteremo di ingrandire a quest’ultimo livello e lo considereremo il livello atomico (gli elementi di questo livello sono gli atomi) al quale non possiamo intraprendere ulteriori divisioni.

È importante notare che il livello globale non esiste fisicamente come entità separata, ma è un termine astratto che descrive l’intero sistema. Infatti, il sistema è costituito da miliardi di atomi che interagiscono l’uno con l’altro. Mentre il livello globale è molto complesso, nessun atomo è pienamente consapevole dell’intero quadro, ma segue solo il proprio interesse personale ed interagisce per lo più all’interno di un piccolo orizzonte (per esempio una città) che chiameremo cluster (o raggruppamento). Questo è causato dal fatto che la stragrande maggioranza dell’attività economica non è rilevante per un atomo (non importa se qualcuno in un continente lontano sta comprando un caffè).

Applicando la località alle DLT

Dividendo il registro distribuito globale in cluster più piccoli, possiamo consentire la scalabilità e permettere all’intero sistema di crescere senza limitazioni. Ogni nodo, che rappresenta un atomo, può decidere quale cluster considera economicamente rilevante. Seguirà quindi solo l’attività all’interno del cluster scelto.

Struttura dei RE

Raggruppamento Economico (Economic Cluster)

Un raggruppamento economico è un insieme di nodi che condividono lo stesso registro distribuito. I raggruppamenti non sono compatibili. Si può operare solo all’interno di un raggruppamento. Un equivalente nel mondo reale di un raggruppamento economico è una valuta. All’interno di una nazione una certa valuta è accettata, mentre altre valute devono essere cambiate nella valuta nazionale prima dell’uso.

Tutti i token all’interno di un raggruppamento economico sono fungibili e condividono lo stesso valore. Questo non vale tra token di raggruppamenti diversi. Proprio come le diverse valute fiat (*valute preistoriche cit. ), hanno un valore diverso ed il tasso di cambio è soggetto alle forze di mercato.

Attore economico

Un attore economico è un’entità che opera all’interno di un raggruppamento economico. Gli attori possono essere istituzioni, individui o macchine. Un attore è rilevante per noi solo se ci preoccupiamo di come quell’attore vede il registro distribuito.

Ci preoccupiamo direttamente se dipendiamo da questo attore. Il valore dei nostri token deriva solo dalla nostra capacità di scambiare questi token per delle merci. Se nessuno degli attori con cui vogliamo effettuare transazioni riconoscono il valore dei nostri token, questi token non hanno alcun valore nemmeno per noi. Ad esempio, il supermercato dietro l’angolo sarebbe direttamente rilevante per noi se abbiamo intenzione di acquistare lì generi alimentari con i nostri token.

Ci preoccupiamo indirettamente se un attore che per noi è rilevante si affida pesantemente ad un altro attore. Ad esempio, potremmo non avere intenzione di interagire con la banca del nostro supermercato. Tuttavia, questa banca è certamente rilevante per il nostro supermercato e come tale è rilevante anche per noi, anche se in misura minore.

Cluster vicini

Ogni cluster elabora le proprie transazioni e le transazioni dei cluster vicini, tutte le altre transazioni vengono ignorate perché semplicemente non raggiungono il cluster.

(da continuare….)

Economia del RE

Inter-Cluster Token Exchange

I cluster non sono compatibili. Tuttavia, proprio come nel mondo reale dove abbiamo scambi di valuta, i nodi che hanno saldi in entrambi i cluster possono offrire un servizio di scambio tra i cluster. Questo servizio (come l’equivalente nel mondo reale) ovviamente richiede una piccola tassa per compensare il nodo che effettua lo scambio.

Anche se questo servizio è fornito da una terza parte, praticamente non è richiesta alcuna fiducia quando si realizzano transazioni attraverso flash channels. Un piccolo flusso di micro-pagamenti fluirà tra i due nodi in entrambi i cluster. Se il nodo di scambio si rivelasse maligno e non trasferisse il saldo all’altro cluster, ma lo mantenesse, sarebbe stata rubata solo una quantità insignificantemente bassa di token.

Creazione di token

I raggruppamenti sono equivalenti a fork del registro distribuito. In quanto tali, non esiste un meccanismo che impedisce a qualcuno di creare un nuovo raggruppamento con nuovi token. Invece, il raggruppamento economico si basa su leggi economiche per garantire che non ci siano danni causati da qualcuno che crea token dal nulla – cosa che è possibile in qualsiasi momento attraverso un fork.

Anche se i token possono essere creati dal nulla, il valore non può essere creato dal nulla. Il valore di un raggruppamento risiede nella sua rilevanza economica. Un raggruppamento senza rilevanza non avrà alcun valore e quindi anche i token non avranno alcun valore. I fondi dei raggruppamenti economici assomiglieranno quindi strettamente a quelli del mondo reale. Non c’è modo di evitarlo, né vi è alcuna utilità in tal senso.

Attuazione

Terminologia

Span-Tangle

Un span-tangle span-tangle span(T) di una transazione T (o un insieme di transazioni) è il Tangle derivato dall’esame di questa singola transazione e della sua intera storia (tutte le transazioni direttamente o indirettamente referenziate). Tutte le altre transazioni non fanno parte di questo sub-Tangle:

span(T1, T2, ... Tn) = span(T1) ⋃ span(T2) ⋃ ... ⋃ span(Tn)
span(T) = T ⋃ span(T.branch, T.trunk) = T ⋃ span(T.branch) ⋃ span(T.trunk)

Tangle referenziato

Il Tangle a cui fa riferimento una transazione T contiene esattamente quelle transazioni a cui T fa riferimento direttamente od indirettamente. Non contiene T stesso.

T ... transaction
referenced(T) ... tangle referenced by T

referenced(T) = span(T) ∖ T
              = span(T.branch, T.trunk)
              = span(T.branch) ⋃ span(T.trunk)

Sub- e Super-Tangle

Un sub-Tangle S' di un Tangle S è lo span-Tangle T in S. Così S' è un sottoinsieme di S. S sarà chiamato il super-Tangle di S'.

S ... tangle (super-tangle of S')
T∈S ... transaction in S
S' = span(T); S' ⊆ S ... (sub-tangle of S)

Marcatori di confidenza

Emissione

Ogni attore economico emette regolarmente dei marcatori di fiducia per pubblicare la sua attuale visione del registro distribuito. Questi marcatori sono pacchetti firmati e fanno riferimento ad un sub-Tangle. Inoltre, essi specificano una probabilità che rappresenta la fiducia dell’attore nel fatto che il sub-Tangle di riferimento sia confermato. Questa fiducia sarà aggiornata/sovrascritta ogni volta che l’attore emette un nuovo marcatore che fa riferimento allo stesso sub-Tangle.

M ... marker bundle
M.tail ... tail of M, last transaction in the bundle
referenced(M) ... tangle referenced by the marker M

referenced(M) = referenced(M.tail)
              = span(M.tail) ∖ M.tail
              = span(M.tail.branch, M.tail.trunk)
              = span(M.tail.branch) ⋃ span(M.tail.trunk)

Consenso

Gli attori economici pubblicano tali marcatori ed adeguano le probabilità a seconda dei marcatori emessi da altri attori all’interno del loro raggruppamento. Questo processo di voto dinamico e probabilistico prosegue fino a quando il raggruppamento non raggiunge il consenso. Questo accade quando la grande maggioranza dei raggruppamenti, economicamente rilevante, approva un certo sub-Tangle ognuno con il 100% di confidenza. Nel caso in cui un sub-Tangle in conflitto fosse precedentemente contrassegnato con una fiducia non zero, il rispettivo attore sovrascrive tale fiducia con lo 0% perché non è compatibile con il sub-Tangle accettato e non è più probabile di essere accettato dal raggruppamento.

Confidenza

Gli attori saranno più confidenti in un sub-Tangle tanti più attori dimostrano confidenza in quello stesso sub-Tangle. Pertanto, i livelli di confidenza di un certo sub-Tangle si muovono rapidamente nella stessa direzione (0% o 100%), il che permette al gruppo di raggiungere un consenso su un registro distriuito.

Crittografia

Ogni attore può essere identificato da un indirizzo IOTA. I marcatori di confidenza sono implementati con alberi merkle. Ciò consente agli attori di emettere più marcatori allo stesso indirizzo senza compromettere la sicurezza, nonostante l’unico utilizzo (one-timeliness) del sistema di firma Lamport sottostante, si utilizzano al contempo i suoi vantaggi per mantenere la sicurezza quantistica.

Priorità

Poiché ogni attore può emettere più marcatori, dobbiamo determinare quale marcatore ha la priorità per una transazione T per la quale vogliamo determinare la confidenza.

Sovrascrittura: L’indice di ogni firma all’interno dell’albero di merkle può essere derivato. Per consentire la sovrascrittura, un marcatore con un indice più alto avrà la priorità su tutti i marcatori con un indice più basso che fa riferimento allo stesso Tangle.

Località: Lasciate che S sia il Tangle di riferimento di un marcatore M, S'è il Tangle di riferimento di un marcatore M'. T è un elemento di S' e S'è un sub-Tangle di S. Come marcatore più specifico, M' ha la priorità sul più generale M per T. Da segnalare: la fiducia in S non può essere più alta di quella di S' perché il primo include il secondo e come tale si basa sulla sua confidenza.

=== GIVEN ===
M, M' ... markers
S = referenced(M) ... tangle (super-tangle of S')
S' = referenced(M') ... tangle (sub-tangle of S)
T∈S' ... transaction in S'

== THEN ===
priority(M', T) ≥ priority(M, T)
S' ⊆ S ⇒ confidence(M') ≥ confidence(M)

Confidenza del raggruppamento

La confidenza di una transazione specifica il grado di probabilità che la considera confermata. Dipende dalla confidenza e dalla rilevanza di tutti gli attori del nostro raggruppamento. In quanto tale è soggettiva come nel mondo reale. Definendo la transazione T. Definendo un attore economico A. p(T) descrive la nostra confidenza nel raggruppamento (la confidenza che abbiamo in T). p(T|A) è la confidenza che l’attore A ha in T. relevance(A)è la rilevanza relativa dell’attore A (soggettivamente). La somma della rilevanza su tutti gli attori deve essere uguale ad 1.

=== GIVEN ===
Actors ... set of all economic actors
T ... transaction
Σ[∀A∈Actors] relevance(A) = 1

=== THEN ===
p(T) = Σ[∀A∈Actors] relevance(A) ⋅ p(T|A)

Validazione registro

Definizione

La validazione del registro distribuito descrive il problema di determinare se un Tangle è conforme a determinate regole di validità che permette di chiamarlo “valido”. La validità è un requisito necessario per la conferma. Mentre la conferma è il risultato del consenso e descrive l’accettazione di un Tangle, la validità è una proprietà tecnica che può essere verificata in modo deterministico e descrive l’assenza di incongruenze all’interno del Tangle.

Si noti che la convalida del registro distribuito è eseguita solo da attori economici. I dispositivi più deboli si basano sui loro risultati per evitare di eseguire essi stessi questi calcoli pesanti.

In un registro distribuito non valido si avrà una fiducia pari a zero. Se la più piccola fusione di due Tangle non è valida (ad es. perché entrambi includono una spesa degli stessi fondi – una doppia spesa), si definiscono questi Tangle come conflittuali. Non possono essere fusi senza trasferimenti aggiuntivi e quindi si presume che al massimo uno di entrambi sarà confermato. In base al rapporto di conflitto possiamo modellare la probabilità che un Tangle sia confermato. Questa è la base per calcolare la confidenza.

Regole generali di validità

Un groviglio S è valido se tutti i trasferimenti all’interno sono validi. Un trasferimento T è valido in un Tangle s se:

  • Le firme di tutti gli input in T sono valide
  • nessun token viene creato o distrutto da T (valore di ingresso = valore di uscita)
  • quando si combinano tutti i trasferimenti ins , nessun indirizzo utilizzato come input per T è lasciato con un saldo negativo (gli input esistono)

Le prime due condizioni possono essere controllate efficacemente per ogni trasferimento una volta senza il contesto di S (complessità O(1)per ogni nuova trasferimento). La terza condizione d’altra parte deve essere validata da zero per ogni Tangle S (complessità O(S)per ogni validazione del registro). In pratica mantenere un’istantanea di tutti i saldi da un certo punto della storia che consideriamo confermati con alta probabilità. Questo riduce la complessità dalla convalida dell’intero registro distribuito dalla genesi alla convalida della sola parte nuova del registro distribuito a partire da quell’istantanea.

Riferimenti


Il testo originale in lingua inglese (in costante aggiornamento) si trova qui: https://github.com/iotaledger/ict/blob/dev/docs/EC.md


Per ulteriori informazioni in italiano o tedesco trovate i miei contatti a questa pagina.
Se avete trovato utile la mia libera traduzione, accetto volentieri delle donazioni 😉

IOTA:
QOQJDKYIZYKWASNNILZHDCTWDM9RZXZV9DUJFDRFWKRYPRMTYPEXDIVMHVRCNXRSBIJCJYMJ9EZ9USHHWKEVEOSOZB
BTC:
1BFgqtMC2nfRxPRge5Db3gkYK7kDwWRF79

Non garantisco nulla e mi libero da ogni responsabilità.