Solo due anni fa Blockstream aveva ideato Greenlight, una rivoluzionaria infrastruttura hosting di Lightning in grado di scalare i deployment di Lightning senza compromessi né custodia. L’ultimo anno di test con i nostri partner ha comprovato la scalabilità e la facilità di utilizzo di Greenlight. Attualmente stiamo lavorando per rendere la client repository open source e stiamo inoltre aprendo le iscrizioni alla nostra developer preview per tutti gli interessati!
Che cos’è Greenlight?
Greenlight è un Lightning-as-a-Service (LaaS) non-custodial per aziende, esercenti e app Lightning. Le chiavi rimangono agli utenti mentre noi ci occupiamo di tutto il resto. I developer che decidono di costruire con Greenlight possono semplicemente comunicare con la nostra API intuitiva e integrare i pagamenti Lightning nella loro applicazione senza interruzioni e senza il bisogno di conoscenze pregresse del protocollo Lightning o di ricorrere a un lungo node setup.
Esistono due domini di controllo all’interno di Greenlight: l’utente e Blockstream. Un qualsiasi numero di clienti dallo user domain può connettersi a un singolo nodo sul dominio di Blockstream. Il nodo in funzione sull’infrastruttura di Blockstream riceve i comandi, calcola le modifiche di stato e in seguito raggiunge il firmatario, il quale è unicamente sotto il controllo dell’utente, per farlo controllare e chiudere in concomitanza con le modifiche. Il risultato è un nodo Lightning on demand e non-custodial in cui le chiavi vengono custodite sul tuo dispositivo, senza mai toccare la nostra infrastruttura.
Che cos’è disponibile a oggi?
Mentre continuiamo a sviluppare Greenlight, le interfacce pubbliche sono stabili e pronte per essere esplorate.
La client repository contiene diverse componenti:
- gl-client e i suoi language binding/binding di linguaggio forniscono una API intuitiva per interagire con Greenlight e gli user node. Il signer built-in si occupa della gestione dei seed e li tiene nascosti dal nodo e, per estensione, anche da noi e dai service operator. La verifica end-to-end (ancora in fase di sviluppo, non ancora completa in questa preview) nel signer garantisce che qualsiasi modifica venga autorizzata da un cliente autenticato, così che eventuali compromissioni al node host non risultino in perdite di fondi.
- gl-testing fornisce un mock environment completo per testare il tuo codice invece che l’effettivo servizio di Greenlight. Per saperne di più, guarda il nostro tutorial su come gl-testing possa essere utilizzato in un progetto Python utilizzando i binding Python in gl-client-py. Altri tutorial ti aspettano invece nella pipeline.
- gl-plugin e gl-signerproxy consentono di replicare l’interfaccia esposta dai nodi Greenlight, inclusa la possibilità di utilizzare un remote signer, invece che conservare il seed su un server esposto.
Gli ultimi due rappresentano la base dei nostri piani di off-boarding: se Greenlight ti va stretto, o se desideri avere più controllo, ti consentiamo di effettuare un off-boarding nella tua infrastruttura, senza compromettere il funzionamento delle tue applicazioni. Ciò significa che se sviluppi la tua applicazione verso/contro l’API di Greenlight, riceverai automaticamente supporto per Core Lightning pronto all’uso. Per saperne di più su come effettuare l’off-boarding consulta la documentazione ufficiale e i tutorial sul sito di Greenlight.
Come iniziare
Guarda il tutorial Getting Started e segui le istruzioni. Inizialmente avrai bisogno di un invite code per poter registrare un nuovo nodo sul servizio. Il sistema di inviti ci consente di scalare gradualmente in modo controllato in questa fase iniziale del servizio. Abbiamo creato un modulo in cui potrai richiedere un invito, che ti invieremo il prima possibile.
Un minimal client che registra un nodo, lo programma e in seguito esegue getinfo sul nodo stesso apparirebbe così su Python:
from glclient import TlsConfig, Signer, Scheduler
import secrets # Make sure to use cryptographically sound randomness
invite_code = "..."seed = secrets.randbits(256) # 32 bytes of randomnessnetwork = "bitcoin"
tls = TlsConfig()
signer = Signer(seed, network, tls)
scheduler = Scheduler(node_id=signer.node_id(), network=network, tls=tls)
# Now actually register the node, `r` will contain the credentials to use # when talking to the node
r = scheduler.register(signer, invite_code=invite_code)
# Use the credentials when talking to Greenlight from now on.
Requires a refresh
# of the `TlsConfig` and the `Scheduler`
tls = tls.with_identity(r.device_cert, r.device_key)
scheduler = Scheduler(
node_id=signer.node_id,
network=network,
tls=tls
)
node = scheduler.node() # Schedules the node on the service
# And finally we can use `node` to call `getinfo`
print(node.getinfo())
Niente di più semplice. Nessun bitcoind, database, backup, watchtower, gossip, configurazione di nodi, ecc. Siamo noi a occuparci di tutto, così che tu possa concentrarti su ciò che è più importante per te – i tuoi utenti e le tue necessità!
Che cosa riserva il futuro?
Abbiamo già ricevuto diversi feedback da parte dei nostri collaboratori:
- Breez ha costruito il suo Breez SDK su Greenlight, ampliando la nostra offerta con LSP e servizi di swap, così come migrando il loro famoso wallet Breez su Greenlight.
- Validazione Lightning Signer per la nostra infrastruttura di firme sicura, aiutandoci ad avvicinarci a una verifica totalmente end-to-end.
- Wallet Blockstream Green per feedback interni e testing.
- Core Lightning per essere la migliore implementazione Lightning di questa portata.
Non vediamo l’ora di poter lanciare tutti i nostri lavori, ma per farlo abbiamo ancora bisogno di altri feedback da parte dei developer. Ti invitiamo a unirti a noi su Discord sul canale #greenlight o sulla developer page della community Build On L2 per condividere i tuoi pensieri e le tue esperienze, così come per rimanere aggiornato sui prossimi workshop dedicati a Greenlight.
Facci anche sapere se stai lavorando a qualche entusiasmante progetto utilizzando Greenlight. potremmo pubblicarlo sul blog ufficiale di Blocsktream!