Vitalik Buterin über die Vitalik Buterin Blog
Dies ist ein Spiegelbild des Beitrags unter https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627
Triggerwarnung: Mathe.
Eines der wichtigsten kryptografischen Grundprinzipien hinter verschiedenen Konstruktionen, einschließlich deterministischer Schwellenwertsignaturen, zk-SNARKs und anderen einfacheren Formen wissensfreier Beweise, ist die elliptische Kurvenpaarung. Elliptische Kurvenpaare (oder „bilineare Karten“) sind eine neue Ergänzung zu einer 30-jährigen Geschichte der Verwendung elliptischer Kurven für kryptografische Anwendungen, einschließlich Verschlüsselung und digitaler Signaturen; Paarungen führen eine Form der „verschlüsselten Multiplikation“ ein und erweitern die Möglichkeiten elliptischer Kurven basierender Protokolle erheblich. Der Zweck dieses Artikels besteht darin, auf elliptische Kurvenpaare im Detail einzugehen und einen allgemeinen Überblick über ihre Funktionsweise zu geben.
Es wird nicht erwartet, dass Sie alles verstehen, wenn Sie es zum ersten Mal oder sogar zum zehnten Mal lesen. Dieses Zeug ist wirklich hart. Aber hoffentlich gibt Ihnen dieser Artikel zumindest eine kleine Vorstellung davon, was unter der Haube vor sich geht.
Elliptische Kurven selbst sind kein triviales Thema, und in diesem Artikel wird im Allgemeinen davon ausgegangen, dass Sie wissen, wie sie funktionieren. Wenn nicht, empfehle ich diesen Artikel hier als Einführung: https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/. Um es kurz zusammenzufassen: Bei der Elliptischen-Kurven-Kryptographie handelt es sich um mathematische Objekte, die „Punkte“ genannt werden (das sind buchstäblich zweidimensionale Punkte mit (�,�)-Koordinaten), mit speziellen Formeln für deren Addition und Subtraktion (d. h. zur Berechnung der Koordinaten von �=). �+�), und Sie können einen Punkt auch mit einer ganzen Zahl multiplizieren (z. B. �⋅�=�+�+…+�, obwohl es eine viel schnellere Möglichkeit gibt, ihn zu berechnen, wenn � groß ist).
So sieht die Punktaddition grafisch aus.
Es gibt einen besonderen Punkt, der „Punkt im Unendlichen“ (�) genannt wird und der Null in der Punktarithmetik entspricht; es gilt immer �+�=�. Außerdem hat eine Kurve ein „Auftrag„; Es gibt eine Zahl �, so dass �⋅�=� für jedes � (und natürlich �⋅(�+1)=�,�⋅(7⋅�+5)=�⋅5 usw.). Es gibt auch einen allgemein anerkannten „Generatorpunkt“ �, der in gewisser Weise die Zahl 1 darstellt. Theoretisch kann jeder Punkt auf einer Kurve (außer �) � sein; Wichtig ist nur, dass � standardisiert ist.
Paarungen gehen insofern noch einen Schritt weiter, als sie es Ihnen ermöglichen, bestimmte Arten komplizierterer Gleichungen an elliptischen Kurvenpunkten zu überprüfen – wenn beispielsweise �=�⋅�,�=�⋅� und �=�⋅�, können Sie überprüfen, ob oder nicht �⋅�=�, sondern nur �,� und � als Eingaben. Dies könnte so aussehen, als ob die grundlegenden Sicherheitsgarantien elliptischer Kurven gebrochen würden, da Informationen über � allein durch die Kenntnis von P verloren gehen, aber es stellt sich heraus, dass die Leckage sehr begrenzt ist – insbesondere die Entscheidungsproblem von Diffie Hellman ist einfach, aber das rechnerische Diffie-Hellman-Problem (wenn man � und � im obigen Beispiel kennt, Computing �=�⋅�⋅�) und die diskretes Logarithmusproblem (Wiederherstellen von � aus �) bleiben rechnerisch nicht durchführbar (zumindest, wenn sie es zuvor waren).
Eine dritte Möglichkeit, die Funktionsweise von Paarungen zu betrachten, und die für die meisten Anwendungsfälle, mit denen wir uns befassen, vielleicht am aufschlussreichsten ist, besteht darin, elliptische Kurvenpunkte als einseitig verschlüsselte Zahlen (d. h. ����) zu betrachten ���(�)=�⋅�=�), während Sie mit der traditionellen elliptischen Kurvenberechnung dies überprüfen können linear Einschränkungen für die Zahlen (z. B. wenn �=�⋅�,�=�⋅� und �=�⋅�, Prüfung 5⋅�+7⋅�=11⋅� ist wirklich Überprüfen Sie, ob 5⋅�+7⋅�=11⋅� gilt. Mithilfe von Paarungen können Sie dies überprüfen quadratisch Einschränkungen (z. B. Überprüfung von �(�,�)⋅�(�,�⋅5)=1 ist wirklich Überprüfen, dass �⋅�+5=0). Und der Einstieg in die quadratische Form reicht aus, um mit deterministischen Schwellenwertsignaturen, Programmen für quadratische Arithmetik und all den anderen guten Dingen arbeiten zu können.
Was ist nun dieser lustige �(�,�)-Operator, den wir oben eingeführt haben? Das ist die Paarung. Mathematiker nennen es manchmal auch a Bilineare Karte; Das Wort „bilinear“ bedeutet hier im Wesentlichen, dass es die folgenden Einschränkungen erfüllt:
�(�,�+�)=�(�,�)⋅�(�,�)
�(�+�,�)=�(�,�)⋅�(�,�)
Beachten Sie, dass + und ⋅ beliebige Operatoren sein können; Wenn Sie ausgefallene neue Arten mathematischer Objekte erstellen, ist es der abstrakten Algebra egal, wie + und ⋅ sind definiert, solange sie auf die übliche Weise konsistent sind, z. �+�=�+�,(�⋅�)⋅�=�⋅(�⋅�) und (�⋅�)+(�⋅�)=(�+�)⋅�.
Wenn �, �, � und � einfach wären Zahlen, dann ist es einfach, eine einfache Paarung zu erstellen: Wir können �(�,�)=2�� machen. Dann können wir sehen:
�(3,4+5)=23⋅9=227
�(3,4)⋅�(3,5)=23⋅4⋅23⋅5=212⋅215=227
Es ist bilinear!
Solche einfachen Paarungen eignen sich jedoch nicht für die Kryptographie, da die Objekte, mit denen sie arbeiten, einfache ganze Zahlen sind und zu einfach zu analysieren sind; Mit ganzen Zahlen ist es einfach, zu dividieren, Logarithmen zu berechnen und verschiedene andere Berechnungen durchzuführen. Einfache ganze Zahlen haben kein Konzept eines „öffentlichen Schlüssels“ oder einer „Einwegfunktion“. Darüber hinaus können Sie mit der oben beschriebenen Paarung rückwärts gehen – wenn Sie � kennen und �(�,�) kennen, können Sie einfach eine Division und einen Logarithmus berechnen, um � zu bestimmen. Wir wollen mathematische Objekte, die so nah wie möglich an „Black Boxes“ sind, in denen man addieren, subtrahieren, multiplizieren und dividieren kann, aber mach nichts anderes. Hier kommen elliptische Kurven und elliptische Kurvenpaare ins Spiel.
Es stellt sich heraus, dass es möglich ist, eine bilineare Karte über elliptische Kurvenpunkte zu erstellen – das heißt, eine Funktion �(�,�) zu erstellen, bei der die Eingaben � und � elliptische Kurvenpunkte sind und die Ausgabe das ist, was man an nennt (��)12-Element (zumindest in dem speziellen Fall, den wir hier behandeln werden; die Einzelheiten unterscheiden sich je nach den Details der Kurve, mehr dazu später), aber die Mathematik dahinter ist recht komplex.
Lassen Sie uns zunächst Primfelder und Erweiterungsfelder behandeln. Die hübsche elliptische Kurve im Bild weiter oben in diesem Beitrag sieht nur dann so aus, wenn man davon ausgeht, dass die Kurvengleichung durch reguläre reelle Zahlen definiert ist. Wenn wir jedoch in der Kryptographie tatsächlich reguläre reelle Zahlen verwenden, dann können Sie Logarithmen verwenden, um „rückwärts“ zu gehen, und alles geht kaputt; Darüber hinaus kann der Platzbedarf für die tatsächliche Speicherung und Darstellung der Zahlen beliebig ansteigen. Daher verwenden wir stattdessen Zahlen in a Hauptfeld.
Ein Primzahlkörper besteht aus der Menge der Zahlen 0,1,2…�−1, wobei � eine Primzahl ist, und die verschiedenen Operationen sind wie folgt definiert:
�+�:(�+�) % �
�⋅�:(�⋅�) % �
�−�:(�−�) % �
�/�:(�⋅��−2) % �
Grundsätzlich erfolgt die gesamte Mathematik modulo � (siehe hier für eine Einführung in die modulare Mathematik). Die Division ist ein Sonderfall; Normalerweise ist 32 keine ganze Zahl, und hier wollen wir uns nur mit ganzen Zahlen befassen, also versuchen wir stattdessen, die Zahl � zu finden, so dass �⋅2=3, wobei ⋅ sich natürlich auf die modulare Multiplikation wie oben definiert bezieht. Dank an Der kleine Satz von Fermat, der oben gezeigte Potenzierungstrick erledigt den Job, aber es gibt auch einen schnelleren Weg, dies zu tun, indem man den verwendet Erweiterter euklidischer Algorithmus. Angenommen �=7; Hier ein paar Beispiele:
2+3=5 % 7=5
4+6=10 % 7=3
2−5=−3 % 7=4
6⋅3=18 % 7=4
3/2=(3⋅25) % 7=5
5⋅2=10 % 7=3
Wenn Sie mit dieser Art von Mathematik herumspielen, werden Sie feststellen, dass sie vollkommen konsistent ist und alle üblichen Regeln erfüllt. Die letzten beiden Beispiele oben zeigen, wie (�/�)⋅�=�; Sie können auch sehen, dass (�+�)+�=�+(�+�),(�+�)⋅�=�⋅�+�⋅� und alle anderen algebraischen High-School-Identitäten, die Sie kennen und lieben, bestehen bleiben auch wahr zu halten. Bei elliptischen Kurven werden in der Realität die Punkte und Gleichungen meist in Primkörpern berechnet.
Lassen Sie uns jetzt darüber sprechen Erweiterungsfelder. Sie haben wahrscheinlich schon einmal ein Erweiterungsfeld gesehen; Das häufigste Beispiel, das man in Mathematiklehrbüchern findet, ist der Körper der komplexen Zahlen, wobei der Körper der reellen Zahlen um das zusätzliche Element −1=� „erweitert“ wird. Grundsätzlich funktionieren Erweiterungsfelder, indem sie ein vorhandenes Feld nehmen, dann ein neues Element „erfinden“ und die Beziehung zwischen diesem Element und vorhandenen Elementen definieren (in diesem Fall �2+1=0), um sicherzustellen, dass diese Gleichung nicht zutrifft für jede Zahl, die sich im ursprünglichen Feld befindet, und betrachten Sie die Menge aller linearen Kombinationen von Elementen des ursprünglichen Felds und des neuen Elements, das Sie gerade erstellt haben.
Wir können auch Erweiterungen von Primkörpern durchführen; Beispielsweise können wir das oben beschriebene Primfeld mod7 mit � erweitern und dann Folgendes tun:
(2+3�)+(4+2�)=6+5�
(5+2�)+3=1+2�
(6+2�)⋅2=5+4�
4�⋅(2+�)=3+�
Das letzte Ergebnis ist möglicherweise etwas schwer herauszufinden. Was dort geschah, war, dass wir das Produkt zunächst in 4�⋅2+4�⋅� zerlegen, was 8�−4 ergibt, und dann, weil wir in Mod7-Mathematik arbeiten, daraus �+3 wird. Um zu dividieren, machen wir:
�/�:(�⋅�(�2−2)) % �
Beachten Sie, dass der Exponent für Fermats kleinen Satz jetzt �2 statt � ist. Wenn wir jedoch effizienter sein wollen, können wir stattdessen auch den erweiterten euklidischen Algorithmus erweitern, um diese Aufgabe zu erfüllen. Beachten Sie, dass ��2−1=1 für jedes � in diesem Feld ist, daher nennen wir �2−1 die „Ordnung der multiplikativen Gruppe im Feld“.
Bei reellen Zahlen ist die Fundamentalsatz der Algebra stellt sicher, dass die quadratische Erweiterung, die wir die komplexen Zahlen nennen, „vollständig“ ist – Sie können sie nicht weiter erweitern, da Sie für jede mathematische Beziehung (zumindest jede mathematische Beziehung, die durch eine algebraische Formel definiert ist) zwischen einem neuen Element aufkommen können � und den vorhandenen komplexen Zahlen ist es möglich, mindestens eine komplexe Zahl zu finden, die diese Beziehung bereits erfüllt. Bei Primzahlfeldern haben wir dieses Problem jedoch nicht, und so können wir weitergehen und kubische Erweiterungen durchführen (wobei die mathematische Beziehung zwischen einem neuen Element � und vorhandenen Feldelementen eine kubische Gleichung ist, also 1, � und � 2). alle linear unabhängig voneinander), Erweiterungen höherer Ordnung, Erweiterungen von Erweiterungen usw. Und es sind diese Arten von überladenen modularen komplexen Zahlen, auf denen elliptische Kurvenpaare aufbauen.
Für diejenigen, die sich die genaue Mathematik ansehen möchten, die bei der Durchführung all dieser Operationen im Code erforderlich ist, werden hier Primzahlfelder und Felderweiterungen implementiert: https://github.com/ethereum/py_pairing/blob/master/py_ecc/bn128/bn128_field_elements.py
Nun zu den elliptischen Kurvenpaarungen. Eine elliptische Kurvenpaarung (oder besser gesagt die spezifische Form der Paarung, die wir hier untersuchen werden; es gibt auch andere Arten von Paarungen, obwohl ihre Logik ziemlich ähnlich ist) ist eine Abbildung �2×�1→��, wobei:
- �1 ist eine elliptische Kurve, bei der Punkte eine Gleichung der Form �2=�3+� erfüllen und beide Koordinaten Elemente von �� sind (d. h. es sind einfache Zahlen, außer dass die Arithmetik ausschließlich modulo einer Primzahl erfolgt)
- �2 ist eine elliptische Kurve, bei der Punkte die gleiche Gleichung wie �1 erfüllen, außer dass die Koordinaten Elemente von (��)12 sind (d. h. es handelt sich um die überladenen komplexen Zahlen, über die wir oben gesprochen haben; wir definieren eine neue „magische Zahl“) ” �, das durch ein Polynom 12. Grades wie �12−18⋅�6+82=0 definiert ist)
- �� ist der Objekttyp, in den das Ergebnis der elliptischen Kurve einfließt. In den Kurven, die wir betrachten, ist �� (��)12 (die gleiche überladene komplexe Zahl wie in �2)
Die wichtigste Eigenschaft, die es erfüllen muss, ist die Bilinearität, was in diesem Zusammenhang Folgendes bedeutet:
- �(�,�+�)=�(�,�)⋅�(�,�)
- �(�+�,�)=�(�,�)⋅�(�,�)
Es gibt zwei weitere wichtige Kriterien:
- Effiziente Berechenbarkeit (Beispiel: Wir können eine einfache Paarung vornehmen, indem wir einfach die diskreten Logarithmen aller Punkte nehmen und sie miteinander multiplizieren, aber das ist genauso rechenintensiv wie das Brechen der Elliptischen-Kurven-Kryptographie von vornherein, also zählt es nicht)
- Nicht-Entartung (Sicher, Sie könnten einfach �(�,�)=1 definieren, aber das ist keine besonders nützliche Paarung)
Also wie machen wir das?
Die Mathematik, die dahinter steckt, warum Paarungsfunktionen funktionieren, ist ziemlich knifflig und erfordert einiges an fortgeschrittener Algebra, die sogar über das hinausgeht, was wir bisher gesehen haben, aber ich werde einen Überblick geben. Zunächst müssen wir den Begriff a definieren Teiler, im Grunde eine alternative Möglichkeit, Funktionen auf elliptischen Kurvenpunkten darzustellen. Ein Teiler einer Funktion zählt grundsätzlich die Nullen und Unendlichkeiten der Funktion. Um zu verstehen, was das bedeutet, schauen wir uns einige Beispiele an. Lassen Sie uns einen Punkt �=(��,��) festlegen und die folgende Funktion betrachten:
�(�,�)=�−��
Der Teiler ist [�]+[−�]−2⋅[�] (die eckigen Klammern werden verwendet, um die Tatsache darzustellen, auf die wir uns beziehen). das Vorhandensein des Punktes � in der Menge der Nullstellen und Unendlichkeiten der Funktion, nicht der Punkt P selbst; [�]+[�] ist nicht dasselbe wie [�+�]). Die Begründung lautet wie folgt:
- Die Funktion ist bei � gleich Null, da � is ��, also �−��=0
- Die Funktion ist bei −� gleich Null, da −� und � die gleiche �-Koordinate haben
- Die Funktion geht ins Unendliche, wenn � ins Unendliche geht, also sagen wir, dass die Funktion bei � gleich Unendlich ist. Es gibt einen technischen Grund, warum diese Unendlichkeit zweimal gezählt werden muss, daher wird � mit einer „Multiplizität“ von −2 addiert (negativ, weil es eine Unendlichkeit und keine Null ist, zwei wegen dieser Doppelzählung).
Der technische Grund ist ungefähr dieser: Da die Gleichung der Kurve �3=�2+� lautet, geht sie „1.5-mal schneller“ gegen Unendlich als �, damit �2 mit �3 mithalten kann; Wenn also eine lineare Funktion nur � enthält, wird sie als Unendlichkeit der Multiplizität 2 dargestellt, wenn sie jedoch � enthält, wird sie als Unendlichkeit der Multiplizität 3 dargestellt.
Betrachten Sie nun eine „Linienfunktion“:
��+��+�=0
Dabei werden �, � und � sorgfältig ausgewählt, sodass die Linie durch die Punkte � und � verläuft. Aufgrund der Funktionsweise der elliptischen Kurvenaddition (siehe Diagramm oben) bedeutet dies auch, dass sie durch −�−� verläuft. Und es geht bis ins Unendliche, abhängig von � und �, sodass der Teiler [�]+[�]+[−�−�]−3⋅[�] wird.
Wir wissen, dass jede „rationale Funktion“ (d. h. eine Funktion, die nur durch eine endliche Anzahl von Operationen +, −, ⋅ und / an den Koordinaten des Punktes definiert wird) eindeutig einem Teiler entspricht, bis hin zur Multiplikation mit einer Konstanten (d. h. wenn zwei Funktionen � und � denselben Teiler haben, dann ist �=�⋅� für eine Konstante �).
Für zwei beliebige Funktionen � und � ist der Teiler von �⋅� gleich dem Teiler von � plus dem Teiler von � (in Mathematiklehrbüchern sehen Sie (�⋅�)=(�)+(�)), Wenn also zum Beispiel �(�,�)=��−�, dann (�3)=3⋅[�]+3⋅[−�]−6⋅[�]; � und −� werden „dreifach gezählt“, um der Tatsache Rechnung zu tragen, dass �3 an diesen Punkten in einem bestimmten mathematischen Sinne „dreimal so schnell“ gegen 0 geht.
Beachten Sie, dass es einen Satz gibt, der besagt, dass die Summe der Punkte �([�]+[�]+[−�−�]−3⋅[ �] passt eindeutig, da �+�−�−�−3⋅�=�), und jeder Teiler, der diese Eigenschaft hat, ist der Teiler einer Funktion.
Jetzt sind wir bereit, uns die Tate-Paarungen anzusehen. Betrachten Sie die folgenden Funktionen, definiert über ihre Teiler:
- (��)=�⋅[�]−�⋅[�], wobei � die Ordnung von �1 ist, d. h. �⋅�=� für jedes �
- (��)=�⋅[�]−�⋅[�]
- (�)=[�+�]−[�]−[�]+[�]
Schauen wir uns nun das Produkt ��⋅��⋅�� an. Der Divisor ist:
�⋅[�]−�⋅[�]+�⋅[�]−�⋅[�]+�⋅[�+�]−�⋅[�]−�⋅[�]+�⋅[�]
Was sich ganz einfach wie folgt vereinfacht:
�⋅[�+�]−�⋅[�]
Beachten Sie, dass dieser Teiler genau das gleiche Format hat wie der Teiler für �� und �� oben. Daher ist ��⋅��⋅��=��+�.
Jetzt führen wir ein Verfahren ein, das als „endgültige Potenzierung“ bezeichnet wird. Dabei nehmen wir das Ergebnis unserer obigen Funktionen (��,�� usw.) und potenzieren es mit �=(�12−1)/�, wobei �12−1 die Ordnung der multiplikativen Gruppe in (��)12 ist (d. h. für jedem �∈(��)12,�(�12−1)=1). Beachten Sie, dass, wenn Sie diese Potenzierung auf jedes beliebige Ergebnis anwenden bereits auf die Potenz von � erhöht wurde, erhalten Sie eine Potenzierung auf die Potenz von �12−1, sodass das Ergebnis zu 1 wird. Daher hebt sich �� nach der abschließenden Potenzierung auf und wir erhalten ���⋅���=( ��+�)�. Es gibt eine gewisse Bilinearität für Sie.
Wenn Sie nun eine Funktion erstellen möchten, die in beiden Argumenten bilinear ist, müssen Sie sich mit gruseligerer Mathematik befassen, bei der Sie statt �� eines Werts direkt �� von a nehmen Teiler, und daher kommt die vollständige „Tate-Paarung“. Um weitere Ergebnisse zu beweisen, muss man sich mit Begriffen wie „linearer Äquivalenz“ und „Weil-Reziprozität“ auseinandersetzen, und von da an geht das Kaninchenloch weiter. Zu all dem finden Sie weiteren Lesestoff hier machen hier.
Für eine Implementierung einer modifizierten Version der Tate-Paarung, die als optimale Ate-Paarung bezeichnet wird, siehe hier. Der Code implementiert Millers Algorithmus, die benötigt wird, um �� tatsächlich zu berechnen.
Beachten Sie, dass die Tatsache, dass Paarungen wie diese möglich sind, eher ein gemischter Segen ist: Einerseits bedeutet dies, dass alle Protokolle, die wir mit Paarungen machen können, möglich werden, aber es bedeutet auch, dass wir bei den elliptischen Kurven vorsichtiger sein müssen wir gebrauchen.
Jede elliptische Kurve hat einen Wert namens an Einbettungsgrad; im Wesentlichen das kleinste �, so dass ��−1 ein Vielfaches von � ist (wobei � die für das Feld verwendete Primzahl und � die Kurvenordnung ist). In den Feldern oben, �=12, und in den Feldern, die für traditionelles ECC verwendet werden (d. h. wo wir uns nicht um Paarungen kümmern), ist der Einbettungsgrad oft extrem groß, bis zu dem Punkt, dass Paarungen rechnerisch nicht mehr zu berechnen sind; Wenn wir jedoch nicht aufpassen, können wir Felder generieren, in denen �=4 oder sogar 1 ist.
Wenn �=1, dann kann das Problem des „diskreten Logarithmus“ für elliptische Kurven (im Wesentlichen die Wiederherstellung, wenn man nur den Punkt �=�⋅� kennt, das Problem, das Sie lösen müssen, um einen privaten Schlüssel für eine elliptische Kurve zu „knacken“), reduziert werden in ein ähnliches mathematisches Problem über �� umwandeln, wobei das Problem viel einfacher wird (dies wird als „...“ bezeichnet). MOV-Angriff); Durch die Verwendung von Kurven mit einem Einbettungsgrad von 12 oder höher wird sichergestellt, dass diese Reduzierung entweder nicht verfügbar ist oder dass die Lösung des diskreten Protokollproblems über die Paarung von Ergebnissen mindestens so schwierig ist wie die Wiederherstellung eines privaten Schlüssels aus einem öffentlichen Schlüssel auf „normale Weise“ (d. h. rechnerisch nicht durchführbar). Keine Sorge; Alle Standardkurvenparameter wurden gründlich auf dieses Problem überprüft.
Seien Sie gespannt auf eine mathematische Erklärung zur Funktionsweise von zk-SNARKs, die in Kürze erscheint.
Besonderer Dank geht an Christian Reitwiessner, Ariel Gabizon (von Zcash) und Alfred Menezes für die Überprüfung und Korrekturen.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- BlockOffsets. Modernisierung des Eigentums an Umweltkompensationen. Hier zugreifen.
- Quelle: Datenintelligenz von Platon.