Glossario / Lightning e layer 2
Alias del nodo
- Che cos'è l'alias del nodo?
- L'alias del nodo è il nome di 32 byte che un nodo Lightning scrive nel proprio node_announcement firmato, così esploratori e wallet hanno qualcosa di leggibile da mostrare al posto di una chiave pubblica grezza.
Ogni nodo Lightning sceglie il proprio nome e lo firma: è tutto il meccanismo e anche tutto il problema. BOLT 7 assegna al campo esattamente 32 byte, riempie il resto con zeri e indica al software che riceve il messaggio di suggerire che il nome è autofirmato. Nulla impedisce a due nodi di chiamarsi allo stesso modo, quindi non considerare mai un alias una prova di chi stai pagando.
Come funziona
L'alias del nodo viaggia dentro node_announcement, il messaggio gossip di tipo 257, firmato dalla stessa chiave che nomina.
Il messaggio contiene una firma, un campo di bit delle funzionalità, un timestamp, il node_id, un rgb_color di 3 byte, l'alias di 32 byte e gli indirizzi di rete su cui il nodo accetta connessioni. Impostare l'alias e il colore è facoltativo; rendere l'alias UTF-8 valido non lo è, e i byte finali non usati devono essere zero.
Trentadue byte sono un budget di byte, non un numero di caratteri. Il campo contiene UTF-8 valido, quindi un nome in una scrittura che spende più byte per carattere ammette meno lettere di uno in semplice alfabeto latino.
Cambiare nome costa poco. Un nodo deve impostare ogni timestamp a un valore superiore al precedente, quindi un nuovo nome è solo un nuovo node_announcement che i peer accettano al posto del record precedente e mettono in coda per la ritrasmissione. Non c'è alcun registro, alcuna commissione e alcun controllo di unicità nel protocollo.
Il campo non è spazio pubblicitario gratuito. BOLT 7 ignora gli annunci di nodi non già associati a un canale noto, e nessun canale può essere annunciato finché il suo output di finanziamento non ha sei conferme, quindi un nome leggibile costa una transazione on-chain e capitale bloccato prima che qualcuno lo ritrasmetta.
BOLT 7 contiene una sezione di sicurezza scritta proprio sugli alias. Poiché sono definiti dall'utente, sono un vettore di injection sia durante la visualizzazione sia durante la memorizzazione, perciò si indica agli implementatori di sanificarli prima di inserirli in HTML o JavaScript e di usare istruzioni preparate quando li salvano. Al software che ne mostra uno si indica anche di insinuare la sua origine autofirmata.
Dove lo vedi
Gli alias dei nodi compaiono ovunque il grafo Lightning sia disegnato per una persona.
BOLT 7 consente al software che riceve il messaggio di usare l'alias e il rgb_color per fare riferimento ai nodi nelle proprie interfacce, ed è per questo che un esploratore del grafo o un selettore di peer mostra un nome invece di una chiave. Un operatore di routing si affida a questo, dato che il node_id non è qualcosa che qualcuno digiti due volte.
Se ne hai uno dipende da cosa sia davvero il tuo wallet. Phoenix esegue un vero nodo Lightning autonomo sullo smartphone, quindi detiene una chiave di identità e potrebbe annunciare un nome. Wallet of Satoshi in modalità custodiale detiene le chiavi per tuo conto, quindi non c'è alcun nodo tuo nel grafo e nulla da nominare.
Nulla di ciò che paghi o ricevi dipende dal nome: fatture, route e aperture di canale si basano tutte sul node_id.
Alias del nodo vs indirizzo Lightning
Un alias del nodo nomina una macchina, mentre un indirizzo Lightning nomina un luogo a cui chiedere una fattura. Non puoi pagare un alias: non porta dominio, né endpoint, né importo, e nulla nel protocollo lo risolve in qualcosa di pagabile. Un indirizzo Lightning fa il lavoro opposto: si risolve via HTTPS e consegna al tuo wallet una fattura reale.
Alias del nodo vs short channel ID
Uno short channel ID è il localizzatore di otto byte dell'output di finanziamento di un canale, e BOLT 7 consente anche a un peer di fornire un alias di short channel ID che lo sostituisca. Quel secondo alias non condivide nulla con un alias del nodo tranne la parola. Un nodo può inviare un channel_update per un canale non annunciato, con short_channel_id impostato su un alias fornito dal suo peer invece che su quello reale, e deve impostare dont_forward e non trasmettere mai quell'aggiornamento, per ragioni di privacy. Un alias è un nome pubblico che un nodo vuole far vedere, l'altro è un sostituto privato di un numero che un nodo vuole tenere nascosto.