12/14の記事になります。今年ももうすぐ終わりに近づいて参りました。振り返ってみると、まったくもって個人的な話ですが、bitcoin、ブロックチェーン周りの技術を扱ってみたり、F#で新規サービスを構築する、なんてチャレンジングな取り組みに関わってきました。アクセスし、仮想通貨のやりとりをするプログラムを作ってみましたので紹介します。マイクロソフトが作ったプログラミング言語です。関数型プログラミング言語でありつつ、実行環境は.Netなので、これまで積み上げてきたライブラリ等の資産をそのまま活用することができます。逆に、関数型プログラミング言語でありつつも、.Netのライブラリも使えるもんだからい様々な書き型が出来てしまい、いろいろと迷う、というデメリットもあります。決めればいいってものですが。ヘデラ社が公開しているオープンな分散管理台帳技術です。冒頭で「正確には・・・」とつけましたが、ブロックチェーンではなく独自の「ハッシュグラフ」というデータ構造を持っています。Goshipプロトコル、仮想投票というハッシュグラフ独自のアルゴリズムを採用することで、ブロックチェーンに代表される他の分散管理台帳で課題となっている以下の点を解決しています。厳密なファイナリティ:ブロックチェーンはマイナーの手によってチェーンが分岐することがあり、確率的には取引が破棄される可能性がゼロにはならない承認速度:ブロックチェーンではブロックが格納されるまで取引が承認されない。承認順序:ブロックチェーンではブロックに格納されるまで取引の順序が確定しない詳しくは、以下の公式サイトをご参照ください。本家サイトhttps://www.hedera.com/日本語サイトhttps://www.hedera.asia/準備プログラムを作る前に必要なアカウントの取得やSDKのインストールを実施します。Hashgraphは最近までクローズドな環境のみだったのですが、今年の9月からオープンアクセスが開始しました。自分の仮想通貨を持つためにはアカウントが必要です。自分のアカウントは以下のサイトで作成します。https://portal.hedera.com/registerアカウントの作成にはスマホからのアクセスと運転免許証などの登録(KYCプロセス)がありますので準備をお願いします。鍵の生成アカウントが作成できたら鍵を生成して登録します。鍵の生成にはツールが提供されているので、以下のコマンドで実行します。Pair」タブの「Generate」ボタンを押下し、鍵情報を生成します。鍵の登録ポータルサイト(https://portal.hedera.com)に自分の公開鍵情報を登録します。Encoded」の項目の文字列を登録します。KEYが表示されれば登録完了です。HashgraphにアクセスするためのSDKをインストールします。Hashgraphを操作するためのSDKを利用します。.Net版のSDKはHederaの公式なSDKではなく、コミュニティが作っています。使ったアプリを作っていきましょう。F#以下のような表示が出れば作成完了です。succeeded.続いて、前述のSDKをプロジェクトに追加します。ファイルをディスクに書き込んでいます。Worldが出力されます。Hashgraphにアクセスする準備が整いました。ウォレット機能の開発をはじめます。多くのブロックチェーンでは、アドレスという口座に該当する概念があり、それぞれのアドレスがどのくらい残高を持っているかを容易に調べることができます。残高照会するための関数を作成してみました。引数の意味は以下の通りです。ゲートウェイに接続します。以下のコードでclientオブジェクトがネットワークに接続するためのクライアントにあたり、接続先となるゲートウェイ情報を設定しています。使って残高を問い合わせます。balance実行すると以下のように残高が出力されます。続いて支払いを表す出金です。出金は支払先の口座を表すアドレス番号と、支払元のアドレス番号に対応する秘密鍵情報が必要です。出金のためのtransfer関数を用意しました。引数の意味は以下の通りです。(transactionReceipt.Status.ToString())出金の場合は、HederaHashgraphに接続するためのclientオブジェクトの初期化時にゲートウェイの情報と支払い元の口座番号と秘密鍵の情報を設定しています。使って出金処理を行います。Async.RunSynchronously実行すると、以下のように出力されます。Status:Success動かしてみよう残高照会と出金処理を起動引数で切り替えられるようにプログラムを書いてみました。上記のプログラムを使って、出金の前後で残高が変わるのを確認します。以下のように実行します。tinybars.出金前の残高照会でアドレス番号1の口座に「6863528961」残高が残っています。出金処理でアドレス番号1の口座に「1000」の仮想通貨を送ります。出金後の残高照会でアドレス番号1の口座に「6863529961」残高が残っています。出金処理を行う前に比べて「1000」増えていることが確認できます。F#を使って操作するウォレットの機能を開発してみました。.NetのSDKを使うと非常に簡単に開発ができることがお分かりいただけたと思います。ブロックチェーンや分散台帳技術はその仕組みは複雑ですが、単純に利用するだけであれば、実は中身の仕組みはあまり意識しなくても利用することができます。いったSDKがもっと知られることによって、まだまだ浸透していない仮想通貨の利用も広がっていくのではないでしょうか。Hashgraphは今回紹介した仮想通貨の機能だけでなく、スマートコントラクトやファイルといったAPIを備えてます。Hashgraphを使った様々なサービスが公開されています。機会があれば他のAPIの解説もしてみようかな、と思ってます。今回はF#ならではの書きっぷりというか使い方はあまりしていません。こちらもどこかでご紹介する機会があったらな、と。本拠を置くITコンサルティング会社です。技術的な知見に基づいて技術案件から上流案件まで幅広くご支援しています。upLoginユーザーは見つかりませんでした。