コンテンツへスキップ
0%

SeahorseでPythonを使ってSolanaプログラムを書く方法

2022年11月4日 公開読了時間 1 分

Solanaは、グローバルな普及に向けてスケールするよう構築された、スマートコントラクト機能を備えた高性能ブロックチェーンネットワークです。Solanaは平均で秒間3,000件のトランザクションを処理し、最速のブロックチェーンプロトコルの1つです。Solana Programsは、Solanaブロックチェーンネットワーク上に書かれたスマートコントラクトであり、トークン転送、NFTのミント、オンチェーンでの投票など、あらゆるアクティビティの実行に使用されます。

この記事では、ローカル開発環境およびオンラインIDEから、Seahorse開発フレームワークを使ってPythonでSolana Programsを書く方法を説明します。

Solana上でプログラムを開発する主な方法とは?

Solana Programsを開発するには、Rustを習得するか、Anchor開発フレームワークで構築するか、あるいはSolana向けのpythonicな開発フレームワークであるSeahorseを使用する必要があります。

RustはSolanaが構築されているプログラミング言語であり、SolanaのSealevel Runtimeとやり取りするために使用できるデフォルトのweb3プログラミング言語です。

Anchorを使ったSolana開発

Anchorは、平均的なユーザーからRust言語の複雑さを抽象化することで、Solanaアプリケーション開発を容易にするために使用されるフレームワークです。

Anchorは、Solana開発者にInterface Definition Language(IDL)、IDLからクライアントを生成するTypescriptパッケージ、Rustクレート、Command Line Interface(CLI)などのツールを提供します。

Seahorseを使ったSolana開発

Seahorseはコミュニティ主導のSolana開発フレームワークであり、開発者がPythonプログラミング言語でSolanaプログラムを書けるようにします。

Seahorseでは、Pythonで書かれたすべてのプログラムに、Rustプログラムと同じ安全性の仕組みが備わります。SeahorseはAnchorと完全な互換性があり、Rustコードとも相互運用可能です。

Pythonはウェブアプリケーションや機械学習プロジェクトの日常的なプログラミングで使用されており、最も人気のあるプログラミング言語です。

ブロックチェーンベースのアプリケーション構築に関心を持つ開発者の多くはすでにPythonのプログラミングスキルを持っている可能性があるため、新しいプログラミング言語(Rust)を学ぶことなく、Seahorseを使ってSolanaアプリケーションを構築できます。

ローカルのSolana開発環境でSeahorseを使う方法

Solana Playgroundのようなプラットフォームは、アプリケーションを素早く構築・テストするためのものであり、大規模なアプリの作成には依存すべきではありません。ローカルワークスペースでSeahorseを使った開発に必要な環境を構築するために、以下をインストールしていきます。

  1. Rust
  2. The Solana Tool Suite
  3. Node
  4. Anchor
  5. Seahorse

1. 必須のSolana開発ツールをインストールする

Rust、Solana Tool Suite、Node、Anchorをインストールするには、ローカルのSolana開発環境をセットアップするこのチュートリアルを参照してください。

Linuxベースのマシンを使用している場合、追加の依存関係を加えるために以下のコマンドを実行する必要があるかもしれません。

2. Seahorseをインストールする

Seahorseが正しく動作するには、_Anchor_と_Rustfmt_が必要です。Anchorはすでにマシン上で動作しているはずなので、_Rustfmt_パッケージと_Anchor_のインストールは簡単です。

Rustfmtパッケージを追加するには、以下のコマンドを実行します。

Seahorseをインストールするには、ターミナルで以下のコマンドを実行します。

最後に、Seahorseが正しくインストールされたか確認するために次のコマンドを実行します。

3. ペーパーウォレットを生成する

すでにSolana Command Line Toolsをインストールしているので、ローカルで作業する際に使用するローカルの「ペーパー」ウォレットを作成できます。

Solana CLIツールがインストールされていることを確認するには、以下のコマンドを実行します。

次に、新しいキーペアを生成するには、次のコマンドを入力します。

詳細を適切に保存しておき、ローカル環境で使用できるようにしてください。

ペーパーウォレットに資金を入れるには:

solana airdrop 2コマンドを実行して、テスト用のSOLトークンを2つ取得します

ローカルで実行する代わりにオンライン開発環境でSeahorseをテストしたい場合、Solana Playgroundが良い選択肢です。

Solana PlaygroundでSeahorseをセットアップする方法

Solana Playgroundは、Solanaアプリケーション開発をすぐに始められるように作られたオンラインの統合開発環境です。

Solana Playgroundは、以下のプリビルドされたCrateを提供しています。

  1. Native(Rust) - フレームワークを使わずにSolana上で構築したい開発者向け
  2. Anchor(Rust) - 追加のツールとともにRustでSolana上に構築したい開発者向け
  3. Seahorse(Python) - Pythonでのプログラミング経験があるSolana開発者向け
開発フレームワーク(Native、Anchor、Seahorse)を選択するためのSolana Playground選択画面
開発フレームワーク(Native、Anchor、Seahorse)を選択するためのSolana Playground選択画面

1. 新しいSolana Playgroundプロジェクトを作成する

Solana Playground上でディレクトリ名を指定して新しいプロジェクトを作成します。名前を付けた後、_FizzBuzz_という名前のデモプロジェクトが表示されます。このミニdappを、本チュートリアルの中で使用します。

2. Playgroundウォレットを作成する

Seahorseプログラムとやり取りするために、まずPlayground Walletを生成する必要があります。Playground Walletは、アプリケーションのテストウォレットとして機能します。

  • 「playground wallet」をクリックします
  • 新しいウォレットを選択します
  • 手順に従い、JSONファイルをダウンロードします
新しいPlayground Walletを作成するためのSolana Playgroundインターフェース
新しいPlayground Walletを作成するためのSolana Playgroundインターフェース

3. テスト用のSOLトークンを取得する

devnetのSOLトークンを取得するには、Playgroundのターミナルで以下のコマンドを入力します。

$ connect

connectコマンドは、テストウォレットとプロジェクトを紐付けます。

$ solana address

solana addressコマンドは、あなたのSolanaウォレットアドレスを出力します。このアドレスは、後でFizzBuzzアプリを起動する際に使用します。

$ solana airdrop 2

solana airdropコマンドは、「Build」や「Deploy」などのトランザクションを実行するために必要な手数料をまかなうため、テスト用のSOLトークンをウォレットに入金します。

Solana PlaygroundのFizzBuzz Seahorse dappプロジェクトファイル
Solana PlaygroundのFizzBuzz Seahorse dappプロジェクトファイル

SeahorseのPythonコンポーネントの仕組み

このセクションでは、シンプルで人気のあるFizzBuzzアプリをオンチェーンで作成する手順を見ていきます。コード内には3つの主要なセクションがあります。

  1. The Account
  2. Instruction 1
  3. Instruction 2

1. Account

Executable Accountsは、Solanaブロックチェーン上で実行される実行コード(スマートコントラクト)を定義するために使用されます。Accountsの定義では、Solanaプログラムに必要なデータ型を割り当てることができます。

FizzBuzzはブール型として定義され、「n」変数は符号なし整数型です。

2. Instruction 1

Built-In Accountsと呼ばれる別の種類のアカウントもあります。これらの組み込みアカウントの多くは、オンチェーンでの特定のインストラクションの呼び出しに使用されます。

A. Signerアカウント

署名者を必要とするインストラクションには、ウォレットの承認が必要です。_Signer_とは、コードのこの部分で定義されたインストラクション呼び出しでトランザクションに署名するウォレットのことです。

ownerキーワードは、Signerの詳細情報の値を保持するために使用されます。Signerの公開鍵を取得するには、以下のコードを追加します。

B. 空のアカウント

空のアカウントタイプは、最初は空であっても、メインAccount(FizzBuzz)のクラスを初期化するために使用されます。

_Empty_キーワードを使用することで、メインAccountで定義されたクラスを構築できます。FizzBuzzアカウントが初期化されると、作成手数料はOwner(すなわちトランザクションの署名者)によって支払われます。

一度そのアカウントがオンチェーンで作成されると、同じOwnerが再度呼び出しても再作成することはできません。初期化から生成されたシードによって、元のアカウントを特定できます。

3. Instruction 2

2つ目のインストラクション呼び出しでは、すでに作成されたアカウントとその値を使用します。

FizzBuzzの完全なコードサンプルは以下の通りです。

SeahorseでPythonを使ったSolanaアプリケーションの構築を始めよう

Seahorseはコミュニティ主導のオープンソースプロジェクトであり、完全に無料で公開利用できます。Seahorseは現在ベータ版であり、多くの機能はまだ実装されていません。本番環境向けではありませんが、Solanaのdevnet上でアプリケーションを実験・開発するために使用できます。

Seahorseを使えば、Pythonを使ったSolana上での構築が可能でシンプルになります。あなたがPythonのweb3開発を学びたい開発者であれば、Solana PlaygroundでSeahorseを試してみることは、Anchor、Rust、Solanaプログラムのスキルを身につけ始めるための、安全で楽しい方法です。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。