ブロックチェーン「Algorand」のノードを立ち上げてみました。一回つまづいてOSインストールからやり直しましたが、なんとかできました。コマンド入力でエラーが出たときも、Algorandのフォーラムに質問して適切な答えを得られました。
Algorandの公式ページはこちらです。
●ハイスペックなコンピュータでなくて良い(もちろんハイスペックであるほどブロックチェーン、ユーザには好影響)
●Python、JavaScriptといった普段使っているプログラミング言語でアプリが書ける。新たに言語を覚える必要がない
●ステーキングするにはウォレットに1ALGOあれば良く、資金のロックもない
●速い(1ブロック生成に約4.3~4.4秒)
●送金手数料が安い。KuCoin取引所だと手数料は0.1ALGOで10円程度。
ドスパラ(中古PC屋さん)で以前買っていた「Diginnos」というマシンが余っていたので、使いました。OSはLinuxのディストリビューションの一つ「Ubuntu」にしました。
CPU intel Core i5 4570
メモリ 8GB
ディスク HDD 500GB
OS Ubuntu 20.04.1LTS
sudo apt update
sudo apt upgrade
sudo apt-get install -y gnupg2 curl software-properties-common
curl -O https://releases.algorand.com/key.pub
sudo apt-key add key.pub
sudo add-apt-repository "deb [arch=amd64] https://releases.algorand.com/deb/ stable main"
sudo apt-get update
sudo apt-get install -y algorand-devtools
sudo apt-get install -y algorand
algod -v
sudo systemctl start algorand
goal node status -d /var/lib/algorand/
goal node status -d /var/lib/algorand/ を実行すると、ノードの状況が表示されます。ノードを起動すると、ブロックチェーンデータをダウンロードして同期する必要があります。これをキャッチアップといいます。
Last committed block: 4431453
Time since last block: 3.9s
Sync Time: 0.0s
Last consensus protocol: https://github.com/algorandfoundation/specs/tree/e5f565421d720c6f75cdd186f7098495caf9101f
Next consensus protocol: https://github.com/algorandfoundation/specs/tree/e5f565421d720c6f75cdd186f7098495caf9101f
Round for next consensus protocol: 4431454
Next consensus protocol supported: true
Last Catchpoint: 4430000#UAQPNY32LP3K5ARGFUQEFTBGELI5ZAQOMBGE7YL5ZFXL2MXWTO2A
Genesis ID: betanet-v1.0
Genesis hash: mFgazF+2uRS1tMiL9dsj01hJGySEmPN28B/TjjvpVW0=
Last committed blockがALGOエクスプローラの「LATEST BLOCK」と同じ値になり、Sync Timeが0.0sになるまで待ちます。LATEST BLOCKは、これを書いている時点で19,000,000を少し越えたところです。(4.4秒ごとに1上がります)
キャッチアップは、私の場合約二週間かかりました。おそらく、ハードディスクがボトルネックになっていたと思われます。
ALGOエクスプローラはこちら。誰でも見られます。
使用するディスク容量は、これを書いている時点で3GB程度です。たいしたことありませんね。
キャッチアップが終わったら、ウォレットを作ります。ここから先は、自分でもrootでもなく、ユーザalgorandとして実行します。ウォレットへのアクセスには、パスワードが必要になります。
※ウォレットの名前は適切な名前にしてください。私はHandaWalletとしました。
sudo -u algorand -E goal wallet new HandaWallet -d /var/lib/algorand/
sudo -u algorand -E goal wallet list -d /var/lib/algorand/
ウォレット内に自分のアカウントを作ります。まず、キーファイルを作ります。ここで表示されるニーモニック(暗号文)をメモします。
sudo -u algorand -E algokey generate -f spendingkeyfile
アカウントをインポートします。ニーモニックを聞かれるので、先ほどメモしておいたニーモニックを入力します。
sudo -u algorand -E goal account import -d /var/lib/algorand
sudo -u algorand -E goal account list -d /var/lib/algorand/
Please enter the password for wallet 'HandaWallet':
[offline] Unnamed-0 6ZD2RPQR5NAHVAIPDD6OTKV7G3HPDYRBV3MV3EURKPRUCS4Q72EJ4DF32Q 0 microAlgos *Default
ここで表示されたアドレス(上記だと6ZD...)が、あなたのALGOのアドレスになります。
これから、このノードをオンライン登録するのですが、オンライン登録するにはトランザクションの発行が必要です。ということは、今作ったウォレットにALGOが必要です。取引所でALGOを買い、上記アドレスに送金します。1トランザクションの発行には、手数料として0.001ALGO必要です。
取引所から送金したら、ウォレットに着金したか確認します。
sudo -u algorand -E goal account balance -a 6ZD2RPQR5NAHVAIPDD6OTKV7G3HPDYRBV3MV3EURKPRUCS4Q72EJ4DF32Q -d /var/lib/algorand
XXXX microAlgos
XXXXのところに送った金額が表示されます。
参加キーを作ります。goal node statusかALGOエクスプローラを見て、現在LATEST BLOCKがどこまで進んでいるのか把握します。仮に19000000だとすると、以下のコマンドのroundFirstValidには19000000より少しだけ大きい値(少しだけ未来とする)、roundLastValidには3000000を足した22000000を指定します。これは有効期間の範囲となります(計算式がありますが私も適当です)。既に到来した最終ブロック番号がこの範囲に入っているとだめなようです。
sudo -u algorand -E goal account addpartkey -a 6ZD2RPQR5NAHVAIPDD6OTKV7G3HPDYRBV3MV3EURKPRUCS4Q72EJ4DF32Q --roundFirstValid 19000100 --roundLastValid 22000000 -d /var/lib/algorand/
トランザクションファイルを作ります。
sudo -u algorand -E goal account changeonlinestatus -a 6ZD2RPQR5NAHVAIPDD6OTKV7G3HPDYRBV3MV3EURKPRUCS4Q72EJ4DF32Q -o=1 -t online.tx -d /var/lib/algorand
トランザクションファイルに署名します。
sudo -u algorand -E algokey sign -k spendingkeyfile -t online.tx -o online.tx.signed
トランザクションを送信します。
sudo -u algorand -E goal clerk rawsend -f online.tx.signed -d /var/lib/algorand
Raw transaction ID BTRZ4I3NH6RLB773CO6KFY6RE2LEGPWSSMKFH5KIU57WRPF2EGVQ issued
Transaction BTRZ4I3NH6RLB773CO6KFY6RE2LEGPWSSMKFH5KIU57WRPF2EGVQ still pending as of round 19000100
Transaction BTRZ4I3NH6RLB773CO6KFY6RE2LEGPWSSMKFH5KIU57WRPF2EGVQ committed in round 19000102
これで、アカウント一覧を表示したときに以下のように[online]になっていれば完了です!
sudo -u algorand -E goal account list -d /var/lib/algorand/
Please enter the password for wallet 'HandaWallet':
[online] Unnamed-0 6ZD2RPQR5NAHVAIPDD6OTKV7G3HPDYRBV3MV3EURKPRUCS4Q72EJ4DF32Q XXXX microAlgos *Default
私のノードをオンラインにしたので、ステーキングを始めました。およそ2000ALGOを取引所から送って3日経ちましたので、利率を求めてみます。
1月30日 2000099010 microAlgos 入金
1月31日 2000165010 microAlgos
2月1日 2000233010 microAlgos
2月2日 2000301010 microAlgos
これより、年利は1.23%程度です。現在の残高と総リワード数は、ALGOエクスプローラで確認することもできます。
ステーキング額が増えれば利率も上がります。FAQによると、100万ALGOのステーキングでは年利7%程度(ただし状況によって変化)とのことです。
AWSなどのクラウドのサーバでなくオンプレミスのパソコンをノードとしたので、いきなりパソコンが壊れないうちに次のパソコンに乗り換える必要があります。その際は、一旦ノードをオフライン登録してから作業せよとのことです。自室にノードを置いていますが、埃に気をつけたり足で蹴らないようにしなければなりませんね。
この次は、アプリの開発に挑戦します。
以上