Eine kurze Beschreibung des Solana-Programmiermodells: Was ist der Unterschied zu ETH?
Originalautor: Foresight News, Alex Liu
Solana ist eine leistungsstarke Blockchain-Plattform zur Unterstützung von dApps, die für ihre Geschwindigkeit und Skalierbarkeit bekannt ist, die durch einen einzigartigen Konsensmechanismus und ein architektonisches Design erreicht wird. Dieser Artikel verwendet Ethereum als Vergleichsobjekt, um die Merkmale des Smart-Contract-Programmiermodells von Solana kurz vorzustellen.
Smart Contracts, On-Chain-Programme:
Auf Ethereum laufende Programme heißen Smart Contracts. Dabei handelt es sich um eine Reihe von Codes (Funktionen) und Daten (Status), die sich an einer bestimmten Adresse auf Ethereum befinden. (Oh nein, der Code und die Daten sind gekoppelt.) Smart Contracts sind auch Ethereum-Konten, sogenannte Vertragskonten, die Guthaben aufweisen und gehandelt werden können, aber nicht von Menschen manipuliert werden können und im Netzwerk bereitgestellt werden, um als Programme ausgeführt zu werden.
Der auf Solana ausgeführte ausführbare Code wird als On-Chain-Programm bezeichnet und interpretiert die in jeder Transaktion gesendeten Anweisungen. Diese Programme können als native Programme direkt im Kern des Netzwerks bereitgestellt oder von jedem als SPL-Programme veröffentlicht werden.
- Anweisungen: Anweisungen sind ein spezieller Begriff für Solana-On-Chain-Programme. On-Chain-Programme bestehen aus Anweisungen, die die kleinste Einheit zur Ausführung bestimmter Operationen darstellen: Jede Solana-Transaktion enthält eine oder mehrere Anweisungen. Anweisungen geben die auszuführenden Operationen an, darunter das Aufrufen eines bestimmten On-Chain-Programms, das Übergeben von Konten, Eingabelisten und das Bereitstellen von Byte-Arrays. Anweisungen unterliegen Rechengrenzen, daher sollten On-Chain-Programme optimiert werden, um eine kleine Anzahl von Recheneinheiten zu verwenden, oder teure Operationen auf mehrere Anweisungen aufteilen.
- Natives Programm: Ein natives Programm, das die von einem Verifizierungsknoten benötigten Funktionen bereitstellt. Das bekannteste davon ist das Systemprogramm, das für die Verwaltung der Erstellung neuer Konten und der Übertragung von SOL zwischen zwei Konten verantwortlich ist.
- SPL-Programm: definiert eine Reihe von On-Chain-Aktivitäten, darunter Erstellung, Austausch, Verleih, Erstellung von Staking-Pools, Wartung von On-Chain-Domänennamenauflösungsdiensten usw. Darunter wird das SPL-Token-Programm für Token-Operationen verwendet, während das Associated Token Account-Programm häufig zum Schreiben anderer benutzerdefinierter Programme verwendet wird.
Sie nennen es einen Smart Contract, ich nenne es ein Kettenprogramm. Jeder hat andere Begriffe, aber sie beziehen sich alle auf den Code, der auf der Blockchain läuft. Zhang San, Li Si und Wang Mazi sind alles Namen von Personen. Ihre Qualität muss noch in anderen Aspekten untersucht werden.
Kontenmodell und Datenentkopplung:
Ähnlich wie Ethereum ist auch Solana eine Blockchain, die auf einem Kontomodell basiert, allerdings bietet Solana ein anderes Kontomodell als Ethereum und speichert Daten auf andere Weise.
In Solana können Konten Wallet-Informationen und andere Daten speichern. Die von einem Konto definierten Felder umfassen Lamports (Kontostand), Owner (Kontoinhaber), Executable (ob es sich um ein ausführbares Konto handelt) und Data (auf dem Konto gespeicherte Daten). Jedes Konto gibt ein Programm als Eigentümer an, um zu unterscheiden, welches Programm das Konto als Statusspeicher verwendet. Diese On-Chain-Programme sind schreibgeschützt oder zustandslos: Programmkonten (ausführbare Konten) speichern nur BPF-Bytecode und keinen Status. Das Programm speichert den Status in anderen unabhängigen Konten (nicht ausführbaren Konten), d. h. das Programmiermodell von Solana entkoppelt Code und Daten.
Ethereum-Konten sind hauptsächlich Verweise auf EVM-Zustände und ihre Smart Contracts enthalten sowohl Codelogik als auch die Notwendigkeit, Benutzerdaten zu speichern. Dies wird allgemein als ein Konstruktionsfehler angesehen, der aus der EVM-Geschichte übrig geblieben ist.
Unterschätzen Sie diesen Unterschied nicht! Solana-Smart Contracts sind grundsätzlich schwerer anzugreifen als Blockchains mit gekoppelten Programmiermodellen wie Ethereum:
In Ethereum ist der Smart Contract-Besitzer eine globale Variable, die dem Smart Contract nacheinander entspricht. Daher kann der Aufruf einer Funktion den Vertragsbesitzer direkt ändern.
In Solana sind die Besitzer eines Smart Contracts Daten, die mit einem Konto verknüpft sind, und keine globale Variable. Ein Konto kann mehrere Besitzer haben, statt einer Eins-zu-eins-Zuordnung. Damit ein Angreifer eine Sicherheitslücke in einem Smart Contract ausnutzen kann, muss er nicht nur die problematische Funktion finden, sondern auch das richtige Konto vorbereiten, um die Funktion aufzurufen. Dieser Schritt ist nicht einfach, da Solana-Smart Contracts normalerweise mehrere Eingabekonten beinhalten und die Beziehung zwischen ihnen durch Einschränkungen verwalten (wie „Konto 1.Besitzer==Konto 2.Schlüssel“). Der Prozess von der Vorbereitung des richtigen Kontos bis zum Starten eines Angriffs reicht aus, damit Sicherheitsmonitore vor einem Angriff proaktiv verdächtige Transaktionen erkennen können, die gefälschte Konten erstellen, die mit Smart Contracts verknüpft sind.
Der Ethereum Smart Contract ist wie ein Safe mit einem einzigartigen Passwort. Solange Sie das Passwort haben, haben Sie vollen Zugriff darauf. Solana ist ein Safe mit vielen Passwörtern, aber um die Erlaubnis zu erhalten, müssen Sie nicht nur einen Weg finden, an das Passwort zu kommen, sondern auch die dem Passwort entsprechende Nummer herausfinden, bevor Sie das Schloss öffnen können.
Programmiersprache
Rust ist die primäre Programmiersprache für die Entwicklung von Smart Contracts auf Solana. Aufgrund seiner Leistungs- und Sicherheitsfunktionen eignet es sich für Hochrisikoumgebungen von Blockchains und Smart Contracts. Solana unterstützt auch C, C++ und andere Sprachen (sehr selten). Offizielle SDKs für Rust und C werden bereitgestellt, um die Entwicklung von On-Chain-Programmen zu unterstützen. Entwickler können Tools verwenden, um Programme in Berkley Packet Filter (BPF)-Bytecode (Dateien mit der Erweiterung .so) zu kompilieren, sie dann in der Solana-Kette bereitzustellen und die Logik des Smart Contracts über die parallele Smart Contract-Laufzeit von Sealevel auszuführen.
Da die Sprache Rust selbst schwer zu erlernen ist und nicht für die Blockchain-Entwicklung angepasst ist, erfordern viele Anforderungen eine Neuerfindung und redundanten Code. (Viele Projekte in der Produktion verwenden das von Backpack-Mitbegründer Armani erstellte Anchor-Framework, um die Entwicklung zu vereinfachen.) Viele neu erstellte Programmiersprachen für die Blockchain-Entwicklung basieren auf Rust, beispielsweise Cairo (Starknet) und Move (Sui, Aptos).
Viele Projekte in der Produktion verwenden das Anchor-Framework
Ethereum-Smart-Contracts werden hauptsächlich in Solidity entwickelt (die Syntax ähnelt JavaScript und die Codedatei hat die Erweiterung .sol). Aufgrund der relativ einfachen Syntax und der ausgereifteren Entwicklungstools (Hardhat-Framework, Remix IDE usw.) denken wir normalerweise, dass die Entwicklung bei Ethereum einfacher und erfrischender ist, während der Einstieg in die Entwicklung bei Solana schwierig ist. Obwohl Solana jetzt sehr beliebt ist, ist die Zahl der Ethereum-Entwickler tatsächlich immer noch viel größer als bei Solana.
Unter bestimmten Straßenbedingungen kann ein Rennwagen der Spitzenklasse nicht so schnell fahren wie ein modifiziertes Auto. Rust ist wie ein Rennwagen der Spitzenklasse, der die Leistung und Sicherheit von Solana effektiv garantiert. Es ist jedoch nicht für die On-Chain-Programmentwicklung ausgelegt, was das Fahren (die Entwicklung) erschwert. Die Verwendung einer auf Rust basierenden öffentlichen Kette und die Anpassung der Sprache für die On-Chain-Entwicklung ist gleichbedeutend mit der Modifizierung des Rennwagens, um ihn besser an die Straßenbedingungen anzupassen. Solana ist in dieser Hinsicht im Nachteil.
Zusammenfassen
Das Smart-Contract-Programmiermodell von Solana ist innovativ. Es bietet eine zustandslose Smart-Contract-Entwicklungsmethode, verwendet Rust als Hauptprogrammiersprache und eine Architektur, die Logik von Zustand trennt. Dadurch wird Entwicklern eine leistungsstarke Umgebung zum Erstellen und Bereitstellen von Smart Contracts geboten, die Sicherheit und Leistung gewährleistet, aber die Entwicklung ist schwierig. Solana konzentriert sich auf hohen Durchsatz, niedrige Kosten und Skalierbarkeit und ist immer noch eine ideale Wahl für Entwickler, die leistungsstarke dApps erstellen möchten.
Referenzlinks
https://solana.com/docs
https://ethereum.org/en/developers/docs
https://www.anchor-lang.com/
Dieser Artikel stammt aus dem Internet: Eine kurze Beschreibung des Programmiermodells von Solana: Was ist der Unterschied zu ETH?
Originalautor: @Web3 Mario Einführung: Gestern habe ich zufällig von einem Freund erfahren, dass er im Bereich der BTC-Inschriften eine beträchtliche Kapitalrendite erzielt hatte, was die Mentalität des Autors, ins Leere zu treten, zutiefst erregte. Ich war zwei Tage hintereinander besorgt, was wirklich beschämend war. Der Autor erinnerte sich daran, dass die technische Architektur von Ordinals gerade zuvor veröffentlicht worden war, und studierte die relevanten Dokumente, aber als Entwickler war ich mit diesem technischen Weg ziemlich unzufrieden. Damals urteilte ich, dass dies einfach eine Umkehrung der Verschlüsselungstechnologie war, da das Designkonzept einem entfernten Altcoin-Projekt Color Coin ähnlich zu sein schien, nämlich wie man die technische Architektur von BTC verwendet, um einige unabhängige Token auszugeben, aber der Unterschied besteht darin, dass Ordinals dies nicht tat…