CENNZnet.ioの上級者向けガイド
CENNZnet.ioは、CENNZnetのブロックチェーンネットワークと対話できるウェブポータルとウォレットです。 このガイドでは、Webポータルの「詳細設定」セクションにあるツールを中心に説明します。 これらのツールは、CENNZnetで構築するDApp開発者にとって最も有用です。
このセクションをご覧になる前に、CENNZnet.ioの基本的な機能をご理解いただくことをお勧めします。こちらのCENNZnet.ioのガイドをご確認ください。
この記事では、cennznet.ioの「詳細設定」で利用できる機能をご紹介します。 以下を見ていきたいと思います。
· Development notes: ガス手数料の説明と、開発ノードへの接続について。
· Chain state: チェーンからのデータの読み込み(ストレージアイテム、定数、rawストレージなど)。
· Extrinsics: チェーン上のデータを修正するためのトランザクションを送信します。
· Sudo: スーパーユーザーのアクセスを必要とするトランザクションを送信します。開発用ノードでのみ利用可能です。
· Settings: cennznet.ioの設定
· Tool box: 開発者向けの追加ヘルパー機能
· JavaScript: CENNZnet JavaScript APIをコード例で試すことができます。
· Wiki: Githubで公開されているCENNZnetのテクニカルドキュメントへのリンクです。
始める前に: Development notes
cennznet.ioのAdvancedエリアの各ページを見ていく前に、開発者にとって注意すべき点は「ガス手数料」と「開発ノードへの接続」の2つです。
1. ガス手数料
ブロックチェーン上で操作を要求すると、必要な計算のために手数料が発生することがあります。 この費用をガス手数料といいます。
CENNZnetでは、ストレージからのデータの読み込みは無料ですが、ストレージへの書き込みは有料です。 CENNZnetでは、デュアルトークンエコノミーの一環として、ガス手数料はCPAYで支払われます。このシステムの仕組みについては、こちらで詳しく説明しています。
開発時のガス手数料の支払いを避けるために、開発用ノードを使用することができます。 開発用ノードの設定方法は、次の「開発用ノードへの接続」に記載されています。
2. 開発ノードへの接続
開発ノードには、数十億のCENNZとCPAYを所有するテストアカウントが付属しています。 これにより、リアルマネーを支払うことなく、DAppsをテストすることができます。
デフォルトでは、cennznet.ioは、Azaleaと呼ばれるCENNZnetのプロダクションブロックチェーンであるMainNetに接続します。 開発用ノードを使用するには、以下の手順でノードに接続する必要があります。
1. 開発ノードの開始
· Dockerをインストール
· dockerコマンドで開発用ノードを実行します。
docker run -p 9944:9944 -it --rm cennznet/cennznet:1.2.2 --dev --ws-external
2. cennznet.ioをローカルの開発ノードに接続する
· Advanced -> Settingsを選択します。
· 最初のドロップダウンメニューから “Local Node “を選択します。
· “Save & Reload”をクリックします。
Chain state
Chain stateページでは、RPC(Remote Procedure Call)を使ってチェーンからデータを読み取ることができます。 chain stateページでの操作は、ガス手数料が無料です。
照会できるチェーン状態には3種類あり、画面上部のタブで確認できます。
1. Storage: ランタイムモジュールに定義されているランタイムストレージアイテムを問い合わせます。
2. Constants: ランタイムモジュールで定義されている定数変数を問い合わせます。
3. Raw storage: ブロックチェーンの永続的なキー・バリュー・データ・ストアから直接参照することができます。
Storage
Storageタブでは、ドロップダウンメニューからクエリと必要に応じてパラメータを選択し、画面右側の青い「+」ボタンをクリックすることで、ストレージの更新情報を閲覧することができます。
+ボタンをクリックすると、ドロップダウンメニューの下にエントリーが表示されます。この項目では、照会した値がリアルタイムで更新されています。
好きなだけアイテムを参照することができます。 停止、またはアイテムを削除するには、希望するクエリの横にあるオレンジ色の「x」ボタンをクリックしてください。
ユースケースの例
ストレージクエリ機能の使用例としては、CharlieのCENNZの残高を確認することが考えられます。
· genericAsset and freeBalanceを選択します。
· AssetIdには “16000 “と入力します。これは開発チェーンのCENNZのAssetIDです。
· AccountIdにFERDIEを選択します。
· +ボタンを押します。
注:あるタイプのトークンのAssetIDを取得するには、RPCメソッドgenericAsset.registeredAssetsを使用してください。 RPCメソッドの使用方法については、本記事の「RPCコール」の項を参照してください。
ストレージ方法の参考
利用可能なストレージ方法については、GitHubページのこちらを参照してください。
Constants
このタブは、Storageと全く同じように動作します。唯一の違いは、「Storage」タブで検索した値はチェーン上の変化に応じて更新されるのに対し、「constants」ページで検索した値はチェーン上で何が起こっても常に同じであるということです。
Raw storage
CENNZnetは、データベースに裏打ちされたMerkleツリーとして実装されたブロックチェーンの永続的なストレージであるkey-valueデータストアを持っています。 これにより、ブロックチェーンへの高速なデータの挿入と検索が可能になります。 Raw storageタブでは、データストアに直接クエリをかけることができます。
Storageタブで公開されるRuntime Storageは、このKey-Valueデータストアの上にある抽象化されたレイヤーです。 一般的には、「Storage」と「Constants」タブで、DApp開発者としての日常的なニーズを満たすことができます。Raw storageタブは、例えばランタイムモジュールが削除されたときなど、APIから消えたアイテムのキーを知っていても、チェーンに保存されたデータが残っているようなエッジケースで有用になることがあります。
raw storageについての詳細はこちらをご覧ください。
Extrinsics (CENNZnetでアカウントを作成すると表示されます。)
外部データとは、ブロック内に搭載されているデータのうち、ブロックチェーンの外部にあるものを指し、ブロックチェーンの機能をサポートするために使用されないことを意味します。 外部メソッドは、外部データを変更するランタイムで呼び出し可能なメソッドです。
Extrinsics ページでは、CENNZnet のランタイムモジュールのすべての外部メソッドを公開しています。 これにより、チェーン上のデータを変更するために、トランザクションを送信することができます。トランザクションの送信にはガス手数料がかかります。
外部メソッドを呼び出すには、まず、呼び出しに使用するアカウント、呼び出したいモジュールとメソッドを選択し、必要に応じてパラメータを指定します。
注:このページで利用可能なメソッドの中には、呼び出し元のアカウントの権限制限があるものがあります。例えば、rewards -> setInflationRateは、sudo権限がないと呼び出すことはできません。
外部メソッドのリファレンス
潜在的な外部メソッドについては、リンク先のGitHubページのこちらを参照してください。
Sudo (開発ノードでのみ利用可能)
Sudoのページでは、extrinsicsと同じメソッドが公開されています。 しかし、このページからメソッドを呼び出すと、スーパーユーザーとして操作することになり、より多くの権限を持つことになります。
注:このツールは高度なもので、カスタムチェーンを開発する場合にのみ必要となります。これにより、ランタイムのアップグレードなど、チェーンに対するアクションを実行することができます。
Settings
設定画面には2つのタブがあります。
· General: cennznet.ioの設定にアクセスできます。
· Developer: カスタムチェーンを操作するための高度なツールです。 これにより、cennznet.ioに対して追加のタイプを公開することができ、cennznet.ioはこれらの型をエンコードおよびデコードすることができるようになります。
詳しい説明は、「?」ボタンをクリックすると表示されるヘルプメニューにあります。
Toolbox
Toolboxページには、以下のようなヘルプ機能があります。
· RPC calls: CENNZnet APIで公開されているすべてのRPCコールにアクセスできます。
· Hash data: 指定されたテキストのBlake2ハッシュを取得します。
· Sign message: あなたのアカウントのいずれかによって署名された供給されたデータの署名を取得できます。
· Verify signature: 与えられたデータとアカウントに対する署名があるかどうかを検証します。
RPC calls
RPCコールでは、ノードへの問い合わせや、チェーン情報の送信・取得などの操作を行うことができます。 一部のRPCコールでは、ノードオペレータが簡単な管理作業を行うこともできます。
また、保留中のトランザクションやクライアントのバージョンなど、ノード固有の情報を読むこともできます。 また、CENNZXの売買価格など、ノードでの計算が必要な値を取得することもできます。
使用例
アセットIDの取得
· genericAssetとregisteredAssetsを選択します。
· Submit RPC callを選択します。
· 返されたkey-valueペアのキーとしてAssetIDが表示されます。
RPCメソッドのリファレンス
潜在的なRPCメソッドの詳細については、リンク先のGitHubページのこちらを参照してください。
Hash data
ハッシュデータとは、与えられたテキストのBlake2bハッシュを得るための暗号ユーティリティです。 Blake2bは、CENNZnetで使用されている非常に高速な暗号化ハッシュ関数です。
Sign message
このタブでは、自分が所有しているアカウントを使って、指定されたデータセットの署名を生成することができます。
Verify signature
このタブでは、メッセージがあるアカウントによって署名されているかどうかを確認できます。 例えば、トランザクションの署名がアカウントによって署名されているかどうかを確認することができます。
アドレス帳からアカウントを選択するか、最初のドロップダウンメニューにアドレスを貼り付けることができます。
Javascript
Javascriptのページでは、CENNZnetのAPIを試すことができます。
ここでは、ドロップダウンメニューからコード例を選択し、必要に応じて変更を加えた後、テキストエディターの右上にある再生ボタンを押してコードを実行することができます。右側にコンソールログが表示されます。
コード例には4種類あります。
· RPC: APIを介してRPCメソッドを使用する方法を示します。「api.rpc」メソッドを使用しています。
· Storage: 計算を行わずにランタイム・モジュール・ストレージを照会する方法を説明します。 これらは `api.query` メソッド等を使用しています。api.query.genericAsset.freeBalance().
· Consts: APIを使って定数変数にアクセスする方法を説明します。
· Extrinsics: APIを介した外部メソッドの使用方法を説明します。
APIメソッドのテクニカルリファレンスはWikiに掲載されています。
Github
Githubボタンをクリックすると、当社のJavascript APIのGithub repoに移動します。
Wiki
Wikiボタンをクリックすると、Githubで公開されているCENNZnetのWikiにアクセスできます。テクニカルドキュメントやガイドをご覧いただけます。
私たちの技術の進歩を常に把握するために、 Twitter、Telegram、LinkedIn、Discord、Instagramでフォローしてください。