
Solana上のSolidity — Solangとは?
概要
Solana向けのSolidityコンパイラであるSolangが今週発表されました。これにより、EthereumのSolidity開発者はSolanaへ移行しやすくなり、参入に必要な学習コストと時間を抑えられます。これまでは、Rust、C、またはPythonを使用する必要がありました。
Solana上でSolidityを利用できるSolangコンパイラをリリースする主な目的は、プログラムを作成するためにRustなどの言語を学ぶ必要があり、知識の差からSolanaでの開発をためらっていた経験豊富な開発者を呼び込むことです。
この記事では、以下について説明します。
- コンパイラとは?
- メリット
- Solanaプログラムへの影響
- はじめ方
コンパイラとは?
コンパイラとは、高水準のソースコードを、対象プラットフォームで実行できる低水準の表現へ変換するツールです。Solidityでは、SolidityコードをSolanaブロックチェーンと互換性のある形式に変換するためにSolangコンパイラが必要です。複数の処理段階を経て、コードをSolana上で実行できる最適化済みのマシンコードまたはバイトコードへ変換します。これにより、Solidity開発者はSolana上でスマートコントラクトを簡単かつ効率的に作成し、デプロイできます。
Solanaでプログラムを作成する際によく使用されるプログラミング言語はRustです。次の図は、RustとSolidityがどのようにコンパイルされ、Solanaブロックチェーン向けのプログラム命令になるかを詳しく示しています。
メリット
前述のとおり、Solana向けのSolidityコンパイラとしてSolangをリリースする主な目的は、プラットフォーム上でプログラムを作成するために必要なRustなどの言語の学習コストから、Solanaでの構築をためらっていた経験豊富な開発者を呼び込むことです。これにより、Solidity開発者は自身のスキルと知識をSolanaへ移行し、分散型アプリケーションを簡単に構築できる可能性が広がります。
Solanaプログラムへの影響
Solana向けのSolidityコンパイラとしてSolangが導入されたことで、開発プロセスが改善され、経験豊富なSolidity開発者がSolanaブロックチェーンの提供する機会を探求しやすくなります。
Solanaプログラムへの影響という点では、Solangによる大きな変更はありません。コンパイル処理では、高水準のSolidityソースコードをSolanaブロックチェーン上で実行できる低水準の表現へ変換します。これにより、異なる言語でプログラムを作成する開発者同士がSolana上で相互運用し、通信できます。
概要として、Solangは以下をサポートしています。
- Solanaライブラリ(SPL-Tokenとシステム命令)
- 組み込みインポート
Solanaライブラリ
Solanaライブラリは、SolangのGitHubリポジトリ内で2つのライブラリに分かれています。
- SPL-Token
- システム命令
1. SPL-Token
SPLのサポートにより、Solang Spl-Tokenライブラリを使用してSPLトークンの作成、ミント、バーン、転送ができます。SolangプログラムからSPLトークンを管理するための一連のツールを利用できます。
Solidityコードで使用するには、まずspl_token.solファイルをソースツリーにコピーします。
2. システム命令
システム命令を使用すると、アカウントの作成、転送、アカウントデータの割り当て、トランザクション手数料の支払いといった一般的な機能を利用できます。
SPLライブラリと同じ方法で、system_instruction.solファイルをソースツリーにコピーすると、Solidityコードで利用を開始できます。
組み込みインポート
Solanaプラットフォーム専用の組み込みインポートが用意されています。
これらを使うと、次のようなSolanaプログラムの機能を利用できます。
- AccountInfo
- AccountMeta
- プログラム派生アドレス(PDA)
1. AccountInfo
AccountInfoは、トランザクションに渡されたすべてのアカウントに関する情報を収集します。詳しくはこちらをご覧ください。
2. AccountMeta
クロスプログラム呼び出し(CPI)を行う際、AccountMetaを使用して渡すアカウントを指定できます。
3. PDA
PDAを使用すると、プログラム間で呼び出しを行う際に、署名をプログラムで作成して利用できます。
Solangでは、作成したコントラクトからプログラムアドレスによって生成されたPDAを作成および取得でき、アプリケーションのセキュリティを強化できます。
Solangで利用できるその他の組み込み機能はこちらで確認できます。
はじめる
SolanaドキュメントのこちらからSolangの学習を始められます。このガイドでは、Solangコンパイラを使用して最初のSolidity/Solanaプログラムを作成するAnchorプログラムのビルド手順を説明します。
このガイドは、最初の学習段階を進めながら、EthereumのスマートコントラクトとSolanaプログラムの違い、特にステートデータの扱い方を理解するのに役立ちます。これは、EthereumからSolana開発へ移行する際の最大の障壁です。
まとめ
Solangは、Solanaへの移行を検討しているEthereumのSolidity開発者にとって大きな進歩です。Solana向けのSolidityコンパイラとして機能することで、Solangはプラットフォーム開発に伴う学習コストを軽減し、経験豊富なSolidity開発者が既存のスキルと知識を活用できるようにします。このコンパイラは従来存在していたギャップを埋め、Solanaプログラムを作成するためにRustなどの言語を学ぶ必要があることから開発をためらっていた開発者を呼び込みます。
関連記事
Heliusを購読
Solana開発の最新情報や新しい記事の公開通知を受け取れます


