Was sind Orakel und wieso braucht es diese?
«Ohne Orakel sind Blockchains wie Computer ohne Internetverbindung» (Adams, 2021) – diese treffende Aussage beschreibt die Notwendigkeit von Orakel in einer Blockchain-Welt. Orakel dienen dazu, off-chain Daten in das abgeschlossene System einer Blockchain zu bringen. Damit bilden Orakel die Brücke zwischen den off-chain und on-chain Welten.
Ohne Orakel könnten Blockchain Systeme nur Anwendungen laufen lassen, welche sich lediglich auf in der Blockchain verfügbare Daten beziehen. Die Möglichkeit, Datenquellen von extern zuzulassen, erweitert das Anwendungsfeld von Blockchain-Lösungen immens. Beispielsweise müssen Marktpreisdaten, sowohl von digitalen oder traditionellen Vermögenswerten, in die on-chain Welt eingeführt werden, um eine Vielzahl von Finanzanwendungen zu bauen.
Anwendungsfälle für Orakel
Bei Non-Native digitalen Assets (z.B. Immobilien-Token), die sich auf einen Wert ausserhalb der Blockchain beziehen, wird oft ebenfalls ein Datenstrom benötigt, welcher off-chain existiert, aber in der on-chain Welt ebenfalls verfügbar gemacht werden muss. Auch Stablecoins, welche off-chain Sicherheiten aufweisen, sind auf Orakel angewiesen, um deren Hinterlegung auch on-chain transparent zugänglich zu machen. Diese Beispiele zeigen, dass gerade bei Finanzanwendungen und digitalen Vermögenswerten häufig off-chain Daten benötigt werden. Dadurch ist die Notwendigkeit von Orakel hier besonders hoch.
Um ein weiteres konkretes Beispiel zu machen: Nehmen wir an, Mia und Freddy möchten eine Wette abschliessen. Freddy erhält von Mia 100 Zoo-Tokens, wenn diese in einem Monat einen Wert von über EUR 1.50 pro Token aufweisen. Falls dies nicht der Fall ist, muss Freddy Mia eine seiner eigenen digitalen FC Liverpool Spielerkarte geben. Der Marktpreis eines digitalen Vermögenswertes – und hier der Zoo-Token – findet in der Regel nicht Eingang in die Blockchain – die Festsetzung des gehandelten Preises geschieht ausserhalb an Handelsplätzen. Damit die Wette zwischen Mia und Freddy auf einem Smart Contract implementiert werden kann und es zur automatisierten Abwicklung kommt, muss der Smart Contract den Marktpreis der Zoo-Token in einem Monat erfahren. Diese externe Information wird über ein Orakel in den Smart Contract eingebunden.
Die Funktionsweise von Orakeln
Wie aber funktionieren diese Orakel? Ein Smart Contract kann nicht einfach eine externe Schnittstelle, beispielsweise über eine API, anfragen. Der Grund dafür liegt in der deterministischen Bauweise einer Blockchain. Das bedeutet, dass heute die gesamten historischen Transaktionen auf einer Blockchain nochmals durchgespielt werden können und man stets auf dasselbe Ergebnis kommen würde. Nodes sind dafür zuständig, Transaktionen, wie beispielsweise das Ausführen eines Smart Contracts, zu verifizieren. Müssten sie eine Smart Contract Ausführung mit einem API Aufruf verifizieren, müssten die Nodes die API selber auch nochmals aufrufen. Weil die API ausserhalb des Einflussbereiches der Blockchain ist, ist es gut möglich, dass der erneute Aufruf bei der Validierung zu einem anderen Ergebnis führt. Dies führt einerseits dazu, dass Transaktionen nicht validiert werden können und andererseits wären die Blockchains nicht mehr deterministisch. Eine Abhängigkeit von einer externen API kann dazu führen, dass je nach Ergebnis der API-Abfrage, die Blockchain heute bei erneutem Abspielen anders aussehen würde.
Um unser Beispiel zu nehmen: Nehmen wir an, die Schnittstelle zum Handelsplatz liefert nach einem Monat das Ergebnis, dass der Preis der Zoo-Token bei EUR 0.00 liegt. Wäre der Smart Contract direkt mit der Schnittstelle verbunden, würde er die Wette ausführen mit dem Ergebnis, dass Mia die Wette gewonnen hat. Stellt sich zwei Tage später beim Handelsplatz heraus, dass die Daten fehlerhaft waren und der Preis eigentlich bei EUR 1.60 lag, aktualisieren sie ihre API-Schnittstelle. Würde nun der Smart Contract die Wette nochmals mit direktem Abruf der Schnittstelle prüfen, hätte Freddy gewonnen.
Die Lösung dafür sind Orakel: Orakel dienen dazu, externe Daten als unveränderbare Kopie in das Blockchain-System einzuführen. Dies geschieht in der Regel, in dem das Orakel selbst als Smart Contract aufgebaut wird. Dieser Smart Contract kann externe Datenquellen wie APIs aufrufen und sendet dann die Daten als Transaktion auf der Blockchain in das on-chain System. Die verifizierenden Nodes müssen dann nicht mehr das API aufrufen, sondern beziehen die Daten aus der Blockchain Transaktion. Die Transaktion und damit die Daten sind nun unveränderbar und resultieren auch bei künftigen Aufrufen immer in demselben Ergebnis.
Das Orakel-Problem
Die Nutzung von Orakel, so notwendig sie sein mag, führt gleichzeitig aber auch zum sog. Orakel Problem. Dieses beschreibt das Dilemma, dass die Blockchain selbst zwar keine Möglichkeit hat, off-chain Daten zu erhalten, die Nutzung eines Orakels dagegen zwar hilft, aber wieder Zentralität in das System bringt. Basiert die Ausführung einer Blockchain-Anwendung auf einer zentralen Datenquelle, so werden viele Vorteile der Dezentralität einer Blockchain zunichte gemacht. Die Datenquelle mag zwar nach den besten Absichten aufgebaut worden sein – aber sie kann dennoch angegriffen werden oder Fehler aufweisen. Die Nutzung einzelner, zentral aufgebauter Orakel stellen damit ein hohes Sicherheitsrisiko dar. Um nochmals unser Beispiel zur Hand zu nehmen: Mit einem Orakel stellen wir zwar sicher, dass immer mit dem Preis von 0.00 Euro pro Zoo-Token gerechnet wird, aber dass dies ein falscher Wert aufgrund eines Datenfehlers ist, kann die Blockchain nicht merken.
Es gibt verschiedene Lösungen, das Orakel Problem zu entschärfen. Beispielsweise kann ein Orakel verwendet werden, welches die Daten aus mehreren Datenquellen kombiniert. Daten werden gesäubert, so dass Ausreisser keinen Einfluss haben. So wird die Herausforderung gelöst, dass einzelne Datenströme fehlerhaft sind. Es bleibt jedoch das Sicherheitsproblem, dass das Orakel selbst angegriffen werden kann. Eine alternative Lösung ist deshalb, mehrere Orakel zu verwenden. Je höher die Anzahl verwendeter Orakel, desto sicherer gilt die Datenquelle sowohl in Bezug auf ihre Fehlerhaftigkeit als auch ihre Resistenz gegen arglistige Angriffe. Das heisst aber nicht, dass für jede Anwendung unbedingt eine grösstmögliche Anzahl Orakel notwendig sind. Vielmehr geht es darum abzuschätzen, welche Relevanz das Orakel innerhalb der gesamten Anwendung einnimmt. Wird ein Orakel verwendet, um Preisdaten als Information in einer App zu Informationszwecken zu illustrieren, kann dieses einfach gebaut werden. Werden externe Daten jedoch verwendet, um strukturierte Produkte automatisiert abzuwickeln, welche eine Auszahlung auf Preisdaten unterliegender Vermögenswerte basieren, ist die Wichtigkeit des Orakels enorm hoch. In einem solchen Fall lohnt sich der Aufbau eines gut durchdachten Orakel-Netzwerks. Hilfe bieten Angebote, welche für das Kombinieren von Orakel gebaut wurden (eines der bekannten Angebote ist Chainlink).
Orakel bei privaten Blockchains
Orakel werden nicht nur bei öffentlichen Blockchains benötigt. Auch private Blockchains sind deterministisch aufgebaut und besitzen daher eine Notwendigkeit für die Einbindung von Orakel. Bei Corda gibt es einen Orakel Service, welcher es erlaubt, ein Orakel Netzwerk einfach aufzubauen und auf bereits existierende Funktionalitäten zuzugreifen. Hyperledger Fabric dagegen erlaubt zwar die Nutzung von Orakeln, diese müssen jedoch eigenständig eingebaut werden.
Quellen
Kurt, L. & Kurt, D. (2022). Digitale Assets & Tokenisierung. Wiesbaden: Springer Gabler
Adams, R. S. (28. Juni 2021). Why we need decentralized oracles. Abgerufen von https://newsletter.banklesshq.com/p/why-we-need-decentralized-oracles