Einführung in die Flow-Blockchain
Raul Ravindran
Flow ist eine schnelle, dezentralisierte und entwicklerfreundliche Blockchain, die als Grundlage für eine neue Generation von Spielen und Apps konzipiert wurde. Die Skalierungspläne jeder anderen dezentralen Blockchain hängen von einer Art Sharding oder Seitenketten ab. Flow verfolgt einen interessanten Skalierungsansatz, indem es die an jedem Knoten geleistete Arbeit reduziert.
Wenn Sie eine kurze Zusammenfassung wünschen, sehen Sie sich unser Video an:
Flow wurde 2019 von Dapper Labs ins Leben gerufen, dem Unternehmen hinter berühmten NFT-Projekten wie Cryptokitties und NBA Top Shots. Es basiert auf einer einzigartigen Multi-Rollen-Architektur und ist so konzipiert, dass es ohne Sharding skaliert werden kann, was massive Verbesserungen in Geschwindigkeit und Durchsatz ermöglicht und gleichzeitig eine entwicklerfreundliche, ACID-konforme Umgebung bewahrt.
Flow befähigt Entwickler, florierende krypto- und kryptofähige Unternehmen aufzubauen. Anwendungen auf Flow können Verbraucher die Kontrolle über ihre eigenen Daten behalten; neue Arten von digitalen Vermögenswerten schaffen, die auf offenen Märkten handelbar sind, die von überall auf der Welt zugänglich sind; und bauen Sie offene Volkswirtschaften auf, die den Benutzern gehören, die dazu beitragen, sie wertvoll zu machen.
Intelligente Verträge auf Flow können wie Legosteine zusammengesetzt werden, um Apps zu betreiben, die Milliarden von Menschen dienen, von Basketballfans bis hin zu Unternehmen mit unternehmenskritischen Anforderungen.
Die Kernerkenntnis, die zur Architektur von Flow führte, ist, dass nicht-deterministische Prozesse von deterministischen Prozessen getrennt und basierend auf ihren technischen Fähigkeiten unterschiedlichen Arten von Knoten zugeordnet werden können, um den Blockchain-Durchsatz drastisch zu erhöhen und mehrere Probleme der Benutzer- und Entwicklererfahrung zu lösen bestehende Netzwerke gleichzeitig. Diese Erkenntnis war, dass Aufgaben innerhalb einer Blockchain in zwei Arten unterteilt werden können:
Nicht deterministische (oder „subjektive“) Aufgaben, wie z. B. die Bestimmung des Vorhandenseins und der Reihenfolge von Transaktionen in der Blockchain
Deterministische (oder „objektive“) Aufgaben, wie z. B. die Berechnung des Ergebnisses dieser bestellten Transaktionen, sobald es ermittelt wurde
Nicht deterministische Aufgaben erfordern einen koordinierten Konsensprozess (wie Proof of Work oder Proof of Stake). Deterministische Aufgaben hingegen haben immer ein einziges, objektiv richtiges Ergebnis. Die entscheidende Erkenntnis hinter der Architektur von Flow war, dass der größte Engpass für die Blockchain-Leistung die deterministische Aufgabe der Ausführung von Transaktionen ist, nachdem sie bereits in einen Block aufgenommen wurden, und nicht der subjektive Prozess, der einen Konsens erfordert, d. h. die Bildung des Blocks selbst.
Probleme mit Sharding
Die meisten Vorschläge zielen darauf ab, die Skalierbarkeit von Blockchains zu verbessern, indem sie in miteinander verbundene Netzwerke fragmentiert werden: üblicherweise Shards, obwohl Sidechains die gleichen Probleme haben. Diese Ansätze entfernen Garantien für die Serialisierbarkeit („ACID“), die in Datenbanksystemen üblich sind.
Der Verlust von ACID-Garantien macht das Erstellen einer Anwendung, die fragmentübergreifend auf Daten zugreifen muss, weitaus schwieriger und fehleranfälliger. Interaktionen zwischen intelligenten Verträgen werden sehr kompliziert, und selbst einzelne groß angelegte Anwendungen müssten aufgrund von Latenzproblemen und höheren Transaktionsfehlerraten auf komplexe Mechanismen zurückgreifen, um über Shards hinweg zu skalieren. Die Kombination schränkt die Arten von Anwendungen, die im Netzwerk möglich sind, sowie ihre Netzwerkeffekte dramatisch ein. **Sharding schultert effektiv den schwierigsten Teil der Skalierung der Blockchain auf Anwendungsentwickler, anstatt ihn auf Protokollebene zu lösen.
**Eine einfache Benutzeraktion (Kauf eines Hutes für ein CryptoKitty mit einem Stablecoin wie TUSD) kann zwölf Transaktionen und sieben Blöcke auf einer geteilten Blockchain erfordern. In einer ungeshardeten, ACID-kompatiblen Umgebung wie Flow kann dieselbe Aktion, und viel komplexer als sie, von einer atomaren Transaktion in einem einzigen Block verarbeitet werden.
Schlimmer als der zusätzliche Zeit- und Kostenaufwand ist die erhöhte Angriffsfläche und Komplexität: Es wird viel schwieriger sein, den Smart-Contract-Code auf einer Sharded-Blockchain zu entwerfen, zu testen und zu härten.
Schlüsselinnovationen
Flow wurde explizit entwickelt, um Spiele und Verbraucheranwendungen vom ersten Tag an zu unterstützen, mit dem erforderlichen Durchsatz, um auf Millionen aktiver Benutzer zu skalieren. Diese Ziele erforderten eine Reihe bedeutender technischer Innovationen:
– Eine Pipeline-Architektur, die die Aufgaben, die normalerweise von einem einzelnen Miner oder Validator ausgeführt werden, auf fünf verschiedene Knotentypen verteilt, wodurch redundanter Aufwand erheblich reduziert und die Effizienz verbessert wird.
– Eine neue kryptografische Technik, die wir Specialized Proofs of Confidential Knowledge (SPoCKs) nennen, um das Verifier’s Dilemma anzugehen. – Ein einziger gemeinsamer Zustand für alle Smart Contracts, der sicherstellt, dass jede Transaktion volle ACID-Garantien hat. Dadurch werden reichhaltige Interaktionen zwischen Smart Contracts („Composability“) freigeschaltet und starke Netzwerkeffekte für Apps geschaffen, die auf Flow basieren.
Ursprünglich vom Team hinter CryptoKitties konzipiert, ist Flow heute ein dezentralisiertes Netzwerk, das von einer wachsenden Community von Marken und Web3-Erstellern unterstützt und aufgebaut wird.
Multi-Node-Architektur
In einer traditionellen Blockchain speichert jeder Knoten den gesamten Status (Kontostände, intelligenter Vertragscode usw.) und führt die gesamte Arbeit aus, die mit der Verarbeitung jeder Transaktion in der Kette verbunden ist. Dies ist vergleichbar damit, dass ein einzelner Arbeiter ein ganzes Auto baut.
Von der Fertigung bis zum CPU-Design ist Pipelining eine gängige Technik zur drastischen Steigerung der Produktivität. Flow wendet Pipelining auf Blockchains an, indem es die Jobs eines Validator-Knotens in vier verschiedene Rollen aufteilt: Sammlung, Konsens, Ausführung und Verifizierung. Diese Arbeitsteilung zwischen den Knoten ist vertikal (über die verschiedenen Validierungsphasen für jede Transaktion hinweg) und nicht horizontal (über verschiedene Transaktionen hinweg, wie beim Sharding).
Mit anderen Worten, jeder Validierungsknoten nimmt immer noch an der Validierung jeder Transaktion teil, aber sie tun dies nur in einer der Phasen der Validierung. Sie können sich daher auf ihre jeweilige Fokusphase spezialisieren und die Effizienz erheblich steigern.
Es gibt vier Säulen, die Flow unter den bestehenden Blockchains einzigartig machen:
Multi-Rollen-Architektur: Das Design von Flow ist einzigartig und ermöglicht es dem Netzwerk, Milliarden von Benutzern zu bedienen, ohne Sharding oder Verringerung der Dezentralisierung des Konsens.
Ressourcenorientierte Programmierung: Smart Contracts auf Flow sind in Cadence geschrieben, einer einfacheren und sichereren Programmiersprache für Krypto-Assets und Apps.
Ergonomie für Entwickler: Von erweiterbaren Smart Contracts und integrierter Protokollierungsunterstützung bis hin zum Flow-Emulator ist dieses Netzwerk auf Ergebnisse ausgelegt.
Verbraucher-Onboarding: Flow wurde für Mainstream-Verbraucher entwickelt, wobei Zahlungsrampen einen sicheren und reibungslosen Weg von Fiat zu Krypto katalysieren.
Konsensmechanismus
Consensus und Verification Nodes bilden zusammen die Grundlage der Sicherheit im Flow-Netzwerk und nutzen kryptoökonomische Anreize, um den Rest des Netzwerks zur Rechenschaft zu ziehen. Diese Validatoren können für Sicherheit und Dezentralisierung optimieren: Die Rollen von Consensus und Verification sind gestrafft, um ein hohes Maß an Beteiligung zu ermöglichen, selbst von Personen mit Hardware der Verbraucherklasse, die über Heim-Internetverbindungen läuft. Consensus Nodes führen eine Variante von HotStuff aus, einem der bewährtesten Proof-of-Stake-Algorithmen.
Ausführungs- und Erfassungsknoten hingegen arbeiten vollständig deterministisch – was sie weniger anfällig für Angriffe macht. Die Arbeit dieser Knoten wird auch von den anderen Knotentypen verifiziert und zur Rechenschaft gezogen. Diese Knotenrollen können daher sicher für Sicherheit und Skalierbarkeit optimiert werden, wodurch das Netzwerk skaliert werden kann. Der Betrieb dieser Knoten erfordert dedizierte Serverhardware in einem professionell verwalteten Rechenzentrum.
Flow leitet die Arbeit eines Blockchain-Miners oder -Validators über vier verschiedene Rollen, die alle Staking erfordern; eine Trennung von Anliegen, die redundanten Aufwand deutlich reduziert:
Consensus Nodes entscheiden über das Vorhandensein und die Reihenfolge von Transaktionen in der Blockchain
Verification Nodes sind dafür verantwortlich, die Execution Nodes in Schach zu halten
Ausführungsknoten führen die mit jeder Transaktion verbundene Berechnung durch
Sammelknoten verbessern die Netzwerkkonnektivität und Datenverfügbarkeit für dapps
Intelligente Vertragsentwicklung
Smart Contracts in Flow sind in einer Programmiersprache namens Cadence geschrieben. Cadence ist die erste ergonomische, ressourcenorientierte Smart-Contract-Programmiersprache. Die Syntax der Sprache ist ganz ähnlich wie Javascript
Während vorhandene Programmierumgebungen verwendet werden können, um den Besitz von Assets nachzuverfolgen, werden sie typischerweise in Szenarien verwendet, in denen sie den Besitz widerspiegeln, anstatt ihn direkt zu definieren. Öffentliche Blockchains sind insofern einzigartig, als sie explizit darauf ausgelegt sind, das Eigentum an digitalen Assets mit Knappheit und voller Zugriffskontrolle zu verwalten. Digitale Assets auf öffentlichen Blockchains verhalten sich wie physische Assets: Sie können nicht kopiert oder gefälscht, sondern nur verschoben werden.
Als erste ressourcenorientierte Programmiersprache auf hohem Niveau hat Cadence eine komfortable, ergonomische Syntax, die es sehr einfach zu lesen macht. Es verwendet ein starkes, statisches Typsystem, um Laufzeitfehler zu minimieren, und ermöglicht es allen Methoden, Schnittstellen und Transaktionen, Vor- und Nachbedingungen einzuschließen, um das erwartete Verhalten zu erzwingen. Dies hat zu einer Sprache geführt, die leichter zu erlernen, wesentlich einfacher zu prüfen und letztendlich viel produktiver ist als alle aktuellen Alternativen. Sie können mit dem Erlernen von Cadence auf Flow Playground beginnen: play.onflow.org
Open-Source-Tools
Das Flow-Team hat eine Reihe von Tools als Open Source bereitgestellt, um Entwicklern den Einstieg zu erleichtern:
Flow Go SDK: Das Go SDK ist ein großartiges Tool für Entwickler, die nach einer Backend-Integration mit Blick auf Skalierbarkeit suchen. Go ist eine der beliebtesten Backend-Programmiersprachen, wenn Leistung oberste Priorität hat, und war die erste Wahl für Dapper Labs.
Flow JavaScript SDK: Unser JavaScript SDK ermöglicht Frontend-Entwicklern eine einfache Integration und Interaktion mit Flow. Entwickeln Sie ohne die Verwendung von ABIs, konstruieren Sie zusammensetzbare Interaktionen und erstellen Sie Dapps, die Ihre Benutzer begeistern. Wir glauben, dass Sie das Erstellen mit unserem JavaScript-SDK lieben werden.
Visual Studio Code Extension: Interagieren Sie mit Flow und verwenden Sie die Cadence-Sprache nativ in Visual Studio Code. Überprüfen Sie Ihren Cadence-Code statisch auf Fehler und testen Sie Ihre Smart Contracts, ohne den Komfort dieser branchenführenden IDE zu verlassen.
Flow Playground GUI: die gehostete In-Browser-Entwicklungsumgebung, in der Benutzer die intelligente Vertragssprache von Cadence lernen und ausprobieren können, ohne dass eine Einrichtung erforderlich ist. Wir machen es jedem neuen Entwickler leicht, einen Vorgeschmack auf Cadence zu bekommen, die leistungsstarke neue Sprache für die intelligente Vertragsentwicklung.
Standardvorschläge: FTs (Fungible Tokens) und NFTs (Non-fungible Tokens) sind das Flow-Äquivalent der ERC-20- bzw. ERC-721-Token von Ethereum.
Aktualisierbare Smart Contracts
Eines der wichtigsten Versprechen von Smart-Contract-Plattformen ist, dass Benutzer dem Smart-Contract-Code vertrauen können, anstatt den Smart-Contract-Autoren zu vertrauen. Dieser Aspekt von Blockchains erschließt Anwendungsfälle, die wir gerade erst zu erforschen beginnen, von denen der wirkungsvollste das Konzept der offenen Dienste und der Zusammensetzbarkeit sein könnte.
In ihrer ersten Inkarnation waren intelligente Vertragsplattformen so konzipiert, dass der Vertragscode nach seiner Veröffentlichung niemals geändert werden konnte. Dies ist die einfachste Methode, um das Ziel zu erreichen: Wenn der Code nicht einmal von den ursprünglichen Autoren geändert werden kann, müssen Sie den Autoren nach dem Start des Codes eindeutig nicht vertrauen.
Leider ist Software beim ersten Mal schwer richtig zu machen. Es gibt keinen Mangel an Beispielen für Smart Contracts, die – selbst bei unglaublich talentierten Teams und motivierten Communities – subtile Probleme hatten, die zu massiven Geldverlusten führten.
Viele Entwickler haben den Wunsch geäußert, einen Smart Contract nach seiner Bereitstellung zu reparieren oder zu verbessern, und einige haben viel Zeit und Mühe darauf verwendet, einen Mechanismus in ihren Smart Contract einzubauen, um Upgrades oder Migrationen zu ermöglichen. Aber wenn jeder Entwickler seinen eigenen Mechanismus für die Aufrüstbarkeit „rollt“, erhöht dies die Komplexität und erschwert das Vertrauen in diese intelligenten Verträge.
Auf Flow erlauben wir die Bereitstellung von Smart Contracts im Mainnet in einem „Beta-Zustand“, in dem der Code von den ursprünglichen Autoren schrittweise aktualisiert werden kann. Benutzer werden auf die Unfertigkeit dieses Codes aufmerksam gemacht und können warten, bis der Code fertiggestellt ist, bevor sie ihm vertrauen. Sobald Autoren sicher sind, dass ihr Code sicher ist, können sie ihre Kontrolle über den Vertrag unwiderruflich abgeben, und er wird für den Rest der Zeit vollkommen unveränderlich.
Dieses System gleicht die Bedürfnisse der Benutzer aus, darüber informiert zu werden, mit welcher Art von Code sie es zu tun haben – ob eine Anwendung oder ein Smart Contract wirklich vertrauenswürdig ist oder nicht – und gleichzeitig den Entwicklern die Flexibilität gibt, ihren Code für eine begrenzte Zeit nach der Auslieferung zu optimieren.
Fazit
Flow wurde als Lösung für die „langsame Finalität“ der Blockchain ohne Sharding entwickelt. Dies wurde erreicht, ohne die Sicherheit und Serialisierung der Blockchain zu gefährden. Das Flow-Team ist eine Partnerschaft mit der NBA eingegangen, und diese Partnerschaft hat die Popularität des Flow-Netzwerks gesteigert. Flow hat es ermöglicht, eine Anwendung zu erstellen, die den Benutzern Spaß macht
Comments