ブロックチェーン開発を学ぶ:アルゴランドで初めてのDAppを構築する方法
分散型アプリケーション(dApps)は、ブロックチェーン技術を使って構築された最もエキサイティングなイノベーションの一つであることは間違いありません。しかし、最初のdAppを構築することは、選択できるブロックチェーンやプログラミング言語の数を考えると、厄介なことです。幸いなことに、アルゴランドでは、ブロックチェーン初心者を歓迎する開発者向けの環境で、誰でもブロックチェーン・アプリケーションを構築することができます。
この記事を読んで、アルゴランドで最初のDAppをコーディングしてデプロイすることで、ブロックチェーン開発を学びましょう。
アルゴランド:初心者に優しいブロックチェーン・エコシステム
アルゴランドは設立当初からユーザー・エクスペリエンスを重視し、スマートコントラクトの構築や新しいアセットの作成に最適なツールをユーザーや開発者に提供しています。
MIT教授のシルビオ・ミカリ(Silvio Micali)が設立したこのブロックチェーンは、Reachと呼ばれるプログラミング言語のおかげで、dAppの構築プロセスをより身近なものにしています。このブロックチェーン開発プラットフォームは、昨年アルゴランド財団の支援を受け、1セットのソースコードで複数のブロックチェーン用のdAppを構築する、最も簡単なdAppプログラミング言語の構築に成功しました。
2021年5月、Reachはブロックチェーン開発を簡素化し、次世代のdAppsの可能性を拡大するために、1,200万ドルを調達しました。
さらにアルゴランドは、有用なチュートリアルやドキュメントを含む専用の開発者向けページを提供することで、ブロックチェーン開発の学習を支援しています。
アルゴランドでdAppsを構築するには様々なアプローチがありますが、この記事ではReachを使って始めることに焦点を当てます。Reachの大きな利点の1つは検証(verification)です。Reachは、ソリューションのコンパイル時および実行時の検証を通じてdAppsの検証を行います。詳細については、「Using Loop invariants for Verification in Reach」のチュートリアルの冒頭の段落を参照してください。
Reachを使ってdAppsを構築するには?
アルゴランドdAppsを構築するために、ユーザーはReachを利用することができます。ReachはJavaScriptに似ているため、簡単に学ぶことができます。この言語は、ステートマシンの低レベルのロジックではなく、ユーザーの視点からモデル化されています。
Reachで構築する前に、ReachはDocker、make、Docker ComposeがインストールされたPOSIXシステム上で動作するように設計されていることを知っておく必要があります。WindowsやMacにDockerをインストールするには、Docker Desktopを使います。makeについては、Linuxのバージョンによってはデフォルトで含まれていないものもありますが、おそらくインストールされているでしょう。
すべてがインストールされていることを確認するには、以下の3つのコマンドをエラーなしで実行することができます。
$ make -version
$ docker -version
$ docker-compose --version
WindowsでReachを使用している場合は、このガイドを参考にしてください。
インストール後、このプロジェクトのためのディレクトリを選択します。以下を使用することをお勧めします。
$ mkdir -p ~/reach/AlgoReach && cd ~/reach/AlgoReach
次に、以下を実行してReachプログラムをダウンロードします。
$ curl https://docs.reach.sh/reach -o reach ; chmod +x reach
ダウンロードが成功したことを確認するには、次のコマンドを実行します。
.reachバージョン
さて、テキストエディタを開いて、Reachを使って最初のdAppを書く準備をしましょう。VS Codeをお使いの場合は、Reach Extensionがあります。
アルゴランドで初めてのdAppを構築
次の短いdAppチュートリアルでは、AliceとBobという2人のプレイヤーがゲームの結果を賭けることができるTic, Tac, Toeのバージョンを見てみます。
このようなシンプルなゲームは、誰もが直感的に理解できるので、ゲームのルールではなく、プログラミングのプロセスに注目するには最適です。
まず、index.rshというファイルを作成します。このファイルはどこに置いても構いませんが、カレント・ディレクトリに置くことをお勧めします。ここでは、~/reach/AlgoReachとします。
Tic Tac Toe dAppのサンプルコードは、ビデオ・チュートリアルでご覧いただけます。
ご覧のように、構文はJavaScriptとほぼ同じなので、開発プロセスがより身近なものになります。
では、AliceとBobの間で何らかのやりとりが行われるReachプログラムの主なコンポーネントを定義してみましょう。Reachが提供するこのdAppの例では、Aliceはいくつかの情報を持っており、トークンの数と引き換えにBobに送ることができます。
バックエンド・プログラムの例はこちら、フロントエンドの例はこちらで確認できます。フロントエンドは、ReachのRPC(Remote Procedure Call)機能を使って、JavaScript、Go、Python、C#などの多くの言語で書くこともできますが、ここではメインの部分だけを見てみましょう。
この例では
1行目は、これがReachのプログラムであることを示しています。すべてのプログラムの先頭にこれがあります。
2行目は、このプログラムがストリクト・モードでコンパイルされていることを示しています。このモードでは、現在のスコープ内で後続のすべての宣言に対して未使用の変数のチェックが行われます。宣言されたものの一度も使われていない変数があると、コンパイル時にエラーが発せられます。
4行目では、このプログラムのmain exportを定義しています。mainはReachが使用するデフォルトです。コンパイル時には、これを見てコンパイラが判断します。
また、4行目はアプリケーションであることを示しています。
5行目では、プログラム識別子AがAlice参加者を表すことを指定している。
6行目と7行目は、Aliceの参加者とフロントエンドの間のインターフェースを指定しています。この例では、Aliceのフロントエンドは、requestという数字と、infoという文字列を提供しなければなりません。
9行目では、プログラム識別子BがBob参加者を表すことを指定しています。
10行目と11行目では、Bobのインターフェースを指定しています。このインターフェースには、数値を受け取ってnullを返すwantという関数と、情報を受け取るgotという関数が含まれています。
13行目では、実際にdAppを展開し、プログラムが動作を開始できるようにしています。
Reachでは、アルゴランドでも実装可能なRock, Paper, Scissors!ゲーム(じゃんけん)の完全なdAppの例を紹介しています。
今回のTic Tac Toeアプリケーションについては、バックエンド・プログラムのロジックは以下のようになり、サンプル・プログラムのフロントエンドのサンプルはこちらにあります。
dAppでは、あらかじめ決められたルールに基づいて、ゲームの結果に賭ける2人の異なるプレイヤーがいます。プログラムの各参加者の行動を定義する必要があります。
例えば、金融アプリケーションを例にとると、貸し手と借り手がいるローン・アプリケーションの各参加者の行動を定義することができます。次に、プログラムのステップを定義します。
プレイヤー間のインタラクションを反映してコードを形成する方法についての詳細は、Reachを使ってアルゴランド上でdAppsを構築することに焦点を当てたDeveloper Office Hoursのセッションを自由にご覧ください。
アルゴランドでは、ブロックチェーン開発を簡単に学ぶことができ、実際のユースケースに対応したdAppsを作成することができます。ニュースレターに登録して、アルゴランドの詳細を知り、ブロックチェーン革命に参加してみませんか?
元記事:https://www.algorand.com/resources/blog/blockchain-development-build-your-first-dapp-algorand
Comments