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

AnchorとAnchor Program Registryとは

執筆者 Pari

2023年1月26日 公開読了時間 2 分

Anchorは、Solana上で安全でセキュアかつ効率的な高水準プログラムを書くための、主要なSolana開発フレームワークです。Anchorにおけるプログラムとは、Solanaブロックチェーン上のスマートコントラクトであり、ユーザーがSolanaブロックチェーンにデータをアンカリングできるようにするものです。Solanaの巨大な開発者コミュニティにより、Solana上で検証済みのプログラムはAnchor Program Registryにホストされ、簡単にアクセスできるようになっています。

この記事では、最も重要なSolana開発者向けツールの一つであるAnchorと、Solana上での開発のためのAnchor Program Registryの使い方を理解する手助けをします。また、Anchorと、Solanaと連携するためのPythonベースの開発フレームワークであるSeahorseとの比較も行います。

Solanaのアカウントモデルとは?

開発者がSolanaブロックチェーン上で構築するものはすべてプログラムとアカウントに関わり、これらがブロックチェーン上で実行され、データを保存します。Solanaには以下のような異なるアカウントカテゴリがあります。

  • データアカウント - データを保存する
  • プログラムアカウント - 実行可能なプログラムを保存する
  • ネイティブアカウント - Solana上のネイティブプログラムを示す

そして、すべてのアカウントは一連の情報を保存します。

  • lamports - アカウントが所有するlamportsの数
  • owner - アカウントのプログラムオーナー
  • executable - アカウントが命令を処理できるかどうかを確認する
  • data - アカウントが保存する生のデータバイト配列
  • rent_epoch - アカウントがレンタル料を支払う次のエポック

Anchorとは?

Anchorは、Solana上で安全でセキュアかつ高水準のプログラムを書くために使われるフレームワークで、アカウントの低レベルな構築やSolanaプログラムへのインターフェースの変更を抽象化します。

フレームワークは基盤として機能するため、ユーザーはゼロから不要なロジックを作成する必要がなく、冗長なコードを避け、クリーンでセキュアなプログラムを書く助けとなります。具体的には、Anchorはボイラープレートを通じてデシリアライズされたアカウントと命令データ、コマンドラインインターフェース(CLI)、そしてSolanaアプリを開発するためのワークスペースを提供します。

Anchorはどのように機能するか?

Anchorはマクロとトレイトを使用して、開発者向けのボイラープレートRustコードを生成します。すべてのAnchorプログラムは3つのコンポーネントで構成されます。

  1. declare_id - プログラムのオンチェーンアドレスを宣言するために使われるマクロ
  2. #[program] - プログラムの命令ロジックを含むモジュールを示すために使われる属性マクロ
  3. #[account] - プログラムのカスタムアカウント型を定義するために使われる属性マクロ

Anchorプログラムの基本的な構造は次の通りです。

Anchorプログラムの基本的な構造
Anchorプログラムの基本的な構造

1. デフォルトのキーペアを作成する

Anchorプログラムを初めてビルドすると、プログラムをデプロイするためのデフォルトキーペアとなる新しいキーペアが生成されます。

この公開鍵は、declare_id!マクロで指定されるprogramIDとして使用されるべきです。

2. プログラムに命令を与える

その後、#[program]属性を使ってプログラムに個別に命令を与えることができます。各命令関数はContext型のパラメータを必要とし、命令データを表す追加のパラメータを任意で含めることができます。Anchorは命令データのデシリアライズを自動的に処理するため、ユーザーは命令データをRustの型として扱うことができます。

3. アカウントデシリアライザを実装する

_#[derive(Accounts)]_は、指定されたstructにAccountデシリアライザを実装し、各アカウントを手動でデシリアライズする必要をなくします。これは、すべての必要な制約チェックを実行し、プログラムが安全に動作するために必要な条件をアカウントが満たしていることを保証する役割を担います。

4. initialize関数を呼び出す

Initialize関数が呼び出されると、プログラムは以下を行います。

  • 命令に渡されたアカウントが、Initialize structで指定されたアカウント型と一致することを確認する
  • 指定された追加の制約に対してアカウントを確認する

これがAnchorプログラムの動作の仕組みであり、Anchorプログラムの構築を始めるための基本です。Anchorプログラムについてさらに知りたい場合は、公式ドキュメントを確認することを強くお勧めします。

Anchor Program Registry(APR)とは?

Anchor Program Registry(APR)は、Solanaブロックチェーン上に登録されたAnchorプログラムのディレクトリであり、ユーザーがそれらを簡単に見つけてアクセスできるようにします。APRは、Anchorプログラムがブロックチェーン上で登録・認証されていることを保証します。

Anchor Program Registryには、作業を楽にするための数多くのプログラムがあります。いくつか例を見てみましょう。

  • token_signer - Solanaの鍵管理とセキュリティのための一連のプログラムを提供する。
  • spl_governance - Sealevelパラレルランタイムを対象とするオンチェーンプログラムのコレクション。
  • crate_token - 誰でもトークン化された資産のバスケットを作成、管理、取引できるようにする。

Solana開発者はAnchor Program Registryをどのように使うか?

Solana開発者は、Solanaブロックチェーン上の検証済みプログラムにアクセスするためにAnchor Program Registryを使用します。Anchor Program Registryは検証済みプログラムのソースコードをカタログ化しており、開発者は動作するコードのリポジトリにアクセスできます。

Anchor Program Registryを使用するには、以下の流れに従うことができます。

  1. Anchorプログラムのアドレスにアクセスする
  2. ウォレットを接続する
  3. UIにアクセスする
  4. トランザクションに署名し、送信して命令を実行する

APRのインターフェースは、Anchorプログラムがサポートする命令の一覧と、特定の命令の入力を設定するために使用できるフォームフィールドを提供します。

Seahorseとは?

Seahorseは、Anchorと同様のSolana開発フレームワークですが、Python開発者向けに構築されています。Seahorseは、Solanaブロックチェーン上でプログラムとアカウントを構築、デプロイ、操作するための一連のツールを提供します。JavaScript、Rust、Pythonなど異なるプログラミング言語をサポートしており、新しい開発者向けのリソースとドキュメントも完備しています。

Anchor vs. Seahorse

Feature
Seahorse
Anchor

Programming languages supported

JavaScript, Rust, Python

JavaScript, TypeScript

Focus

Flexibility and scalability

User experience and ease of use

Tools and feature

Smart contract development

Decentralized Application Development

Local development environment

Testnet for running simulations

Documentation and resources

Anchorを学ぶためのリソース

Anchorフレームワークについて学ぶために利用できるリソースがいくつかあります。

  1. Anchor Docs - 最も関連性が高く最新の情報を見つける
  2. Soldev - サンプルコードとともにAnchorでスマートコントラクトの開発を始める
  3. Sol Playground - オンラインIDEを使ってAnchorでプログラムの開発を始める

Anchorフレームワークについて学び、独自の分散型アプリケーションの構築を始めるための豊富なリソースが用意されています。

AnchorとAlchemyで開発を始める

Anchorフレームワークは、**信頼性が高くセキュアなSolanaプログラム(スマートコントラクト)**を構築するための価値あるツールです。さらに、Anchor Program Registryは、Solanaブロックチェーン上の検証済みプログラムのディレクトリであり、より良い相互運用性を実現するための重要なリソースです。

Anchorフレームワークの汎用性とスケーラビリティは、Solana開発者にとって魅力的な選択肢となっています。Solana開発の旅を始める準備ができたなら、今すぐ無料のSolana RPCアカウントにサインアップしましょう。

Background gradient

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

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