Bitcoin wird immer verbreiteter, der Preis steigt, und immer mehr Leute nutzen Bitcoin. Es gibt da aber ein Problem, das dem Ganzen im Weg steht, und zwar die Skalierbarkeit. Visa verarbeitet im Schnitt etwa 4000 Transaktionen pro Sekunde, Bitcoin kann maximal nur sieben Transaktionen pro Sekunde verarbeiten. Je mehr Bitcoin wächst, umso höher werden auch die Transaktionskosten, und man muss länger darauf warten. Aber es gibt bereits eine Lösung, an der immer weiter gearbeitet wird, und die nennt sich Lightning Network. Der Hauptgedanke dahinter ist, dass alltägliche und kleinere Transaktionen nicht auf der Hauptblockchain gespeichert werden müssen, sondern offchain passieren.
So kaufst du Bitcoin
Du kannst Bitcoin ja nicht physisch in der Hand halten und auch nicht im Supermarkt einfach mitnehmen. Die Antwort ist: Du brauchst eine Börse, eine Plattform, die es dir erlaubt, deine Euros in Bitcoin zu tauschen. Und nein, du musst nicht direkt einen ganzen Bitcoin kaufen. Du brauchst keine 100.000 Euro oder so. Du kannst mit weniger als einem Euro anfangen, denn Bitcoin ist genauso wie der Euro in kleinere Einheiten unterteilbar.
Beim Thema Börse hat man mittlerweile wirklich viele Optionen. Die wichtigsten Sachen, auf die man achten sollte, ist einerseits die Gebührenstruktur — wie teuer ist das Kaufen und Verkaufen — und dann, wo die Börse sitzt. Da will man in der Regel Börsen vermeiden, die auf irgendwelchen Inseln wie den Bahamas sitzen. Und ganz wichtig: Du möchtest deine Bitcoin auch von der Plattform abziehen können. Das ist nämlich vor allem bei großen Börsen oftmals nicht möglich.
Die Bitcoin, die du gekauft hast, einfach auf der Börse liegen zu lassen, ist an sich nichts Schlimmes. Aber wenn du dich damit unwohl fühlst, der Börse einfach nicht hundertprozentig vertraust oder wirklich mit größeren Summen unterwegs bist, dann ganz klare Empfehlung: lager deine Bitcoin extern auf einer eigenen Wallet. Am sichersten ist man da mit einer Hardware Wallet, das ist ein kleines Gerät, was deine Bitcoin offline speichert, also komplett außerhalb des Internets, und damit vor Hacks, Plattformausfällen oder Insolvenzen schützt.
So funktioniert das Lightning-Netzwerk
Gehen wir mal von einem Beispiel aus: Ein Kunde kauft sich jeden Tag ein Mittagessen in der Kantine und bezahlt dafür fünf Euro. Wenn er das Ganze jetzt mit Bitcoin auf der Main Blockchain machen würde, würden dafür viel zu hohe Transaktionskosten entstehen, die wahrscheinlich sogar teurer werden als das ganze Mittagessen. Wenn er jetzt aber das Lightning-Netzwerk verwenden würde, könnten der Kunde und die Kantine stattdessen einen sogenannten Payment Channel eröffnen. Dafür werden von beiden Parteien jeweils eine bestimmte Menge an Bitcoin auf eine sogenannte Multi-Signature-Adresse eingezahlt. Nehmen wir mal an, der Kunde zahlt circa 500 Euro ein, und die Kantine zahlt nichts ein, da diese nichts vom Kunden kaufen wird. Zusätzlich zur Einzahlung gibt es da noch eine Bilanz darüber, wem wie viel von dem Geld aktuell gehört. Das bedeutet, zum Anfang steht da: Kunde gehört 0,01 Bitcoin, Kantine gehört 0 Bitcoin. Diese Einzahlungstransaktion ist die Eröffnung des Payment Channels, und die findet auch auf der Main Blockchain statt, so dass alle das sehen können.
Schauen wir uns nun an, was passiert, wenn der Kunde für sein Mittagessen bezahlt. Das Mittagessen kostet fünf Euro, also umgerechnet circa 0,0001 Bitcoin. Um zu bezahlen, ändert der Kunde einfach die Bilanz um den Betrag ab, so dass nun da steht: Kunde gehört 0,0099 Bitcoin, Kantine gehört 0,0001 Bitcoin. Beide Vertragspartner verpassen dem Ganzen noch eine digitale Signatur mit ihren privaten Schlüsseln und erhalten jeweils eine Kopie der Bilanz, um sie aufzubewahren. Der Kunde kann nun hunderte von Bestellungen nach genau diesem Muster durchführen, so lange dafür genug Geld eingezahlt ist.
Der Payment Channel kann jederzeit von einem der Partner aufgelöst werden. Alles, was derjenige dafür tun muss, ist den letzten aktuellen Stand der Bilanz, der von beiden signiert wurde, an das Bitcoin-Netzwerk zu verschicken. Die Miner nehmen diese Transaktion dann in der Blockchain auf, und das Geld wird freigesetzt und so aufgeteilt, wie auf der Bilanz beschrieben. Dadurch wird die Belastung der Blockchain stark gesenkt: Es werden nur zwei Transaktionen benötigt, eine zum Öffnen des Payment Channels und eine zum Schließen. Es ist außerdem sehr sicher, und es ist immer nur möglich, die letzte Bilanz, die von beiden signiert wurde, einzulösen.
Ein Problem ist es trotzdem noch, dass man so ja mit jeder Person einen einzelnen Payment Channel eröffnen müsste. So ist es in der Praxis aber nicht: Es lassen sich nämlich auch die Payment Channels von anderen Personen nutzen. Wichtig ist nur, dass es insgesamt einen Weg gibt, der von der einen zur anderen Person führt, und auf dem Weg jeweils genug Geld eingezahlt ist. Das System sucht sich dann automatisch immer den Weg mit den wenigsten Zwischenpersonen, so dass man nicht zu jeder Person einen eigenen Payment Channel benötigt.
Was ist ein BTCPay Server?
Wenn du bereits einen Online-Shop hast, dann hast du vielleicht Kreditkarte oder PayPal im Angebot, oder Lösungen für Rechnungskauf und Sofortüberweisung. In all diesen Fällen hast du eine Zusammenarbeit mit einem Payment Provider, auf Deutsch: Zahlungsanbieter. Wenn du Bitcoin-Zahlungen akzeptieren möchtest, musst du also mit einem Bitcoin-Zahlungsabwickler zusammenarbeiten, der sich auf Bitcoin spezialisiert hat.
Dabei stellt sich die Frage, warum man das nicht einfach selbst macht. Im Bitcoin-Whitepaper steht, dass Bitcoin ohne einen Mittelsmann auskommt, dass Bitcoin immer vom Sender zum Empfänger direkt gesendet wird, ohne dass jemand dazwischen ist. Und genau das kann man sich mit einem BTCPay Server selbst bauen: Ein Händler kann damit selber seine eigene Bitcoin-Zahlungsabwicklung machen und ist nicht mehr angewiesen auf die Zusammenarbeit mit einem Zahlungsanbieter. Zwischen dem Händler und Endkunden gibt es eine direkte Zahlung, und es ist keine Partei zwischengeschaltet.
BTCPay Server: Was entfällt gegenüber einem Zahlungsanbieter
Wer seine Bitcoin-Zahlungsabwicklung mit einem BTCPay Server vornimmt, muss folgendes nicht mehr: Du musst kein Konto eröffnen und dabei deine Geschäftsunterlagen zur Verfügung stellen. Du musst dein Geschäftsmodell nicht erklären und überprüfen lassen. Du musst keine monatliche Gebühr bezahlen, keine prozentbezogene Gebühr auf den Umsatz oder eine Transaktionsgebühr, denn die Nutzung eines BTCPay Servers ist kostenlos. Die Gutschriften deiner Umsätze werden direkt auf der eigenen Bitcoin-Adresse gutgeschrieben, und es gibt keinen zeitlichen Verzug bei dem sogenannten Settlement. Es wird auch kein Sicherheitsbetrag einbehalten, denn eine Bezahlung ist final, und es gibt keine Rückbuchungen.
BTCPay Server einrichten
Das besondere an LunaNode ist, dass es spezialisiert ist auf das Hosting von BTCPay-Servern. Für umgerechnet unter 10 US-Dollar im Monat kann man dort bereits seinen eigenen BTCPay Server betreiben, und es ist sehr einfach, einen eigenen BTCPay Server aufzusetzen — auch ohne technische Voraussetzungen.
Wir beginnen mit der Einrichtung: Dazu wechseln wir auf die Webseite von lunanode.com und beginnen mit dem Setup-Prozess. Für die Registrierung benötigen wir eine E-Mail-Adresse, ein selbst gewähltes Passwort, und zu einem späteren Zeitpunkt noch eine Mobilfunknummer, an die eine SMS geschickt wird. Wir beginnen mit unserer E-Mail-Adresse und einem selbst gewählten Passwort, wählen unser Land aus und klicken auf Submit. Wir gelangen dann automatisch auf das LunaNode-Dashboard.
Bevor wir unser Konto aufladen, haben wir eine E-Mail von LunaNode bekommen, die unsere E-Mail-Adresse bestätigt. Wir fangen an und hinterlegen als Beispiel 20 US-Dollar, geben unsere Telefonnummer mit internationaler Vorwahl ein und bekommen eine SMS geschickt, die einen vierstelligen Code enthält. Diesen Code geben wir ein. Nachdem wir unsere Handynummer verifiziert haben, können wir unser Konto aufladen: Wir laden 10 US-Dollar auf und bestätigen. Hier sehen wir das LunaNode-Payment-Fenster und haben die Option, zwischen Bitcoin und Bitcoin Lightning zu wählen. Wir öffnen unsere Lightning-Wallet, scannen den QR-Code und klicken auf bezahlen. Die Zahlung ist erfolgreich, und wir bekommen parallel eine E-Mail, die bestätigt, dass die Einzahlung gutgeschrieben worden ist.
Jetzt beginnen wir mit dem Aufsetzen des Servers. Wir wechseln auf API und bekommen hier die Anmeldedaten. Wir klicken auf „Create API Credentials“ und bekommen zwei Angaben: den API-Key und die API-ID. Diese beiden Angaben kopieren wir uns in eine separate Textdatei, denn die beiden benötigen wir für den nächsten Schritt. Wir wechseln auf die BTCPay-Server-Seite von LunaNode und tragen die API-ID und den API-Key dort ein. Hier oben wird uns angezeigt, dass wir für den Server in der Größe M.2, eine virtuelle Maschine, einen monatlichen Preis von 8,80 Euro bezahlen werden. Das ist die kleinste Maschine, und die ist vollkommen ausreichend, wenn wir nur die Bezahlmethode Bitcoin akzeptieren wollen.
Wir klicken auf Continue und sehen hier eine IP-Adresse. Auch diese kopieren wir uns, denn die brauchen wir, wenn wir unseren BTCPay Server auf einer eigenen Domain laufen lassen wollen. Wir wählen die Option mit eigenem Domain-Endpunkt und klicken auf Continue. Auf der nächsten Seite sehen wir, welche Blockchains wir auf dem Server installiert haben möchten. Vorausgewählt ist Bitcoin. Wir empfehlen, hier nur Bitcoin und Lightning zu nehmen, und wir entscheiden uns für LND, die Lightning-Implementierung. Welchen virtuellen Server wir benutzen möchten: Wir nehmen M.2, der ist für den Plan vollkommen ausreichend.
Es gibt noch die Option der schnelleren Synchronisierung der Blockchain: Auf dem BTCPay Server wird die komplette Blockchain seit Anbeginn auf dem Server kopiert. Ohne Schnellstart dauert es ungefähr sieben Tage, bis die komplette Blockchain installiert ist. Mit dem Schnellstart dauert es nur zwei bis drei Tage, kostet einmalig 3 US-Dollar, und die sind es wert, dass es ein bisschen schneller geht.
Ab jetzt beginnt das Aufsetzen des BTCPay Servers. In ungefähr fünf Minuten sehen wir den Link, der uns zum Login-Bereich unseres BTCPay Servers bringt. Im Backend sehen wir ein Fenster, das zeigt, dass der BTCPay Server dabei ist, die Blockchain zu synchronisieren. Dieser Vorgang dauert etwa zwei bis drei Tage, die wir abwarten sollten.
Damit unsere eigene Domain funktioniert, loggen wir uns beim Domain-Provider ein, der unsere Domains verwaltet, und erstellen einen CNAME-Eintrag, der für unsere Domain zum Beispiel btcpayserver.unserefirma.at generiert. Wir tragen den Record-Namen ein, wählen den Record-Typ und geben die IP-Adresse ein, die uns bei der Registrierung von LunaNode zur Verfügung gestellt worden ist. Es wird ungefähr ein bis zwei Stunden dauern, bis dieser Eintrag registriert ist und über das gesamte Internet aufrufbar ist.
Nachdem der DNS-Record erstellt ist und die Blockchain synchronisiert wurde, loggen wir uns ins Backend ein. Wir gehen unten links auf Server Settings und geben im Bereich Domain Name den Domain-Namen ein, den wir mit der IP-Adresse hinterlegt haben, und bestätigen per Confirm. Danach passiert Folgendes: Der Server wird angehalten, fährt runter und startet dann automatisch neu. Wenn wir unsere Domain aufrufen, sehen wir die Seite mit dem Schloss, und alles läuft über HTTPS.
Selbst hosten: BTCPay Server mit Docker auf einem VPS
Wenn du bereits bei einem dritten Host einen BTCPay Server anschaltest, kannst du diesen Abschnitt überspringen und später darauf zurückkommen, wenn dein Shop wächst und du einen eigenen Server brauchst. Die Dritt-Lösung ist super für Einsteiger, denn dann kümmert sich jemand anderes um deinen Server. Aber auf die Full Node von jemand anderem zu bauen, bringt Privatsphäre- und Vertrauensprobleme mit sich. Ein selbst gehosteter BTCPay Server bietet darüber hinaus zusätzliche Funktionen wie das Lightning-Netzwerk und die Möglichkeit, unbegrenzt viele Stores zu verbinden und Payment-Provider für andere zu sein — und das funktioniert nur, wenn du Server-Admin oder Besitzer bist. Wenn du also mit der Dritt-Lösung an Grenzen stößt, solltest du ernsthaft darüber nachdenken, eine eigene BTCPay-Server-Instanz auf einem VPS zu betreiben.
BTCPay kann auf jeden VPS deployed werden, der folgende Anforderungen erfüllt: 80 Gigabyte Speicher sind ziemlich ausreichend, wenn du den Pruned-Modus nutzt. Wenn du Kryptowährungen außer Bitcoin akzeptieren und obendrauf das Lightning-Netzwerk möchtest, solltest du etwas größeren Speicher in Betracht ziehen.
Kosten des Setups
Für dieses Setup verwenden wir einen LunaNode-VPS, der Bitcoin akzeptiert und relativ günstig ist: Der M2-Plan kostet 7 Dollar im Monat, dazu kommen 2,4 Dollar für zusätzlichen Speicher und einmalig 3,5 Dollar. Insgesamt sind es also 9,4 Dollar im Monat plus 3,5 Dollar im ersten Monat.
Das Erste, was du tun musst, ist natürlich, dein Konto zu erstellen: Klicke auf Sign up, gib deine E-Mail-Adresse, ein Passwort und dein Land ein und bestätige per E-Mail. Dann fügst du Guthaben hinzu: Klicke auf „Deposit credit“, wähle den Betrag und die Zahlungsmethode — ich zahle hier mit Bitcoin — und verifiziere deine Telefonnummer über den PIN-Code aus der SMS.
Klicke anschließend auf „Create VM“, wähle eine Region, gib einen Hostnamen ein, etwa BTC pay, wähle den memory-optimierten Plan M2, als Betriebssystem Ubuntu 64-Bit, und klicke auf „Create virtual machine“. Danach fügst du ein zusätzliches Volume hinzu: Gehe auf Volumes, wähle dieselbe Region, nenne das Volume, etwa BTC pay, wähle 80 Gigabyte und erzeuge das Volume. Hänge das Volume an die virtuelle Maschine an, und aktiviere im CPU-Tab „Pay for CPU above baseline performance“.
Wenn du einen eigenen Domain-Namen möchtest: Kopiere die externe IP-Adresse deiner VM und lege in deinem Domain-Konto einen A-Record mit dieser IP-Adresse an.
Nun installieren wir den BTCPay Server. Dafür nutzen wir ein bisschen die Kommandozeile — keine Angst, es geht nur ums Kopieren und Einfügen von Befehlen, die es schon gibt. Als Erstes loggst du dich in die virtuelle Maschine ein: ssh ubuntu@deine-domain, dann das Passwort aus LunaNode, dann sudo su. Danach kopierst du die Befehle nacheinander: den Befehl, Docker auf dieses Volume zu setzen, dann die Installation von Git, dann die Installation von BTCPay. Wenn du Bitcoin möchtest, fügst du diesen Befehl ein, und wenn du die Lightning-Netzwerk-Implementierung möchtest, fügst du diesen Befehl ein. An einer Stelle musst du noch selbst etwas ändern: den Text in den Anführungszeichen durch deine eigene Domain ersetzen und deine E-Mail-Adresse eintragen.
Kopiere den nächsten Befehl, füge ihn ein — und nun beginnt BTCPay, sich zu installieren. Das dauert zwei bis drei Minuten. Lass das Terminal offen, schalte den Laptop nicht aus und warte einfach. Wenn du die Meldung „BTCPay Server started“ siehst, ist es abgeschlossen. Unser BTCPay Server ist jetzt vollständig installiert. Er hat auch das Lightning-Netzwerk und die Bitcoin Full Node installiert. Jetzt gehst du in deinen Browser, gibst den Domain-Namen ein, und dein BTCPay Server läuft.
Eine sehr wichtige Sache: Du siehst hier diese Warnung „Your nodes are syncing“. Das bedeutet, der BTCPay Server muss die gesamte Blockchain laden und synchronisieren. Da dies ein prozessintensiver Vorgang ist, kann es ein paar Tage dauern — bei einer günstigen virtuellen Maschine auch drei oder vier Tage. Schau in drei oder vier Tagen nochmal rein, dann kannst du den BTCPay Server vollständig nutzen.
Lightning einrichten
Wenn ihr Lightning-Zahlungen akzeptieren wollt, müsst ihr dem Server mitteilen, mit welcher Lightning-Node ihr die Lightning-Zahlungen akzeptieren wollt. Auf dem Dashboard, im Setup, seht ihr, dass eine Lightning-Node noch fehlt. Wenn ihr darauf klickt, seht ihr die ganzen Optionen, und wenn ihr die maximale Konfiguration habt, seht ihr drei Optionen.
Die erste wäre: Nutze die interne BTCPay-Server-Node. Das ist das LND, das integriert dem Server ist. Ich wähle die Option „Use internal node“, dann klickt ihr auf Save, und fertig. Ihr benutzt schon die Schnittstelle zur eigenen Lightning-Node. Einfach ist das, aber natürlich ist es nicht einfach nur „Lightning-Node“ klicken und benutzen: Dahinter braucht ihr eine Node, die im Netzwerk gut verbunden ist, die Channels hat und Zahlungen akzeptieren kann.
Dann gibt es die zweite Möglichkeit: Ich benutze eine externe Node. Also kann ich eine Lightning-Node verknüpfen, die nicht direkt am BTCPay Server ist, sondern extern im Netz — entweder in meinem Heimnetzwerk oder auf einem Server. Das heißt, ich benutze eine benutzerdefinierte Node, „Use custom node“. Die externe Node muss über das Clearnet erreichbar sein, eine Tor-Verbindung ist noch nicht verfügbar. Wenn ihr zum Beispiel meine Variante nehmt mit dem LunaNode-Server und eure heimische Lightning-Node benutzen wollt, dann müsst ihr im BTCPay Server das Admin-Macaroon der Node mitteilen — das heißt Vollzugriff —, und eure Node zu Hause muss über das Internet erreichbar sein. Es muss eine Portweiterleitung eingerichtet sein, und das einfach ist der Nachteil: Ihr gewährt Zugriff von außen auf euer eigenes Netzwerk, und das ist ein Sicherheitsthema.
Dann gibt es die Möglichkeit, LNbank zu nutzen: Das ist keine eigene Lightning-Node, sondern ein Plugin auf dem BTCPay Server, das die interne Lightning-Node benutzt, aber ohne Zugriff auf die kompletten Fonds. Es gibt eine extra Wallet, die sich für jeden User anlegt, der sich beim BTCPay Server anmeldet. Ihr könnt euren Users eure Lightning-Instanz zur Verfügung stellen, die können Rechnungen akzeptieren und versenden, und ihr als Verwalter habt die Fonds. Achtung: Das könnt ihr nicht als Geschäft in Deutschland anbieten. Wenn ihr Kryptowährung für andere Leute verwalten wollt, dann braucht ihr dafür eine Erlaubnis der BaFin.
Wenn ihr eine eigene Node zu Hause habt, zum Beispiel mit Umbrel installiert, und einen BTCPay Server bei einem externen Anbieter, dann gibt es eine schöne Mischvariante: Ihr macht von eurer Node einen Kanal zum virtuellen Server, und stellt dem dann die Liquidität bereit. So habt ihr die Verfügbarkeit, und ihr müsst euch nicht so sehr ums Channel-Management kümmern. Wenn dann eine Zahlung akzeptiert wird, kommt das auf eine lokale Balance in den Kanal, und ihr könnt ganz einfach rebalancen — von eurer eigenen Node her, den Kanal wieder leer räumen — und die Liquidität bei euch zu Hause lassen.
Fazit
Das Lightning-Netzwerk bietet ein weltweites Netzwerk. Jeder kann teilnehmen, und dann kann man theoretisch sogar Centbeträge im Sekundentakt an jemanden bezahlen oder das Ganze noch viel weiter unterteilen. Es sorgt dafür, dass wir eine zweite Ebene haben, auf der wir installieren können, und die Hauptblockchain wird entlastet.