##はじめに
ブロックチェーンやスマートコントラクトの勉強を始めようと思い立ちましたが、
EthereumだとSolidityだったり新たな言語を勉強する必要があり、すぐには手が出せないなと
思っていたところ、IOSTはスマートコントラクトをJavaScriptで記述できるということで、
ここを切り口にブロックチェーンやスマートコントラクトの勉強を始めてみました。
色々とネット上の情報を物色していたところ、スマートコントラクトではないですが、
偶然.NET用のクライアントSDKを見つけたので使ってみたという記事です。
#このSDKでできること
このSDKはブロックチェーンへアクセスするクライアント側の処理をライブラリ化したものかと思います。
チェーンの情報を参照できたり、スマートコントラクトを呼び出したりトランザクションを発生させたりできそうなので、このSDKを使えば.NETアプリでのIOSTウォレットとか作れそうです。※このSDKではスマートコントラクトは作れないです。
#開発環境を作る
-
必要なもの
.NET Framework4.7.2
Visual Studio 2019 -
SDKのダウンロード
以下のURLからSDKをダウンロードできます。
※zipファイルとなっていて、解凍するといくつかアセンブリが格納されています。
これらのアセンブリをVisualStudioのプロジェクトで参照を追加して使っていきます。
使ってみる
アカウント名を入力してボタンをクリックすると、テキストボックスにIOSTの保有量が表示されるシンプルなアプリケーションを作ってみます。
今回は一番使い慣れているC#のWindowsFormアプリケーションで・・・
SDKに入っているアセンブリをプロジェクトの参照に追加
SDKには.NET CORE(UWP)用と.NET Framework4.7.2用がありますが、今回は.NET Framework用を使用。参照を追加したのはIOST.dllのみ
using
using IOST;
using IOST.model.account;
今回使用するのは、IOSTクラスとClientクラス(名前空間:IOST)、
TokenBalanceクラス(名前空間:IOST.model.account)
###コンストラクタ
public Form1()
{
InitializeComponent();
IOST.IOST iost = new IOST.IOST();
IOSTClient = new Client("https://api.iost.io");
}
IOSTクラスでは、スマートコントラクト呼び出し時のgaslimit等を管理しているようです。
今回はスマートコントラクトは呼び出さないので引数なし(SDKで設定されているデフォルト値)でnewしています。
Clientクラスは、クライアントから行われる操作がまとまっているクラスでコンストラクタの引数で
接続するIOSTノードのURLを指定します。
###ボタンクリックイベント
private void btnGet_Click(object sender, EventArgs e)
{
var tokenBalance = IOSTClient.GetBalance(txtAccountName.Text,"iost",true);
txtResult.Text = tokenBalance.balance.ToString();
}
ClientクラスのGetBalanceメソッドを使用してトークンの保有量を取得します。
引数は、アカウント名、トークン名、取得の方法(true:最長のブロックから取得、false:不可逆ブロックから取得)の3つです。
戻り値はTokenBalance型で戻るのでbalanceプロパティから保有量を取得します。
##さいごに
このSDKに関するドキュメントがほとんどないので手探りでやってみましたが
他にも色々できそうな雰囲気があります。ライブラリ化されているので.NETアプリにIOSTチェーンへの
クライアント機能を組み込む際に使えるかもしれません。
#参考にしたサイト
https://developers.iost.io/docs/ja/6-reference/API.html