Potrebbe essere necessaria una piccola spiegazione. Intendo il mutuo credito come è definito qui :
a type of alternative currency in which the currency used in a transaction can be created at the time of the transaction
Immagina di avere una rete di account. Ognuno inizia a zero e qualsiasi account può estendere una linea di credito limitata a qualsiasi altro account. Il mio saldo totale sarebbe solo la somma di ciò che gli altri "devono" a me, meno la somma di ciò che devo agli altri.
Le linee di credito possono essere rappresentate con una semplice tabella. In pseudo-codice per un qualche tipo di ORM:
type LineOfCredit struct {
IOURecipient string, // Account ID of IOU recipient
IOUIssuer string, // Account ID of IOU issuer
Owed int, // Amount owed to IOU recipient
Limit int, // Maximum IOU amount
}
Spero di rendere il concetto più chiaro: il "destinatario" sarebbe in genere la persona che sta ricevendo "pagato" in una transazione; "emittente" è la persona "pagante". Ad esempio:
- Persone A richiede un servizio dalla persona B
- B accetta ed estende una linea di credito ad A
- Un errore da IOU a B
A un certo punto questi debiti possono o non possono essere regolati in alcune valute del mondo reale, ma l'idea è che alla fine si annullino a vicenda, direttamente o indirettamente.
Userò "$" per rappresentare la valuta, sebbene, ovviamente, le unità siano arbitrarie. Immagina che ...
- Bob deve $ 20 a Sally
- Sally deve $ 20 a Joe
- Joe deve $ 20 a Bob
È chiaro che qui non c'è alcun debito reale e loro non devono nulla a nessuno.
Quindi, come potresti rilevare questi tipi di cicli in un bilancio e poi eliminarli? Questo è un problema per la teoria dei grafi? Immagino che questo possa essere rappresentato come un grafico di rete diretto. La mia conoscenza qui è molto limitata, ma capisco che è possibile rilevare cicli con l'algoritmo di componenti strongmente connessi di Tarjan , sebbene ciò non sembra offrire molto aiuto, specialmente quando questi cicli diventano più grandi. Ho anche pensato che, forse, i percorsi più brevi potevano essere scricchiolanti al momento di una transazione, con i reciproci di "debiti" in sospeso rappresentati come ponderazioni / distanze.
Penso che Ripple pay abbia fatto qualcosa del genere, ma ho difficoltà a trovare un precedente.