こんにちは。ISSHO ,Inc サトミです。
ちなみにTwitter IDの@taptap_arukuの由来は、上海の美味しい食べ物で5kg太り、
猛烈に減量していた時に作成したアカウントからきています。
猛烈に後悔しています。もっと違うIDにすればよかった。
その後急激に体重を落とし入院したしょうもないオチつきです。
はじめに
今回はブロックチェーンとIoTでLTするイベントを開催した際に、
準備していたものを紹介します。
イベントの様子はこちら。
チケットが200を超え、コンテンツもおもしろく最高なイベントとなりました。
タイトルにもある通り、ブロックチェーンとIoTで
家族のための"やさしiほけん"コントラクト
を作ってみました。
背景
詳しい経緯は以下に書いてあるのでご覧ください。
要は、病院に行かない家族に、
病院に行かざるを得ない状況にする保険です。
その名も 優しさと愛で家族を守る
やさしiほけん
動作環境
温度センサー
solidity
node.js
IoT初心者のはじめてのおつかい
ブロックチェーンに関しては少なからず知識はあるものの、
IoTはまるで初心者。
まずは秋葉原でのおつかいからスタート。
その様子はこちら。著者: @toshiaki_takase
ガイドライン
(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
<pickTargetロジック>
ここでの問題は、温度計を測っている人は誰なのか問題。 例えば父が測っていて熱が出た場合、プールされていたETHは父のウォレットアドレス宛に送金されなくてはいけない。 ・温度計のスイッチの起動をコントラクトアドレスとユーザーウォレットアドレスに設定。(ログイン、パスワード) ・閾値以上で、送金ロジック発火し、ユーザーウォレットをパラメーターにして、送金。
あまり良い解決策ではない。
IoTの洗礼
ここでさらに問題発生...。
どうやら僕が買った温度センサは、Analog In。
アナログの信号をデジタルに変えるADはコンバーターが必要だったとのことで、
それに気づいたのがイベント前日でLTは断念...(悔しい...)
最後に
というわけで、アイデアだけの価値のない記事になりましたが、
現在も絶賛開発中です。
次回のイベントでは作ってもっていくぞっ!!!