電通総研 テックブログ

電通総研が運営する技術ブログ

Web3開発入門 with Algorand-アカウント

電通国際情報サービス、オープンイノベーションラボの比嘉康雄です。

Web3開発入門シリーズ with Algorand(アルゴランド)、今回のテーマは、アカウントです。

Ethereumの開発入門記事として、以前にGethはじめましたスマートコントラクト入門を書いていたのですが、EthereumからAlgorandに興味が移ってしまったということもあり、今後は、Algorandの技術記事を書いていきたいと思います。

Algorand開発者ポータル

Algorandは、日本では知らない人が多いと思いますが、TPS(Transaction per second)は6000、Finality(Transactionが確定するまでの時間)は3.8秒、取引手数料が1件あたり0.05円とかなり優秀なチェーンです。

また、スマートコントラクトをPythonで記述できるので、Google Colabを使ってブラウザでほとんどの機能が試せるのも大きな魅力です。

今回の記事のGoogle Colab用のノートブックはこちらになります。ブラウザだけでブロックチェーンに対するコードを、実際に動かしながら試せるので、おすすめです。

Web3開発入門 with Algorandの全てのコンテンツ

アカウントとは

アカウントは、アドレスと秘密キーでできています。

アドレスは、3ZY7ST5EXOHBN7Y5VGMICALT6IGE44QRZULGPO7PRWVNMM7KQNWRBWTS64のような58文字のIDです。 だれかにALGO(Algorandのネイティブな暗号資産)を送るときには、送り先として誰かのアドレスを指定します。 誰にでも公開して構いません。

秘密キーは、あなたが確かにそのアカウントの所有者であることを証明するために使います。 秘密キーを知っている == そのアカウントの所有者であるなので、秘密キーは誰にも知られてはいけません。

秘密キーは、ニーモニックと言われる英単語の集まりから、再作成できます。Algorandの場合、ニーモニックは25単語です。

py-algorand-sdkのインストール

Algorandの機能を使うには、py-algorand-sdkをインストールする必要があります。

下記のコードを実行してください。

!pip3 install py-algorand-sdk

アカウントの作成

アカウントを作成するには、generate_account()を呼び出します。

下記のコードを実行してください。

from algosdk import account

private_key, address = account.generate_account()
print("Address:", address)
print("Private Key:", private_key)

出力結果の例です。

Address: TP67T7UHMQ55F7PQ7KZK6HY6O3J37YEB6PXLTOXCJNCJQD3QQ2ZODCTNXE
Private Key: gSD3T1pgXn27Omq5gZQnWxwl6GOEYvr48KxSd+hz+OOb/fn+h2Q70v3w+rKvHx5207/ggfPuubriS0SYD3CGsg==

generate_account()を呼びだすと、private_key(秘密キー)とaddress(アドレス)が返ってくることがわかります。

ニーモニック

秘密キーは、ニーモニックと言われる英単語の集まりに変換できます。秘密キーをニーモニックに変換するには、from_private_key()を呼び出します。

下記のコードを実行してください。

from algosdk import mnemonic

mn = mnemonic.from_private_key(private_key)
print("Mnemonic:", mn)
print("The length of mnemonic:", len(mn.split(" ")))

出力結果の例です。

Mnemonic: awake symptom child aisle rubber tent still health damp faith need shield enforce wheel cart glad butter sentence filter inside special brother cabin abstract thunder
The length of mnemonic: 25

秘密キーが25単語からなるニーモニックに変換されていますね。

mn.split(" ")で、ニーモニックをブランク区切りで分割しています。 len()で分割したニーモニックの個数を数えています。

ニーモニックを秘密キーに変換するには、to_private_key()を呼び出します。

下記のコードを実行してください。

print("Private Key:", mnemonic.to_private_key(mn))

出力結果の例です。

Private Key: gSD3T1pgXn27Omq5gZQnWxwl6GOEYvr48KxSd+hz+OOb/fn+h2Q70v3w+rKvHx5207/ggfPuubriS0SYD3CGsg==

generate_account()で作った秘密キーと同じですね。

まとめ

記念すべきWeb3開発入門 with Algorand第一回。今回は、アカウントについて説明しました。

次回は、TestNetでALGOをゲットです。

仲間募集

私たちは同じグループで共に働いていただける仲間を募集しています。
現在、以下のような職種を募集しています。

執筆:@higa、レビュー:Ishizawa Kento (@kent)Shodoで執筆されました