フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

【レポート】IoTとブロックチェーン!Azure Blockchain入門+IoT応用勉強会

f:id:lirlia:20180829205049j:plain

基本情報

  • タイトル:Blockchain WorkbenchとAzureを使った、分散アプリケーションの構築
  • 発表者:Microsoft 廣瀬一海
  • 資料:

発表の内容

  • ブロックチェーンの基礎
  • ブロックチェーンとアプリ開発
  • AzureのWorckBenchを使ったブロックチェーンの開発

ブロックチェーンの基礎を軽く振り返り

ブロックチェーンの構成要素

f:id:lirlia:20180830005725j:plain

ブロックチェーンには大きく分けて4つの仕組みがある。

  • 電子署名(はんこ)
  • データの共有
  • 分散(P2Pでデータ交換)
  • 台帳(書き込まれたらデータは変更不可、改ざんしずらい)
    • アルゴリズムによって書かれたものは巻き戻れないものもあれば、巻き戻せるものもある
    • 具体例:クレジットカードで支払った後に、返金すると別々の処理が発生する=台帳取引

具体的に言えば「カーボン紙の契約書」を想像するとわかりやすい。

https://www.den-pyo.com/common/template/estimate_form_help/img/carbon02.jpg

3枚重なったカーボン紙に記入をし全てにハンコを押す。一番上は自分が持っておき、残りは他の法人が保有する。同じ情報が書かれた紙を複数の法人で有しているこの仕組みをデジタルで実現しているのが「ブロックチェーン」の台帳。ハンコが電子署名のこと。

注目されるブロックチェーンの活用

f:id:lirlia:20180830005722j:plain

ブロックチェーンは情報の改ざんができず、電子署名などもあるためこれらの分野での利用が期待されている。

  • 本人確認やIDなど
  • 通貨、ポイント、オークションなど
  • 登記、遺言、出生、転居など
  • 製造記録、流通過程、真正性認証など

【ぎんのコメント】

とにかくいろんなところに使えて便利そう。しかもここはすべて紙とかモノで識別していただけにうれしい

ユーザーとしては使う未来が確実にくる。エンジニアとしてはビットコインをどう動かせるのかどんなビジネスにつながるのかを考えよう

ただし問題があって、誰が誰にどんなことができるのか?というワークフローの整備が課題になっている。

f:id:lirlia:20180830005737j:plain

ブロックチェーン2.0へ

f:id:lirlia:20180830005747j:plain

プログラミングコード(スマートコントラクト)を実行した結果をブロックチェーンに記録できるようになった。

これによりスマートコントラクトを実行し、その結果をBlockchainネットワークに書き込むことで、ブロックチェーンを利用したコインであれば送金や残高照会などが実現できる。

スマートコントラクト

f:id:lirlia:20180830005813j:plain

Solidityと呼ばれる言語で開発する。(Solidity — Solidity 0.4.24 documentation

これまでのアプリ開発との違い

f:id:lirlia:20180830005817j:plain

これまでのアプリケーション開発では

  • UI : HTML/JS
  • ビジネスロジック:アプリ(Java/Rubyなど)
  • データストア:RDBMS

だったのが

  • UI:HTML/JS かわらず
  • ビジネスロジック:スマートコントラクト
  • データストア:Blockchainネットワーク

となる。

ローカルでのアプリケーション開発環境

  • Windows10
  • Visual Studio Code(solidity、material icon themeを拡張機能でいれてる)
    • いきなりVSCに抵抗あるならRemix(WebIDE)使うと良い
  • Ethreum(イーサリアム)
  • Nodejs
  • Truffle Framework(フレームワーク)
    • ganache(エミュレーター)ethreumのウォレットと公開鍵を作ってくれてる

Azure Blockchain Workbenchについて

f:id:lirlia:20180830005836j:plain

ローカルの開発環境でも作れることは作れるが、自分でBlockchainネットワークを作るのは非常に大変なのでAzureのマネージドサービスを使うとブロックチェーンに必要な機能をまるっと提供してくれる。

当日のデモではIoTのセンサーデータをAzureHub/Azure Functionを経由して、ServiceBusへ行きBlockchainネットワークへの書き込みを行なった。

f:id:lirlia:20180829204527j:plain f:id:lirlia:20180829204535j:plain f:id:lirlia:20180829204539j:plain f:id:lirlia:20180829204543j:plain

※わざわざOff-Chain DBを用意しているのは、ブロックチェーンに書いたデータを後から参照するのが大変なので別途DBを持たせて、先にここから書き込んだデータのアドレスを調べることで高速化を行なうため

Azureの強みはBlockchainネットワークを使ったアプリ開発に必要となる

  • ワークフロー
  • 認証キーを管理する仕組み
  • Blockchainネットワーク
  • その他連携機能

を保有しているところ。

サンプル(コントラクトとワークフロー)

solファイルとjsonファイルをダウンロードしてblockchain workbenchに導入するとすぐにブロックチェーン環境がつくれる。(solファイル:コントラクト、json:ワークフローや認証のベース)

持ち帰ってほしいこと

  • ブロックチェーンは検証や様子見から実用域へ
  • ブロックチェーンの特性を生かしたアプリ開発を始めよう
  • WindowsとAzureを使って快適なBlockChain開発を!
  • ワールドワイドでIoTのデータ集めるときは、世界各国のBlockshainエンドポイントにデータをそれぞれおくることで遅延同期が可能になる
  • WorkBenchはまだpreview(まだGAしてない) 2018/08/29現在
  • WorkBenchはそのうちOSS化の予定とのこと

【ぎんのコメント】

AzureがBlockchain開発としてはよさそう、AWSは少なくとも全然まだサポートしてない。

参考資料

f:id:lirlia:20180829205308j:plain f:id:lirlia:20180829205325j:plain