b portal

Dapps研究 - イーサリアムブロックチェーンのコード学習備忘録

家族のための"やさしい保険"コントラクト。#0

f:id:satomin2525:20180728213550j:plain

こんにちは。ISSHO ,Inc サトミです。

f:id:satomin2525:20180728213223j:plain

twitter.com

ちなみにTwitter IDの@taptap_arukuの由来は、上海の美味しい食べ物で5kg太り、

猛烈に減量していた時に作成したアカウントからきています。

猛烈に後悔しています。もっと違うIDにすればよかった。

その後急激に体重を落とし入院したしょうもないオチつきです。


はじめに

今回はブロックチェーンとIoTでLTするイベントを開催した際に、

準備していたものを紹介します。

イベントの様子はこちら。

togetter.com

チケットが200を超え、コンテンツもおもしろく最高なイベントとなりました。

タイトルにもある通り、ブロックチェーンとIoTで

家族のための"やさしiほけん"コントラクト

を作ってみました。


背景

詳しい経緯は以下に書いてあるのでご覧ください。

要は、病院に行かない家族に、

病院に行かざるを得ない状況にする保険です。

その名も 優しさと愛で家族を守る

やさしiほけん


動作環境


IoT初心者のはじめてのおつかい

ブロックチェーンに関しては少なからず知識はあるものの、

IoTはまるで初心者。

まずは秋葉原でのおつかいからスタート。

その様子はこちら。著者: @toshiaki_takase

note.mu


ガイドライン


(1) グループ内の誰かが” やさしiほけん “を作る。
この時、作った人が管理者(manager)となる。

  function createInsurance() public {
    manager = msg.sender;
  }


(2)参加者を決める。参加者は0.01ether以上を支払わないと入会することができない。
規定以上の支払いで、メンバーになれる。

   function apply() public payable {
     require(msg.value > .01 ether);
     applicants.push(msg.sender);
   }


(3)保険適用者を決める。
   グループ内で決めた保険適用のルールに従い、適用者を決める。
   適用者はパラメーターで渡ってくる。
   管理者のみ使える権限にしておく。

   function pickTarget(address _target) public onlyOwner returns(uint) {
       myAddress = this;
      _target.transfer(myAddress.balance / applicants.length);
   }


(4)今後も管理者のみの権限を付与するので、modifierにまとめておく。

    modifier onlyOwner() {
       require(msg.sender == manager);
       _;
    }

※ _; がなぜ必要なのか、まだ腹落ちしていない。


(5)いつでもメンバーは確認できる。

    function getApplicants() public view returns(address[]) {
       return applicants;
    }


Solidityでの課題

ここまで書いておいてだが、このコントラクトは完全とは程遠い。

<月額課金ロジック>

コントラクトのデプロイ後、特定の時間に特定の関数を実行することは、現状できない。
・Ethereum Alarm Clockというスマートコントラクトプロトコルがあるが、現在テストネットのみでメインネットはまだとのこと。
・現状は機能をjs側で時間を監視するか...。

参考:
zoom-blc.com

github.com


<pickTargetロジック>

ここでの問題は、温度計を測っている人は誰なのか問題。
例えば父が測っていて熱が出た場合、プールされていたETHは父のウォレットアドレス宛に送金されなくてはいけない。
・温度計のスイッチの起動をコントラクトアドレスとユーザーウォレットアドレスに設定。(ログイン、パスワード)
閾値以上で、送金ロジック発火し、ユーザーウォレットをパラメーターにして、送金。

あまり良い解決策ではない。


IoTの洗礼

ここでさらに問題発生...。

f:id:satomin2525:20180728212223p:plain

どうやら僕が買った温度センサは、Analog In。

アナログの信号をデジタルに変えるADはコンバーターが必要だったとのことで、

それに気づいたのがイベント前日でLTは断念...(悔しい...)


最後に

というわけで、アイデアだけの価値のない記事になりましたが、

現在も絶賛開発中です。

次回のイベントでは作ってもっていくぞっ!!!

f:id:satomin2525:20180728213125j:plain