Lightning Labs släppte nyligen en första alpha-release av sin Lightning App, först med en desktopvariant för Windows, Mac och Linux, men med intentionen att snart även få ut versioner för iOS och Android. Det intressanta med den här appen är att den använder Neutrino-protokollet för att bevara din personliga integritet samtidigt som du inte behöver köra en fullnod och ladda ner hela blockkedjan. Så vad är Neutrino? Låt oss börja med det som kallas SPV.
SPV
SPV står för Simplified Payment Verification och är en teknik som Satoshi hade i åtanke redan när han ursprungligen beskrev Bitcoin 2008. Såhär skrev Satoshi:
It is possible to verify payments without running a full network node. A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in.
Det här var dock inte något som var implementerat i mjukvaran Satoshi senare släppte och det dröjde till 2013 innan en riktig lösning fanns när Bloom filters implementerades genom BIP37. Innan BIP37 hade SPV-klienter fått ladda ned alla block och transaktioner för att sedan slänga bort det som var irrelevant, vilket inte blir speciellt praktiskt på en mobiltelefon där man kanske har begränsad datatrafik etc., men med Bloom filters kunde klienterna istället ladda ned endast en del av transaktionerna genom att skicka ett filter till servern. Tyvärr visade det sig att de löften om integritetsskydd som fanns inte var så bra som man från början trott så en server kunde i praktiken lista ut väldigt mycket om de klienter som anslöt sig.
Neutrino
Neutrino är ett nytt försök till lösning på SPV-problemet där en större del av jobbet återigen ligger hos klienten men den här gången med en imponerande komprimering av blockinformationen. Istället för att be servern om de kompletta blocken ber klienten om s.k. filter för varje block. Dessa är bara runt 15-20 kB stora men kan användas för att kontrollera om transaktioner som är relevanta för klienten finns med i blocket. Bara om blocket är relevant kommer hela blocket att laddas ned. Med den här lösningen kommer alltså servern att veta mycket mindre om vilka transaktioner klienten är intresserad av. Det är också en fördel för servern eftersom filtren som en klient kan begära ser likadana ut för alla klienter vilket innebär att de kan skapas upp på förhand, till skillnad från BIP37 där varje klient kunde skicka helt olika förfrågningar vilket ledde till mer arbete för servern och risk för DoS-attacker.
För den som är intresserad av de tekniska detaljerna så finns dessa beskrivna i BIP 157 och BIP 158.
Lightning App
Neutrino är inte bara intressant för klassiska Bitcoinklienter utan även för Lightningklienter och det är alltså det som Lightning Labs nu utnyttjar i sin Lightning App. En viss synkningstid förekommer när man första gången använder appen men Lightning Labs har som mål att det inte ska ta längre tid än att det görs klart under tiden att användaren skapar sin plånbok och skriver ned sina backup-ord.
Processen för att komma igång är densamma som för de flesta Bitcoinplånböcker nuförtiden. Skapa ny plånbok, skriv ner och spara dina backup-ord på en säker plats, och du är igång. Lightning Labs har valt att endast visa ett bitcoinsaldo istället för att som många andra Lightningplånböcker skilja på on-chain och off-chain-saldon vilket ger en försmak av en framtid där användaren knappt behöver veta att Lightning Network används, och definitivt inte detaljerna om hur det används. Andelen som finns på Lightning Network indikeras dock genom en procentangivelse under saldot.
Lightning Labs har försökt att pusha gränserna när det gäller enkelhet och användargränssnittet är som synes i princip så avskalat det kan bli. Det går att betala en lightningfaktura såväl som en vanlig bitcoinadress genom Pay-knappen. För att ta emot bitcoin behöver man dock förstå skillnaden mellan blockkedjan och Lightning Network. Request-knappen används för att ta emot en lightningbetalning medan du för att ta emot en vanlig bitcointransaktion (eller flytta bitcoin till Lightning beroende på hur man väljer att se det) använder knappen uppe till vänster, som kallas Deposit funds. Intentionerna är definitivt riktiga men vi är inte riktigt i mål när det gäller att göra användarupplevelsen sömlös mellan on-chain och Lightning.
Just att ta emot lightningbetalningar är också ett område där man fortfarande måste förstå principerna bakom Lightning för att komma igång. Även om jag ovan har satt in bitcoin och tycker att allt ser OK ut så går det inte för mig att ta emot en lightningbetalning eftersom den kanal eller de kanaler som skapats upp fortfarande har alla bitcoin "på min sida". Först efter att jag utfört en betalning kommer det att vara möjligt för mig att ta emot, om jag inte löser det på annat sätt, t.ex. genom att se till att någon öppnar en kanal till mig (något som vi skrivit om tidigare).
Den som vill ha mer tekniska detaljer hittar transaktionerna under Transactions och alla detaljer om kanaler och möjlighet att manuellt sätta upp sådana genom att klicka på procentsiffran under saldot. Det är viktigt att förstå att det här är en mycket tidig release riktad till teknikintresserade som vill testa med småpengar. Watchtowers eller liknande lösningar har fortfarande inte implementerats vilket gör att du löper en liten risk att bli lurad på dina pengar om du inte startat appen eller låtit den vara offline under en längre tid. Hur som helst så är detta en intressant inblick i hur Lightningplånböcker kan förenklas så att de i framtiden blir lika enkla att använda som vilken digital plånbok som helst. Ladda ned och testa på egen risk!