Untersuchen Solana Smart Contract Programmiermodells

Einsteiger6/11/2024, 5:47:31 AM
Solana ist eine leistungsstarke Blockchain-Plattform zur Unterstützung von dApps. Es ist bekannt für seine Geschwindigkeit und Skalierbarkeit, die durch einen einzigartigen Konsensmechanismus und ein architektonisches Design erreicht wird. Dieser Artikel verwendet Ethereum als Vergleichsobjekt, um die Eigenschaften des Solana Smart Contract Programmiermodells kurz vorzustellen.

Originaltitel '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'

Solana ist eine leistungsstarke Blockchain-Plattform zur Unterstützung von dApps. Es ist bekannt für seine Geschwindigkeit und Skalierbarkeit, die durch einen einzigartigen Konsensmechanismus und ein architektonisches Design erreicht wird. Dieser Artikel verwendet Ethereum als Vergleichsobjekt, um die Eigenschaften des Solana Smart Contract Programmiermodells kurz vorzustellen.

Smart Contracts und on-chain Programme:

Programme, die auf Ethereum ausgeführt werden, werden als Smart Contracts bezeichnet, eine Reihe von Codes (Funktion), die sich an einer bestimmten Adresse auf Ethereum und data(state) befinden. (Oh, der Code und die Daten sind gekoppelt) Smart Contracts sind auch Ethereum Konten, die als Vertragskonten bezeichnet werden. Sie haben Salden und können zu Transaktionsobjekten werden, aber sie können nicht von Menschen gesteuert werden und werden im Netzwerk bereitgestellt, um als Programme ausgeführt zu werden.

Die ausführbaren Codes, die auf Solana ausgeführt werden, werden als On-Chain-Programme bezeichnet und können die in jeder Transaktion gesendeten Anweisungen interpretieren. Diese Programme können direkt im Netzwerkkern als native Programme bereitgestellt oder von jedem als SPL-Programme veröffentlicht werden.

  1. Anweisungen: Anweisungen sind eindeutige Begriffe für Programme auf der Solana Chain. On-Chain-Programme bestehen aus Anweisungen. Sie sind die kleinsten Einheiten, die bestimmte Operationen ausführen: Eine oder mehrere Anweisungen sind in jeder Solana Transaktion enthalten. Anweisungen geben die auszuführenden Aktionen an, einschließlich des Aufrufs eines bestimmten On-Chain-Programms, der Übergabe eines Kontos, einer Liste von Eingaben und der Bereitstellung eines Byte-Arrays. Anweisungen haben Rechenbeschränkungen, daher sollten On-Chain-Programme optimiert werden, um eine kleine Anzahl von Recheneinheiten zu verwenden oder teure Operationen in mehrere Anweisungen aufzuteilen.

  1. Native Programme: Hierbei handelt es sich um Programme, die die notwendigen Funktionalitäten für die Validierung von Knoten bereitstellen. Das bemerkenswerteste ist das Systemprogramm, das für die Verwaltung der Erstellung neuer Konten und die Übertragung von SOL zwischen zwei Konten verantwortlich ist.
  2. SPL-Programme: Diese definieren eine Reihe von On-Chain-Aktivitäten, einschließlich der Erstellung, des Börsen und des Verleihens von Token sowie der Erstellung von Staking-Pools und der Wartung von On-Chain-Domainnamenauflösungsdiensten. Unter diesen wird das SPL Token-Programm für Token-Vorgänge verwendet, während das Associated Token Account-Programm häufig zum Schreiben anderer benutzerdefinierter Programme verwendet wird.

Sie nennen sie Smart Contracts, ich nenne sie On-Chain Programme. Unterschiedliche Begriffe, aber beide beziehen sich auf den Code, der auf der Blockchain läuft. Genau wie Alice sind Bob und John alle Namen, und ihre tatsächlichen Qualitäten müssen unter anderen Gesichtspunkten beurteilt werden.

Kontomodell, Datenentkopplung:

Ähnlich wie Ethereum ist auch Solana eine Blockchain, die auf einem Konto-Modell basiert, aber Solana ein anderes Konto-Modell als Ethereum bietet und Daten auf andere Weise speichert.

In Solana können Konten Wallet-Informationen und andere Daten speichern. Zu den vom Konto definierten Feldern gehören Lamports (Kontostand), Eigentümer (Kontoinhaber), Ausführbare Datei (ob es sich um ein ausführbares Konto handelt) und Daten (im Konto gespeicherte Daten). Jedes Konto gibt ein Programm als Besitzer an, um zu unterscheiden, für welches Programm das Konto als Zustandsspeicher verwendet wird. Diese On-Chain Programme sind schreibgeschützt oder zustandslos: Das Konto des Programms (ausführbares Konto) speichert nur BPF Bytecode und speichert keinen Zustand. Das Programm speichert den Status in anderen unabhängigen Konten (nicht ausführbare Konten). Das heißt, das Programmiermodell von Solana entkoppelt Code und Daten.

Das Ethereum Konto bezieht sich vor allem auf den EVM Staat. Sein Smart Contract verfügt nicht nur über eine Codelogik, sondern muss auch Benutzerdaten speichern. Dies wird oft als Konstruktionsfehler angesehen, der aus der Geschichte des EVM übrig geblieben ist.

Unterschätzen Sie diese Unterscheidung nicht! Solana Smart Contracts sind grundsätzlich schwieriger anzugreifen als Blockchains mit einem gekoppelten Programmiermodell wie Ethereum.

In Ethereum ist ein Smart Contract "Owner" eine globale Variable, die eins zu eins mit dem Smart Contract korrespondiert. Daher kann der Aufruf einer Funktion den "Besitzer" des Vertrags direkt ändern.

In Solana handelt es sich bei dem "Eigentümer" eines Smart Contracts jedoch um Daten, die mit einem Konto und nicht mit einer globalen Variablen verknüpft sind. Ein Konto kann mehrere Besitzer haben, anstatt eine 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 die "richtigen" Konten vorbereiten, um diese Funktion aufzurufen. Dieser Schritt ist nicht einfach, da Solana Smart Contracts in der Regel mehrere Eingabekonten umfassen und deren Beziehungen durch Einschränkungen verwalten (z. B. account1.owner == account2.key). Der Prozess von der "Vorbereitung der richtigen Konten" bis zum "Starten eines Angriffs" gibt dem Sicherheitsüberwachungspersonal genügend Zeit, um verdächtige Transaktionen im Zusammenhang mit der Erstellung von "gefälschten" Konten, die mit dem Smart Contract verbunden sind, proaktiv zu erkennen, bevor der Angriff stattfindet.

Ethereum Smart Contracts sind wie ein Tresor, der ein eindeutiges Passwort verwendet. Sobald Sie dieses Passwort erhalten haben, erhalten Sie die volle Eigentümerschaft. Im Gegensatz dazu sind die Smart Contracts von Solana wie ein Tresor mit vielen Passwörtern. Um Zugriff zu erhalten, müssen Sie nicht nur die Passwörter erhalten, sondern auch herausfinden, welches Passwort welchem Schloss entspricht, um es zu öffnen.

Programmiersprache

Rust ist die primäre Programmiersprache für die Entwicklung von Smart Contracts auf Solana. Aufgrund seiner Leistungs- und Sicherheitsmerkmale eignet es sich für die risikoreiche Umgebung von Blockchain und Smart Contracts. Solana unterstützt auch C, C ++ und (sehr ungewöhnlich) andere Sprachen. Das offizielle SDK für Rust und C wird zur Unterstützung der Entwicklung von On-Chain Programmen bereitgestellt. Entwickler können Tools verwenden, um das Programm in den Bytecode Berkley Packet Filter (BPF) zu kompilieren (die Datei hat die Erweiterung .so), es dann in der Solana-Kette bereitzustellen und die Logik des Smart Contracts über die parallele Smart-Contract-Laufzeit von Sealevel auszuführen.

Da der Einstieg in die Sprache Rust selbst schwierig ist und nicht für die Blockchain-Entwicklung angepasst ist, müssen viele Anforderungen das Rad neu erfinden und redundanten Code erstellen. (Viele Projekte in der Produktion verwenden das Anchor-Framework, das von Backpack-Mitschöpfer Armani entwickelt wurde, um die Entwicklung zu vereinfachen.) Viele neu geschaffene Programmiersprachen, die sich der Blockchain-Entwicklung widmen, basieren auf Rust, wie z. B. Cairo (Starknet), Move (Sui, Aptos).

Viele Projekte in der Produktion verwenden das Anchor-Framework

Ethereum Smart Contracts werden hauptsächlich in der Solidity-Sprache 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...) denken wir im Allgemeinen, dass die Entwicklungserfahrung von Ethereum einfacher und erfrischender ist, während die Solana-Entwicklung schwieriger zu starten ist. Obwohl Solana jetzt sehr beliebt ist, ist die Anzahl der Entwickler auf Ethereum immer noch weit höher als bei Solana.

Unter bestimmten Straßenbedingungen sind Top-Rennwagen nicht so schnell wie modifizierte Autos. Rust ist wie ein Rennwagen auf höchstem Niveau, der die Leistung und Sicherheit von Solana effektiv garantiert. Es ist jedoch nicht darauf ausgelegt, diese Strecke für On-Chain Programme zu entwickeln, sondern verursacht stattdessen eine Erhöhung der Schwierigkeit des Fahrens (Entwicklung). Die Verwendung einer öffentlichen Kette, die auf Rust basiert, und die Entwicklung einer benutzerdefinierten Sprache für die Kette ist gleichbedeutend mit der Modifikation des Rennwagens, um ihn für die Straßenbedingungen geeigneter zu machen. Solana ist hier im Nachteil.

Zusammenfassung

Das Smart-Contract-Programmiermodell von Solana ist innovativ. Es bietet einen zustandslosen Ansatz für die Entwicklung von Smart Contracts, der Rust als primäre Programmiersprache und eine Architektur verwendet, die Logik und Zustand trennt. Dies bietet Entwicklern eine robuste Umgebung für die Erstellung und Bereitstellung von Smart Contracts, die Sicherheit und Leistung gewährleistet, obwohl dies eine höhere Entwicklungsschwierigkeit darstellt. Solana konzentriert sich auf hohen Durchsatz, niedrige Kosten und Skalierbarkeit und ist damit die ideale Wahl für Entwickler, die derzeit leistungsstarke dApps erstellen möchten.

Haftungsausschluss:

  1. Dieser Artikel ist ein Nachdruck von [Foresight News]. Alle Urheberrechte liegen beim ursprünglichen Autor [Alex Liu]. Wenn es Einwände gegen diesen Nachdruck gibt, wenden Sie sich bitte an das Team von Gate Learn, das sich umgehend darum kümmern wird.
  2. Haftungsausschluss: Die in diesem Artikel geäußerten Ansichten und Meinungen sind ausschließlich die des Autors und stellen keine Anlageberatung dar.
  3. Übersetzungen des Artikels in andere Sprachen werden vom Gate Learn-Team durchgeführt. Sofern nicht anders angegeben, ist das Kopieren, Verbreiten oder Plagiieren der übersetzten Artikel verboten.

Untersuchen Solana Smart Contract Programmiermodells

Einsteiger6/11/2024, 5:47:31 AM
Solana ist eine leistungsstarke Blockchain-Plattform zur Unterstützung von dApps. Es ist bekannt für seine Geschwindigkeit und Skalierbarkeit, die durch einen einzigartigen Konsensmechanismus und ein architektonisches Design erreicht wird. Dieser Artikel verwendet Ethereum als Vergleichsobjekt, um die Eigenschaften des Solana Smart Contract Programmiermodells kurz vorzustellen.

Originaltitel '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'

Solana ist eine leistungsstarke Blockchain-Plattform zur Unterstützung von dApps. Es ist bekannt für seine Geschwindigkeit und Skalierbarkeit, die durch einen einzigartigen Konsensmechanismus und ein architektonisches Design erreicht wird. Dieser Artikel verwendet Ethereum als Vergleichsobjekt, um die Eigenschaften des Solana Smart Contract Programmiermodells kurz vorzustellen.

Smart Contracts und on-chain Programme:

Programme, die auf Ethereum ausgeführt werden, werden als Smart Contracts bezeichnet, eine Reihe von Codes (Funktion), die sich an einer bestimmten Adresse auf Ethereum und data(state) befinden. (Oh, der Code und die Daten sind gekoppelt) Smart Contracts sind auch Ethereum Konten, die als Vertragskonten bezeichnet werden. Sie haben Salden und können zu Transaktionsobjekten werden, aber sie können nicht von Menschen gesteuert werden und werden im Netzwerk bereitgestellt, um als Programme ausgeführt zu werden.

Die ausführbaren Codes, die auf Solana ausgeführt werden, werden als On-Chain-Programme bezeichnet und können die in jeder Transaktion gesendeten Anweisungen interpretieren. Diese Programme können direkt im Netzwerkkern als native Programme bereitgestellt oder von jedem als SPL-Programme veröffentlicht werden.

  1. Anweisungen: Anweisungen sind eindeutige Begriffe für Programme auf der Solana Chain. On-Chain-Programme bestehen aus Anweisungen. Sie sind die kleinsten Einheiten, die bestimmte Operationen ausführen: Eine oder mehrere Anweisungen sind in jeder Solana Transaktion enthalten. Anweisungen geben die auszuführenden Aktionen an, einschließlich des Aufrufs eines bestimmten On-Chain-Programms, der Übergabe eines Kontos, einer Liste von Eingaben und der Bereitstellung eines Byte-Arrays. Anweisungen haben Rechenbeschränkungen, daher sollten On-Chain-Programme optimiert werden, um eine kleine Anzahl von Recheneinheiten zu verwenden oder teure Operationen in mehrere Anweisungen aufzuteilen.

  1. Native Programme: Hierbei handelt es sich um Programme, die die notwendigen Funktionalitäten für die Validierung von Knoten bereitstellen. Das bemerkenswerteste ist das Systemprogramm, das für die Verwaltung der Erstellung neuer Konten und die Übertragung von SOL zwischen zwei Konten verantwortlich ist.
  2. SPL-Programme: Diese definieren eine Reihe von On-Chain-Aktivitäten, einschließlich der Erstellung, des Börsen und des Verleihens von Token sowie der Erstellung von Staking-Pools und der Wartung von On-Chain-Domainnamenauflösungsdiensten. Unter diesen wird das SPL Token-Programm für Token-Vorgänge verwendet, während das Associated Token Account-Programm häufig zum Schreiben anderer benutzerdefinierter Programme verwendet wird.

Sie nennen sie Smart Contracts, ich nenne sie On-Chain Programme. Unterschiedliche Begriffe, aber beide beziehen sich auf den Code, der auf der Blockchain läuft. Genau wie Alice sind Bob und John alle Namen, und ihre tatsächlichen Qualitäten müssen unter anderen Gesichtspunkten beurteilt werden.

Kontomodell, Datenentkopplung:

Ähnlich wie Ethereum ist auch Solana eine Blockchain, die auf einem Konto-Modell basiert, aber Solana ein anderes Konto-Modell als Ethereum bietet und Daten auf andere Weise speichert.

In Solana können Konten Wallet-Informationen und andere Daten speichern. Zu den vom Konto definierten Feldern gehören Lamports (Kontostand), Eigentümer (Kontoinhaber), Ausführbare Datei (ob es sich um ein ausführbares Konto handelt) und Daten (im Konto gespeicherte Daten). Jedes Konto gibt ein Programm als Besitzer an, um zu unterscheiden, für welches Programm das Konto als Zustandsspeicher verwendet wird. Diese On-Chain Programme sind schreibgeschützt oder zustandslos: Das Konto des Programms (ausführbares Konto) speichert nur BPF Bytecode und speichert keinen Zustand. Das Programm speichert den Status in anderen unabhängigen Konten (nicht ausführbare Konten). Das heißt, das Programmiermodell von Solana entkoppelt Code und Daten.

Das Ethereum Konto bezieht sich vor allem auf den EVM Staat. Sein Smart Contract verfügt nicht nur über eine Codelogik, sondern muss auch Benutzerdaten speichern. Dies wird oft als Konstruktionsfehler angesehen, der aus der Geschichte des EVM übrig geblieben ist.

Unterschätzen Sie diese Unterscheidung nicht! Solana Smart Contracts sind grundsätzlich schwieriger anzugreifen als Blockchains mit einem gekoppelten Programmiermodell wie Ethereum.

In Ethereum ist ein Smart Contract "Owner" eine globale Variable, die eins zu eins mit dem Smart Contract korrespondiert. Daher kann der Aufruf einer Funktion den "Besitzer" des Vertrags direkt ändern.

In Solana handelt es sich bei dem "Eigentümer" eines Smart Contracts jedoch um Daten, die mit einem Konto und nicht mit einer globalen Variablen verknüpft sind. Ein Konto kann mehrere Besitzer haben, anstatt eine 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 die "richtigen" Konten vorbereiten, um diese Funktion aufzurufen. Dieser Schritt ist nicht einfach, da Solana Smart Contracts in der Regel mehrere Eingabekonten umfassen und deren Beziehungen durch Einschränkungen verwalten (z. B. account1.owner == account2.key). Der Prozess von der "Vorbereitung der richtigen Konten" bis zum "Starten eines Angriffs" gibt dem Sicherheitsüberwachungspersonal genügend Zeit, um verdächtige Transaktionen im Zusammenhang mit der Erstellung von "gefälschten" Konten, die mit dem Smart Contract verbunden sind, proaktiv zu erkennen, bevor der Angriff stattfindet.

Ethereum Smart Contracts sind wie ein Tresor, der ein eindeutiges Passwort verwendet. Sobald Sie dieses Passwort erhalten haben, erhalten Sie die volle Eigentümerschaft. Im Gegensatz dazu sind die Smart Contracts von Solana wie ein Tresor mit vielen Passwörtern. Um Zugriff zu erhalten, müssen Sie nicht nur die Passwörter erhalten, sondern auch herausfinden, welches Passwort welchem Schloss entspricht, um es zu öffnen.

Programmiersprache

Rust ist die primäre Programmiersprache für die Entwicklung von Smart Contracts auf Solana. Aufgrund seiner Leistungs- und Sicherheitsmerkmale eignet es sich für die risikoreiche Umgebung von Blockchain und Smart Contracts. Solana unterstützt auch C, C ++ und (sehr ungewöhnlich) andere Sprachen. Das offizielle SDK für Rust und C wird zur Unterstützung der Entwicklung von On-Chain Programmen bereitgestellt. Entwickler können Tools verwenden, um das Programm in den Bytecode Berkley Packet Filter (BPF) zu kompilieren (die Datei hat die Erweiterung .so), es dann in der Solana-Kette bereitzustellen und die Logik des Smart Contracts über die parallele Smart-Contract-Laufzeit von Sealevel auszuführen.

Da der Einstieg in die Sprache Rust selbst schwierig ist und nicht für die Blockchain-Entwicklung angepasst ist, müssen viele Anforderungen das Rad neu erfinden und redundanten Code erstellen. (Viele Projekte in der Produktion verwenden das Anchor-Framework, das von Backpack-Mitschöpfer Armani entwickelt wurde, um die Entwicklung zu vereinfachen.) Viele neu geschaffene Programmiersprachen, die sich der Blockchain-Entwicklung widmen, basieren auf Rust, wie z. B. Cairo (Starknet), Move (Sui, Aptos).

Viele Projekte in der Produktion verwenden das Anchor-Framework

Ethereum Smart Contracts werden hauptsächlich in der Solidity-Sprache 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...) denken wir im Allgemeinen, dass die Entwicklungserfahrung von Ethereum einfacher und erfrischender ist, während die Solana-Entwicklung schwieriger zu starten ist. Obwohl Solana jetzt sehr beliebt ist, ist die Anzahl der Entwickler auf Ethereum immer noch weit höher als bei Solana.

Unter bestimmten Straßenbedingungen sind Top-Rennwagen nicht so schnell wie modifizierte Autos. Rust ist wie ein Rennwagen auf höchstem Niveau, der die Leistung und Sicherheit von Solana effektiv garantiert. Es ist jedoch nicht darauf ausgelegt, diese Strecke für On-Chain Programme zu entwickeln, sondern verursacht stattdessen eine Erhöhung der Schwierigkeit des Fahrens (Entwicklung). Die Verwendung einer öffentlichen Kette, die auf Rust basiert, und die Entwicklung einer benutzerdefinierten Sprache für die Kette ist gleichbedeutend mit der Modifikation des Rennwagens, um ihn für die Straßenbedingungen geeigneter zu machen. Solana ist hier im Nachteil.

Zusammenfassung

Das Smart-Contract-Programmiermodell von Solana ist innovativ. Es bietet einen zustandslosen Ansatz für die Entwicklung von Smart Contracts, der Rust als primäre Programmiersprache und eine Architektur verwendet, die Logik und Zustand trennt. Dies bietet Entwicklern eine robuste Umgebung für die Erstellung und Bereitstellung von Smart Contracts, die Sicherheit und Leistung gewährleistet, obwohl dies eine höhere Entwicklungsschwierigkeit darstellt. Solana konzentriert sich auf hohen Durchsatz, niedrige Kosten und Skalierbarkeit und ist damit die ideale Wahl für Entwickler, die derzeit leistungsstarke dApps erstellen möchten.

Haftungsausschluss:

  1. Dieser Artikel ist ein Nachdruck von [Foresight News]. Alle Urheberrechte liegen beim ursprünglichen Autor [Alex Liu]. Wenn es Einwände gegen diesen Nachdruck gibt, wenden Sie sich bitte an das Team von Gate Learn, das sich umgehend darum kümmern wird.
  2. Haftungsausschluss: Die in diesem Artikel geäußerten Ansichten und Meinungen sind ausschließlich die des Autors und stellen keine Anlageberatung dar.
  3. Übersetzungen des Artikels in andere Sprachen werden vom Gate Learn-Team durchgeführt. Sofern nicht anders angegeben, ist das Kopieren, Verbreiten oder Plagiieren der übersetzten Artikel verboten.
Jetzt anfangen
Registrieren Sie sich und erhalten Sie einen
100
-Euro-Gutschein!