
Im Jahr 2024 stieg Solanas ungewöhnlich entstanden, TVL stieg zu Beginn des Jahres von einer Milliarde US -Dollar auf fast 5 Milliarden US -Dollar heute und wurde die viertgrößte öffentliche Kette.
Im Vergleich zu Ethereum hat Solana den Benutzern mit einer schnelleren Geschwindigkeit und geringeren Kosten eine bessere Erfahrung mitgebracht.Der POH -Basis -Konsensmechanismus und sein asynchrones Transaktionsausführungsmodell bieten Entwicklern einen hohen Durchsatz und eine niedrig verzeichnete Blockchain -Leistung und werden zur bevorzugten Plattform für verschiedene dezentrale Anwendungen.
>
Blocksec Special Planning„Spielen Sie mit Solana“Die Artikelreihe deckt die grundlegenden Konzepte von Solana ab, betrachtet und analysiert die praktischen Richtlinien des Solana -Handels und des Schreibens von Solana Smart Contract -Tutorials.
Als erste Phase dieser Serie wird dieser Artikel die Schlüsselkonzepte im Solana -Netzwerk einführen, einschließlich des Betriebsmechanismus, des Kontomodells und der Transaktion, um die Grundlage für die richtigen und effizienten Solana -Verträge für alle zu schreiben.
EBPF: Der Ausführungsschwerpunkt der Solana -Transaktion
Um intelligente Verträge zu schreiben und auszuführen, erfordert Blockchain häufig eine Computerumgebung von Programmiersprachen und Turing.
Freunde, die mit Ethereum vertraut sind, sollten wissen, dass intelligente Verträge über Ethereum in der Regel eine Sprachdarstellung mit hoher Sprache verwenden, um zu schreiben, während der durch Solidität zusammengestellte Byte -Code in einer Umgebung namens Ethereum Virtual Machine ausgeführt wird.
Solana entschied sich nicht für die Entwicklung einer neuen virtuellen Umgebung und Sprache, sondern nutzte vorhandene exzellente Technologien voll aus.Virtuelle Maschinen von EBPF (erweiterter Berkeley -Paketfilter), die ursprünglich zur Erweiterung der Linux -Kernelfunktion verwendet wurden, wurden von Solana als zugrunde liegende Ausführungsumgebung ausgewählt.
Was sind die Vorteile von EBPF im Vergleich zu EVM?
Im Vergleich zu der EVM, die die Erklärungsausführung nur unterstützt, kann der EBPF den Bytecode direkt in einen Maschinenanweis im Prozessor im Real -Time Compilation (JIT) -Modus umwandeln und so das Programm effizienter ausführen.
EBPF verfügt über eine Reihe effizienter Anweisungssätze und eine reife Infrastruktur.Entwickler müssen nur die Rustsprache verwenden, um intelligente Verträge zu schreiben.Das LLVM -Kompilierungsframework bietet ein Backend von EBPF, in dem das Programm, das diese Rustsprache geschrieben hat, direkt in den Byte -Code zusammengestellt wird, der auf der virtuellen Maschine von EBPF ausgeführt werden kann.
Solanas Kontomodell
1. Solana -Kontostruktur
Die Daten zu Solana werden in Form eines Kontos gespeichert.Wie in der folgenden Abbildung gezeigt, können wir alle Daten in Solana als einen großen Schlüsselwert für die Datenbank betrachten.Der Schlüssel zur Datenbank ist die Adresse des Kontos für das „Wallet“ -Konto (dh,,
Für Solana -Benutzer über öffentlich -private Schlüssel zur direkten Kontrolle über das Konto ist diese Adresse ein öffentlicher Schlüssel, der mit dem Signatursystem ED25519 generiert wird.
>
Solana verwendet eine Struktur namens AccountInfo, um ein Konto zu beschreiben, das wie in der folgenden Abbildung gezeigt komponiert wird.
>
Jedes Konto in Solana enthält vier Felder.Hier erklären wir es einzeln.
-
DatenfeldDaten im Zusammenhang mit dem Konto werden gespeichert.Wenn das Konto ein Programm ist (dh ein intelligenter Vertrag), ist es tatsächlich der EBPF -Bytecode.Andernfalls wird das Informationsformat in Daten im Allgemeinen vom Gründer des Kontos definiert.
-
Ausführbares FeldEs wird verwendet, um festzustellen, ob das Konto ein Programm ist.Es ist zu beachten, dass das Programm in Solana im Gegensatz zu Ethereum aktualisiert werden kann.
-
Lamports FeldZeichnen Sie den Restbetrag des Kontos Solana Token auf.Lamports ist eigentlich die kleinste Einheit von Sol Token (1 Sol = 1 Milliarde Lamports).
-
Eigentümer FeldWies den Eigentümer des Girokontos an.In Solana hat ein Konto einen „Eigentümer“.Zum Beispiel ist der Eigentümer aller „Brieftaschen“ -Konto ein Systemprogramm, ein spezielles Konto im Solana -Netzwerk, das für die Erstellung von Konto und andere Funktionen verantwortlich ist.Der Kontoinhaber ist die einzige Person, die die Kontodaten ändern und den Lamports -Saldo abziehen kann (aber jeder kann Lamports erhöhen, dh die Übertragungsfunktion auf das Konto ausführen).
2. Stopy -OF -Merkmal von Solana -Konto
Solana hat ein Set namens namensNative ProgrammeDas vorgegebene laufende Programm wird in einer festen Adresse bereitgestellt.Mit dem Upgrade des Solana -Netzwerks können diese vordefinierten Programme auch aktualisiert werden.Wir können diese Programme als API- und Bibliotheksfunktionen verstehen, die im Solana -Netzwerk spezifische Funktionen bieten.
In nativen Programmen müssen Entwickler häufig damit interagieren.SystemprogrammWesenDas Systemprogramm bietet Entwicklern einige Anweisungen, und wir können jede Anweisung als unabhängige Methode verstehen.Beispielsweise können Entwickler den CreateACCount -Anweisungen verwenden, um ein neues Konto zu erstellen, oder die Übertragungsanweisung verwenden, um Lamports auf andere Konten zu überweisen.
Ein weiteres häufiges native Programme ist ein BPF -Lader -Programm.Es ist der Eigentümer aller anderen Programmkonten, die für die Bereitstellung, Aktualisierung und Ausführung bestimmter Verfahren verantwortlich sind.Wenn ein „Wallet“ -Konto sein bereitgestelltes Programm aktualisieren muss, wird es tatsächlich durch die Inbetriebnahme des BPF -Laderes -Programms abgeschlossen.
Neben nativen Programmen bietet Solana auch ein Set anSysvarKonto.Sie liefern Informationen und globale Variablen im Zusammenhang mit dem aktuellen Status von Solana -Netzwerk, z. B. der aktuellen Uhr, dem nächsten Block -Hash usw.
3. Account Miete
In der Solana -Kette muss jedes Konto eine bestimmte Anzahl von Lamports als minimale Quote beibehalten, die genannt wirdmietenWesenIm Gegensatz zum Konzept der Miete im wirklichen Leben kann die Miete für Solana wiederhergestellt werden.Um sicherzustellen, dass die Daten des Kontos in der Kette verfügbar sind, muss das Konto die entsprechende Menge der Lamports halten.Die Miete bezieht sich auf die Größe des Kontospeicherraums in der Kette.
Jede Transaktion, die versucht, den Kontostand von unterhalb der Miete abzuziehen, schlägt fehl, sofern die Transaktion den Kontostand nicht direkt auf Null abzieht.Dieser Vorgang zeigt, dass die Miete des Kontos am Ende der Transaktionsausführung wiederhergestellt wurde. Solana wird durch Müll wiederhergestellt, um den Speicherplatz des entsprechenden Kontos zu löschen.
– –Was ist mehr?Sehen Sie sich „Solana Account“ im Browser an
Um die relevanten Konzepte besser zu verstehen, verwenden wir das von Solana bereitgestellte „Hello World“ -Projekt, um ein Programmkonto zu erstellen.Das folgende KontoWas ist mehr?Verwandte Informationen.
CJWHXB4QEWBV9EGYUKTN881BNDMDKLBZH1FMDWQlllHOE
>
Wie in der obigen Abbildung gezeigt, können wir zunächst feststellen, dass das Konto vom Solana -Browser als „Programm“ gekennzeichnet wurde.Bei der Erstellung des Kontos werden einige Lamports als Miete des Kontos aus dem Guthaben des Absenders abgezogen.
Zweitens, weil wir ein Programm erstellen, lautet sein ausführbares Feld Ja.Hier kann es schwierig sein, das heißt, die Leser können feststellen, dass das Feld Daten eine Adresse und nicht das EBPF -Programm speichert.Wir haben früher erwähnt, dass Solana Aktualisierungsprogramme ermöglicht und tatsächlich über einen „Proxy“ -Modus implementiert wird.Da Solana keine direkte Änderung der Programmkonten zulässt, erstellt es ein Datenkonto, um das EBPF -Programm zu speichern, und das Datenfeld des Programmkontos speichert nur die Adresse des Datenkontos.Wann immer Sie das Programm aktualisieren müssen, müssen Sie das Datenfeld im Datenkonto nur ändern.Wir verwenden Solscan, um das Konto des ausführbaren Datens zu überprüfen.
>
Zurück zum vorherigen Bild können wir feststellen, dass das Feld des Eigentümers in weiteren Informationen BPF Loader ist, was mit unserer Beschreibung im vorherigen Abschnitt übereinstimmt.
Es gibt auch ein Feld namens „Upgrade Authority“ in Übersicht.
Wie bereits erwähnt, wird das „Wallet“ -Konto zum Aktualisieren des Programms durch die Inbetriebnahme des BPF -Loaders aktualisiert.Da das Feld des Eigentümers des Programmkontos bereits BPF -Lader ist, hat es keinen Raum für die Speicherung der Informationen, sodass Solana diese Informationen im Datenkonto des Datenkontos speichert.Die folgende Abbildung zeigt die Beziehung zwischen dem Programmkonto und dem Datenkonto.
>
Solanas Transaktionen und Anweisungen
In Solana führen Benutzer auch Programme durch, indem sie Transaktionen ausstellen.Seine besondere Sache ist dasSolana kann diese Transaktionen parallel ausführenDies ist auch ein wichtiger Grund, warum es Blitztransaktionen liefern kann.Schauen wir uns als nächstes an, wie die Transaktionen von Solana entworfen werden.
Eine SLANA -Transaktion besteht aus dem Signatur- und Nachricht.Eine Transaktion kann mehrere Signaturen enthalten.Der Hauptteil der Transaktion besteht aus vier Teilen, wie in der folgenden Abbildung gezeigt.
>
NachrichtKopfinformationen(Kopfball) undKontoadresse Array(Kompaktes Array von Kontoadressen) In den beiden Feldern werden die Merkmale aller Konten und Konten angeben, die an der Transaktion in Transaktionen beteiligt sind: Ob das Konto Signaturen bereitstellt und ob es während der Ausführung geschrieben wird.Mit diesen Informationen kann Solana die vom entsprechenden Konto bereitgestellten Signaturen überprüfen und die Transaktionen ausführen, die nicht parallel dieselbe Kontosammlung berühren.
NächsteBlock(Neuere Blockhash) ist der Zeitstempel der Transaktion.Das Solana -Netzwerk stellt sicher, dass die Transaktion aus den letzten 150 Blöcken stammt, andernfalls wird die Transaktion als Auslauf angesehen und nicht ausgeführt.
Anweisungsarray(Kompaktes Array des Ausbilders) ist der wichtigste Teil der Transaktion und enthält eine oder mehrere Anweisungen.Eine Anweisung wird tatsächlich als Routine bezeichnet, die von einem Programm bereitgestellt wird.Die Anweisung besteht aus drei Feldern, wie in der folgenden Abbildung gezeigt:
>
Der erste Feld des Programm -ID -Index gibt den Empfänger des Anweisungen an, dh das Kettenprogramm auf der Anweisung muss verarbeitet werden.Es speichert nicht direkt eine 32 -Byte -Adresse, sondern legt die Adresse in das Konto -Adress -Array im Betreff der Nachricht ein.In diesem Feld wird ein Byte ausgebot, um anzuzeigen, dass seine Position im Array eine Wiederverwendung von Raums erkennt.
Ähnlich wie im ersten Feld ist das zweite Feld ein kompaktes Array von Kontoadindizes für Kontoadressen, die aus der Kontoadresse besteht, die angibt, dass alle an der Anweisung beteiligten Konten angegeben sind.
Das letzte Feld ist eine Reihe von Bytes.
Es ist zu beachten, dass Solana alle Anweisungen in der Transaktion in der Reihenfolge behandelt und sicherstellt, dass die Ausführung der Transaktion Atom ist.Dies bedeutet, dass die Anweisungen in einer Transaktion entweder fehlgeschlagen oder alle erfolgreich ausgeführt werden, und es werden keine Fälle geben, in denen einige Anweisungen erfolgreich ausgeführt werden und ein teilweise Fehler.
– –Was ist mehr?Sehen Sie sich die „Solana -Transaktion“ im Browser an
Wir verwenden einen anderen Solana -Browser, um anzusehenErstellen Sie früher eine Transaktion eines Programmkontos?WesenIn Übersicht sehen Sie die Signaturen von Solana -Transaktionen, den jüngsten Block -Hash und anderen Informationen:
3UKQ85LPSNWB5D6CGUNTOMYJX3TSAEGB4PJUOMAMYNVQQNPP5PRG1KJEEEK3YEMZGMOJ5ROWGON8HZWL9D
>
In der Kontoeingabe werden die Merkmale aller Konten und verwandten Konten, die an der aktuellen Transaktion beteiligt sind, in Transaktionen aufgeführt.Wir können sehen, dass zusätzlich zu Absendern, Programmkonten und anderen Adressen auch die beiden nativen Programme und Sysvar -Konten enthalten sind.
>
Da die Transaktion eine einfache Programm zur Erstellung von Programmen ist, enthält sie nur zwei Anweisungen.Systemprogramm, Verantwortlich für die Erstellung eines Programmkontos;BPF -LaderVerantwortlich für das Schreiben des tatsächlichen bereitgestellten EBPF -Codes in das Datenkonto und die Adresse seiner Adresse in das Datenfeld des Programmkontos.
>
Zusammenfassen
Der intelligente Vertrag über Solana wird in Rostsprache entwickelt und läuft auf der virtuellen EBPF -Maschine.Es folgt dem Kontomodell, und das Konto in der Kette muss die Miete beibehalten, um die Verfügbarkeit der Daten zu gewährleisten.Die Transaktion besteht aus einer oder mehreren Anweisungen, die eindeutig alle Konten definieren, von denen abhängig ist, so dass die Transaktion parallel verarbeitet, den Durchsatz erhöht und die Antwortverzögerung verringert werden kann.Diese Eigenschaften fördern gemeinsam die schnelle Entwicklung von Solana und machen sie zu einer der beliebten Blockchain -Plattformen.