ソラナ スマートコントラクト プログラミング モデルの調査

初級編6/11/2024, 5:47:31 AM
ソラナは、dAppsをサポートするために設計された高性能ブロックチェーンプラットフォームです。そのスピードとスケーラビリティは、独自のコンセンサスメカニズムとアーキテクチャ設計によって実現されています。この記事では、イーサリアムを比較対象として使用し、ソラナスマートコントラクトプログラミングモデルの特徴を簡単に紹介します。

原題「小学生也能看懂!ソラナ的编程模型,究竟和 ETH 有啥区别?」

ソラナは、dAppsをサポートするために設計された高性能ブロックチェーンプラットフォームです。そのスピードとスケーラビリティは、独自のコンセンサスメカニズムとアーキテクチャ設計によって実現されています。この記事では、イーサリアムを比較対象として使用し、ソラナスマートコントラクトプログラミングモデルの特徴を簡単に紹介します。

スマートコントラクトとオンチェーンプログラム:

イーサリアム上で動作するプログラムはスマートコントラクトと呼ばれ、イーサリアムとデータ(状態)の特定のアドレスにある一連のコード(関数)です。(ああ、コードとデータが結合されています)スマートコントラクトは、コントラクトアカウントと呼ばれるイーサリアムアカウントでもあります。それらは残高を持ち、トランザクションオブジェクトになることができますが、人間が制御することはできず、ネットワーク上に展開されてプログラムとして実行されます。

ソラナ上で動作する実行可能コードはオンチェーンプログラムと呼ばれ、各トランザクションで送信された命令を解釈することができます。これらのプログラムは、ネイティブ・プログラムとしてネットワーク・コアに直接デプロイすることも、SPL プログラムとして誰でも公開することもできます。

  1. 手順:手順は、ソラナチェーン上のプログラムに固有の用語です。オンチェーンプログラムは、命令で構成されています。これらは特定の操作を実行する最小単位であり、各ソラナトランザクションに1つ以上の命令が含まれています。命令は、特定のオンチェーンプログラムの呼び出し、アカウントの受け渡し、入力の上場、バイト配列の提供など、実行するアクションを指定します。命令には計算上の制約があるため、オンチェーンプログラムは、少数の計算ユニットを使用するか、高価な操作を複数の命令に分割するように最適化する必要があります。

  1. ネイティブプログラム:ノードの検証に必要な機能を提供するプログラムです。最も注目すべきものは、新しいアカウントの作成を管理し、2つのアカウント間でSOLを転送するシステムプログラムです。
  2. SPLプログラム:これらは、トークンの作成、取引所、貸付、ステーキングプールの作成、オンチェーンドメイン名解決サービスのメンテナンスなど、一連のオンチェーンアクティビティを定義します。これらのうち、SPLトークンプログラムはトークン操作に使用され、関連するトークンアカウントプログラムは他のカスタムプログラムの作成に一般的に使用されます。

あなたはそれらをスマートコントラクトと呼び、私はそれらをオンチェーンプログラムと呼んでいます。用語は異なりますが、どちらもブロックチェーン上で動作するコードを指します。アリスと同じように、ボブとジョンはすべて名前であり、彼らの実際の資質は他の側面によって評価される必要があります。

アカウントモデル、データデカップリング:

イーサリアムと同様に、ソラナもアカウントモデルに基づくブロックチェーンですが、ソラナイーサリアムとは異なるアカウントモデルを提供し、さまざまな方法でデータを保存します。

ソラナでは、アカウントはウォレット情報やその他のデータを保存できます。アカウント定義フィールドには、Lamports (口座残高)、所有者 (アカウント所有者)、実行可能ファイル (実行可能アカウントかどうか)、およびデータ (アカウントに格納されているデータ) が含まれます。各アカウントは、プログラムを所有者として指定し、アカウントが状態ストアとして使用されるプログラムを区別します。これらのオンチェーンプログラムは読み取り専用またはステートレスです:プログラムアカウント(実行可能アカウント)はBPFバイトコードのみを格納し、状態は保存しません。プログラムは、他の独立したアカウント (実行不可能なアカウント) に状態を格納します。つまり、ソラナのプログラミングモデルはコードとデータを分離します。

イーサリアム アカウントは、主にEVM状態への参照です。そのスマートコントラクトにはコードロジックがあるだけでなく、ユーザーデータを保存する必要があります。これは、EVM の歴史から残された設計上の欠陥と見なされることがよくあります。

この違いを過小評価しないでください。ソラナ スマートコントラクトは、イーサリアムのような結合プログラミングモデルを持つブロックチェーンと比較して、根本的に攻撃が困難です。

イーサリアムでは、スマートコントラクトの「所有者」は、スマートコントラクトと1対1で対応するグローバル変数です。したがって、関数を呼び出すと、コントラクトの "所有者" が直接変更される可能性があります。

ただし、ソラナでは、スマートコントラクトの「所有者」は、グローバル変数ではなく、アカウントに関連付けられたデータです。アカウントは、1 対 1 の関連付けではなく、複数の所有者を持つことができます。攻撃者がスマートコントラクトのセキュリティ脆弱性を悪用するには、問題のある関数を見つけるだけでなく、その関数を呼び出すための「正しい」アカウントを準備する必要があります。通常ソラナ スマートコントラクト複数の入力アカウントが含まれ、制約 (account1.owner == account2.key など) を使用してそれらの関係を管理するため、この手順は簡単ではありません。「正しいアカウントの準備」から「攻撃の開始」までのプロセスにより、セキュリティ監視担当者は、攻撃が発生する前に、スマートコントラクトに関連付けられた「偽の」アカウントの作成に関連する疑わしいトランザクションを事前に検出するのに十分な時間を得ることができます。

イーサリアム スマートコントラクトは、一意のパスワードを使用する保管庫のようなもので、このパスワードを取得すると、完全な所有権が得られます。対照的に、ソラナのスマートコントラクトは、多くのパスワードを持つ金庫のようなものです。アクセスするには、パスワードを取得するだけでなく、どのパスワードがどのロックに対応しているかを把握する必要があります。

プログラミング言語

Rust は、ソラナ でスマートコントラクトを開発するための主要なプログラミング言語です。そのパフォーマンスとセキュリティ機能により、ブロックチェーンとスマートコントラクトのリスクの高い環境に適しています。ソラナは、C、C ++、および(非常に珍しい)他の言語もサポートしています。オンチェーンプログラムの開発をサポートするために、RustおよびC用の公式SDKが提供されています。開発者はツールを使用して、プログラムをバークレーパケットフィルター(BPF)バイトコード(ファイルの拡張子は.so)にコンパイルし、ソラナチェーンにデプロイし、Sealevel並列スマートコントラクトランタイムを介してスマートコントラクトのロジックを実行できます。

Rust言語自体は使い始めるのが難しく、ブロックチェーン開発用にカスタマイズされていないため、多くの要件で車輪の再発明と冗長なコードが必要です。(本番環境の多くのプロジェクトでは、開発を簡素化するために Backpack の共同開発者である Armani が作成した Anchor フレームワークを使用しています)ブロックチェーン開発に特化した多くの新しく作成されたプログラミング言語は、Cairo(Starknet)、Move(Sui、Aptos)など、Rustに基づいています。

本番環境の多くのプロジェクトでは、Anchor フレームワークが使用されています

イーサリアム スマートコントラクト主にSolidity言語で開発されています(構文はjavascriptに似ており、コードファイルの拡張子は.solです)。比較的単純な構文とより成熟した開発ツール(Hardhatフレームワーク、Remix IDEなど)により、イーサリアムの開発体験はよりシンプルで新鮮であるのに対し、ソラナの開発はより開始が難しいと一般的に考えています。したがって、ソラナは現在非常に人気がありますが、実際にはイーサリアムの開発者の数はまだソラナをはるかに上回っています。

特定の道路状況下では、トップレーシングカーは改造車ほど速くありません。Rustはトップレベルのレーシングカーのようなもので、ソラナのパフォーマンスと安全性を効果的に保証します。ただし、このトラックをオンチェーンプログラム用に開発するようには設計されておらず、代わりに運転(開発)の難易度が高くなります。Rustベースのパブリックチェーンを使用し、チェーンのカスタム言語を開発することは、レーシングカーを道路状況により適したものに変更することと同じです。ソラナはここで不利です。

概要

ソラナのスマートコントラクトプログラミングモデルは革新的です。スマートコントラクト開発へのステートレスなアプローチを提供し、Rustを主要なプログラミング言語として使用し、ロジックを状態から分離するアーキテクチャを提供します。これにより、開発者はスマートコントラクトを構築およびデプロイするための堅牢な環境を提供し、セキュリティとパフォーマンスを確保しますが、開発の難易度は高くなります。ソラナは、高スループット、低コスト、スケーラビリティに重点を置いており、現在高性能なdAppsを作成しようとしている開発者にとって理想的な選択肢となっています。

免責事項:

  1. この記事は[Foresight News]からの転載です。すべての著作権は原作者[Alex Liu]に帰属します。この転載に異議がある場合は、Gate Learnチームまでご連絡いただければ、迅速に対応いたします。
  2. 免責事項:この記事で表明された見解や意見は、著者のものであり、投資アドバイスを構成するものではありません。
  3. 記事の他言語への翻訳は、Gate Learnチームによって行われます。特に明記されていない限り、翻訳された記事のコピー、配布、盗用は禁止されています。

ソラナ スマートコントラクト プログラミング モデルの調査

初級編6/11/2024, 5:47:31 AM
ソラナは、dAppsをサポートするために設計された高性能ブロックチェーンプラットフォームです。そのスピードとスケーラビリティは、独自のコンセンサスメカニズムとアーキテクチャ設計によって実現されています。この記事では、イーサリアムを比較対象として使用し、ソラナスマートコントラクトプログラミングモデルの特徴を簡単に紹介します。

原題「小学生也能看懂!ソラナ的编程模型,究竟和 ETH 有啥区别?」

ソラナは、dAppsをサポートするために設計された高性能ブロックチェーンプラットフォームです。そのスピードとスケーラビリティは、独自のコンセンサスメカニズムとアーキテクチャ設計によって実現されています。この記事では、イーサリアムを比較対象として使用し、ソラナスマートコントラクトプログラミングモデルの特徴を簡単に紹介します。

スマートコントラクトとオンチェーンプログラム:

イーサリアム上で動作するプログラムはスマートコントラクトと呼ばれ、イーサリアムとデータ(状態)の特定のアドレスにある一連のコード(関数)です。(ああ、コードとデータが結合されています)スマートコントラクトは、コントラクトアカウントと呼ばれるイーサリアムアカウントでもあります。それらは残高を持ち、トランザクションオブジェクトになることができますが、人間が制御することはできず、ネットワーク上に展開されてプログラムとして実行されます。

ソラナ上で動作する実行可能コードはオンチェーンプログラムと呼ばれ、各トランザクションで送信された命令を解釈することができます。これらのプログラムは、ネイティブ・プログラムとしてネットワーク・コアに直接デプロイすることも、SPL プログラムとして誰でも公開することもできます。

  1. 手順:手順は、ソラナチェーン上のプログラムに固有の用語です。オンチェーンプログラムは、命令で構成されています。これらは特定の操作を実行する最小単位であり、各ソラナトランザクションに1つ以上の命令が含まれています。命令は、特定のオンチェーンプログラムの呼び出し、アカウントの受け渡し、入力の上場、バイト配列の提供など、実行するアクションを指定します。命令には計算上の制約があるため、オンチェーンプログラムは、少数の計算ユニットを使用するか、高価な操作を複数の命令に分割するように最適化する必要があります。

  1. ネイティブプログラム:ノードの検証に必要な機能を提供するプログラムです。最も注目すべきものは、新しいアカウントの作成を管理し、2つのアカウント間でSOLを転送するシステムプログラムです。
  2. SPLプログラム:これらは、トークンの作成、取引所、貸付、ステーキングプールの作成、オンチェーンドメイン名解決サービスのメンテナンスなど、一連のオンチェーンアクティビティを定義します。これらのうち、SPLトークンプログラムはトークン操作に使用され、関連するトークンアカウントプログラムは他のカスタムプログラムの作成に一般的に使用されます。

あなたはそれらをスマートコントラクトと呼び、私はそれらをオンチェーンプログラムと呼んでいます。用語は異なりますが、どちらもブロックチェーン上で動作するコードを指します。アリスと同じように、ボブとジョンはすべて名前であり、彼らの実際の資質は他の側面によって評価される必要があります。

アカウントモデル、データデカップリング:

イーサリアムと同様に、ソラナもアカウントモデルに基づくブロックチェーンですが、ソラナイーサリアムとは異なるアカウントモデルを提供し、さまざまな方法でデータを保存します。

ソラナでは、アカウントはウォレット情報やその他のデータを保存できます。アカウント定義フィールドには、Lamports (口座残高)、所有者 (アカウント所有者)、実行可能ファイル (実行可能アカウントかどうか)、およびデータ (アカウントに格納されているデータ) が含まれます。各アカウントは、プログラムを所有者として指定し、アカウントが状態ストアとして使用されるプログラムを区別します。これらのオンチェーンプログラムは読み取り専用またはステートレスです:プログラムアカウント(実行可能アカウント)はBPFバイトコードのみを格納し、状態は保存しません。プログラムは、他の独立したアカウント (実行不可能なアカウント) に状態を格納します。つまり、ソラナのプログラミングモデルはコードとデータを分離します。

イーサリアム アカウントは、主にEVM状態への参照です。そのスマートコントラクトにはコードロジックがあるだけでなく、ユーザーデータを保存する必要があります。これは、EVM の歴史から残された設計上の欠陥と見なされることがよくあります。

この違いを過小評価しないでください。ソラナ スマートコントラクトは、イーサリアムのような結合プログラミングモデルを持つブロックチェーンと比較して、根本的に攻撃が困難です。

イーサリアムでは、スマートコントラクトの「所有者」は、スマートコントラクトと1対1で対応するグローバル変数です。したがって、関数を呼び出すと、コントラクトの "所有者" が直接変更される可能性があります。

ただし、ソラナでは、スマートコントラクトの「所有者」は、グローバル変数ではなく、アカウントに関連付けられたデータです。アカウントは、1 対 1 の関連付けではなく、複数の所有者を持つことができます。攻撃者がスマートコントラクトのセキュリティ脆弱性を悪用するには、問題のある関数を見つけるだけでなく、その関数を呼び出すための「正しい」アカウントを準備する必要があります。通常ソラナ スマートコントラクト複数の入力アカウントが含まれ、制約 (account1.owner == account2.key など) を使用してそれらの関係を管理するため、この手順は簡単ではありません。「正しいアカウントの準備」から「攻撃の開始」までのプロセスにより、セキュリティ監視担当者は、攻撃が発生する前に、スマートコントラクトに関連付けられた「偽の」アカウントの作成に関連する疑わしいトランザクションを事前に検出するのに十分な時間を得ることができます。

イーサリアム スマートコントラクトは、一意のパスワードを使用する保管庫のようなもので、このパスワードを取得すると、完全な所有権が得られます。対照的に、ソラナのスマートコントラクトは、多くのパスワードを持つ金庫のようなものです。アクセスするには、パスワードを取得するだけでなく、どのパスワードがどのロックに対応しているかを把握する必要があります。

プログラミング言語

Rust は、ソラナ でスマートコントラクトを開発するための主要なプログラミング言語です。そのパフォーマンスとセキュリティ機能により、ブロックチェーンとスマートコントラクトのリスクの高い環境に適しています。ソラナは、C、C ++、および(非常に珍しい)他の言語もサポートしています。オンチェーンプログラムの開発をサポートするために、RustおよびC用の公式SDKが提供されています。開発者はツールを使用して、プログラムをバークレーパケットフィルター(BPF)バイトコード(ファイルの拡張子は.so)にコンパイルし、ソラナチェーンにデプロイし、Sealevel並列スマートコントラクトランタイムを介してスマートコントラクトのロジックを実行できます。

Rust言語自体は使い始めるのが難しく、ブロックチェーン開発用にカスタマイズされていないため、多くの要件で車輪の再発明と冗長なコードが必要です。(本番環境の多くのプロジェクトでは、開発を簡素化するために Backpack の共同開発者である Armani が作成した Anchor フレームワークを使用しています)ブロックチェーン開発に特化した多くの新しく作成されたプログラミング言語は、Cairo(Starknet)、Move(Sui、Aptos)など、Rustに基づいています。

本番環境の多くのプロジェクトでは、Anchor フレームワークが使用されています

イーサリアム スマートコントラクト主にSolidity言語で開発されています(構文はjavascriptに似ており、コードファイルの拡張子は.solです)。比較的単純な構文とより成熟した開発ツール(Hardhatフレームワーク、Remix IDEなど)により、イーサリアムの開発体験はよりシンプルで新鮮であるのに対し、ソラナの開発はより開始が難しいと一般的に考えています。したがって、ソラナは現在非常に人気がありますが、実際にはイーサリアムの開発者の数はまだソラナをはるかに上回っています。

特定の道路状況下では、トップレーシングカーは改造車ほど速くありません。Rustはトップレベルのレーシングカーのようなもので、ソラナのパフォーマンスと安全性を効果的に保証します。ただし、このトラックをオンチェーンプログラム用に開発するようには設計されておらず、代わりに運転(開発)の難易度が高くなります。Rustベースのパブリックチェーンを使用し、チェーンのカスタム言語を開発することは、レーシングカーを道路状況により適したものに変更することと同じです。ソラナはここで不利です。

概要

ソラナのスマートコントラクトプログラミングモデルは革新的です。スマートコントラクト開発へのステートレスなアプローチを提供し、Rustを主要なプログラミング言語として使用し、ロジックを状態から分離するアーキテクチャを提供します。これにより、開発者はスマートコントラクトを構築およびデプロイするための堅牢な環境を提供し、セキュリティとパフォーマンスを確保しますが、開発の難易度は高くなります。ソラナは、高スループット、低コスト、スケーラビリティに重点を置いており、現在高性能なdAppsを作成しようとしている開発者にとって理想的な選択肢となっています。

免責事項:

  1. この記事は[Foresight News]からの転載です。すべての著作権は原作者[Alex Liu]に帰属します。この転載に異議がある場合は、Gate Learnチームまでご連絡いただければ、迅速に対応いたします。
  2. 免責事項:この記事で表明された見解や意見は、著者のものであり、投資アドバイスを構成するものではありません。
  3. 記事の他言語への翻訳は、Gate Learnチームによって行われます。特に明記されていない限り、翻訳された記事のコピー、配布、盗用は禁止されています。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!