原題「小学生也能看懂!ソラナ的编程模型,究竟和 ETH 有啥区别?」
ソラナは、dAppsをサポートするために設計された高性能ブロックチェーンプラットフォームです。そのスピードとスケーラビリティは、独自のコンセンサスメカニズムとアーキテクチャ設計によって実現されています。この記事では、イーサリアムを比較対象として使用し、ソラナスマートコントラクトプログラミングモデルの特徴を簡単に紹介します。
イーサリアム上で動作するプログラムはスマートコントラクトと呼ばれ、イーサリアムとデータ(状態)の特定のアドレスにある一連のコード(関数)です。(ああ、コードとデータが結合されています)スマートコントラクトは、コントラクトアカウントと呼ばれるイーサリアムアカウントでもあります。それらは残高を持ち、トランザクションオブジェクトになることができますが、人間が制御することはできず、ネットワーク上に展開されてプログラムとして実行されます。
ソラナ上で動作する実行可能コードはオンチェーンプログラムと呼ばれ、各トランザクションで送信された命令を解釈することができます。これらのプログラムは、ネイティブ・プログラムとしてネットワーク・コアに直接デプロイすることも、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を作成しようとしている開発者にとって理想的な選択肢となっています。
原題「小学生也能看懂!ソラナ的编程模型,究竟和 ETH 有啥区别?」
ソラナは、dAppsをサポートするために設計された高性能ブロックチェーンプラットフォームです。そのスピードとスケーラビリティは、独自のコンセンサスメカニズムとアーキテクチャ設計によって実現されています。この記事では、イーサリアムを比較対象として使用し、ソラナスマートコントラクトプログラミングモデルの特徴を簡単に紹介します。
イーサリアム上で動作するプログラムはスマートコントラクトと呼ばれ、イーサリアムとデータ(状態)の特定のアドレスにある一連のコード(関数)です。(ああ、コードとデータが結合されています)スマートコントラクトは、コントラクトアカウントと呼ばれるイーサリアムアカウントでもあります。それらは残高を持ち、トランザクションオブジェクトになることができますが、人間が制御することはできず、ネットワーク上に展開されてプログラムとして実行されます。
ソラナ上で動作する実行可能コードはオンチェーンプログラムと呼ばれ、各トランザクションで送信された命令を解釈することができます。これらのプログラムは、ネイティブ・プログラムとしてネットワーク・コアに直接デプロイすることも、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を作成しようとしている開発者にとって理想的な選択肢となっています。