ピヨピヨ日記

毎日ピヨピヨしています

DAI

今日は普通に仕事をしていたら1日が終わってしまった。もう少し勉強(=将来への投資)をする時間を意識的にとりたい。

そういえば、今日は DAI というものを知った。DAI は非中央集権的な仕組みで、法定通貨と暗号通貨の価格差を一定にしようという試みであるという理解(間違っているかも)。さらっと説明の動画とかを見た限りだと、仕組みをよく理解できなかったので、もう少し深く読み込む時間を作って理解したい。

https://makerdao.com/

 

シンガポール出張を終えて日本に🐸

f:id:plygnd:20180408005403j:image

 

シンガポール出張を終えて日本に帰ります。

 

やっぱり、シンガポールはエネルギーに溢れていていい感じ。行くたびにどんどん良くなっている。

 

今日は昼間にシェアサイクルに乗ってみた。半年ほど前に来たときはなかったような気がするのだけど、ぼくが外に出ていなかっただけかな?

試しに乗ってみたシェアサイクルはとても便利で感動した。アプリで簡単に借りることができる。あと、アンロックも自動でかっこよかった。

 

f:id:plygnd:20180408010924j:image

 

でも、利用者が増えてくると、いざというときのために保険とか必要だろうな。そのうちシェアサイクルで自転車をアプリで借りるときに、アプリ内で保険に入れるようになるかも。

 

シンガポールはもう少し頻繁に戻ってきたいなあ。

 

 

毎日日記を書きたい

毎日日記(というかブログ?)を書くことを継続したい。少なくともまず4月中はなんとか継続したい。これまでなんども同じ目標を立てては挫折してきたので、今回はなんとかしたい。

 

これまで挫折した理由は何だろうか?
「日記を書くにいたるまでのハードルが高かった」のが理由の1つとして考えられる。まず、日記を書かないといけない、ということを思い出す必要がある。これがなかなかハードルが高い。つぎに、書く気になったとしてもネタがない。ネタがないなら果たして日記を書く必要があるのか、という疑問も出てくるけど、とにかく継続したい。さらに、書こうと思ってもコンピュータを開いて、ブログにアクセスして文章を推敲しながら書く、っていうのも大変。

 

1. 日記を書くことを思い出さないといけない問題を解決する方法としては、カレンダーに日記を書く時間を入れるのがいいかな。ただ、カレンダーに設定したとおりに行動できなかった場合どうするか?継続するためには、生活のルーティンにやるべきことを入れて、作業を開始する精神的コストを低くする必要がある気がしている。また、それだけではなく、出張とか普段の生活とは異なる状況になっても続けられるように工夫する必要がある。じゃあ具体的にどうするか?日記を書くべき時間を1日のうちに複数設ける?1つをミスしても、3つくらいあればなんとかなるかも。なんか微妙なソリューションだけど、それでいってみるか。とりあえず、7時・10時・13時・17時・21時にカレンダーを入れてみた。時間はなんとなく。

 

2. ネタについては、毎日何かoutputすることを強制すること自体が、inputを強制することになると思うので、あまり気にしなくてもいいかも。あとは、weekly でテーマを決めてみたい。今週のテーマは、やっぱり blockchain かなあ。

 

3. わざわざコンピュータを開いてものを書くコストが高い問題については、iPhoneから投稿できるようにしておくのがいいかな。とりあえず、はてなブログのアプリを入れた。

State of the ÐApps に Pixereum を載せてもらった

後学のため、ÐApps(Ethereum Blockchain 上のアプリ)のリスティングサイト State of the ÐApps に、この前つくった Pixereum の掲載申請を出したら案外スムースに載せてもらうことができました。

 

Pixereum — State of the ÐApps

 

どうやらマニュアルで審査をしているみたいだけど、まだ絶対数がとても多いわけでもないので、2日程度で掲載に至りました。

 

今後日本でも ÐApps のリスティングサイトがけっこう出てくるだろうなあ。アプリみたいにレビューがあったり、記事広告が出てきたりするんだろうな。

 

Pixereum についてはこちら

diary.piyopiyo.jp 

Ethereum のスマートコントラクトについてはだいぶ遊び方がわかってきたので、次はもう少し面白くて使えるものをつくってみたい。

 

Pixereum を自分のサイトに表示できるやつをつくってみた

この前つくってみた Pixereum を自分のサイトに表示できるやつをつくってみました。

 

Pixereum の詳細については以下の記事で:

diary.piyopiyo.jp

 

今回のスクリプトはすごくてきとうに作ったのでいろいろ改善が必要ですが、とりあえず動くので使ってみています。

 

gist.github.com

 

上のスクリプトをブログのサイドバーとかにはると、Pixereum をサイトに簡単に表示することができます。

 

👇👇👇ここに実際にはってみています。 

 

 

 

このブログはサイドバーがないのでちょっと表示しづらいのですが、別のサイドバーがあるブログにスクリプトをはってみたらこんな感じになりました。まんぞく。

 

f:id:plygnd:20180311175841p:plain

 

Ethereum のスマートコントラクトを使用したスマートロック

Ethereum のスマートコントラクトを使用したスマートロックのプロトタイプをつくってみました。

 

f:id:plygnd:20180310210146j:plain

 

このスマートロックでは、ユーザが鍵を解錠する権利を取得するために、あらかじめスマートコントラクト上に公開鍵を書き込んでおき(このとき Ether で支払いも済ませる)、鍵を解錠する際は公開鍵認証を行ってユーザの確認を行います。

 

今回のプロトタイピングの主目的は、「Ethereum Wallet の公開鍵を使って、ユーザのデバイスと鍵デバイスの間で公開鍵認証を行う」ということがちゃんとできるかどうかの検証です。結果としてはうまくできたのでうれしい。

 

この方法を使うと、受益者(サービスを受けるべきユーザ)の確認・認証を Ethereum の Wallet だけでできるので、鍵以外にも何か使えるかなあと思っています。

 

実際に動いているところ

youtu.be

 

この動画だけだと全く意味不明ですね。

  • Web Bluetooth API を使用したウェブサイト(HTML+JSで実装)と Raspberry Pi (上のプログラムは Node.js で実装) が BLE で繋がっていて、ウェブサイト上の解錠ボタンをクリックしたら、アヒルちゃんが動いています。
  • アヒルちゃんが乗っているのはサーボモータで、実際にはこのサーボモータを使って、アヒルちゃんではなく鍵を動かすことになります。
  • Web Bluetooth API を使用したウェブサイトがユーザ所有のデバイス、Raspberry Pi  + サーボモータが鍵デバイスになります。ユーザ所有のデバイスについては実装が楽なのでウェブサイトにしましたが、BLE が使えるのであれば iPhone でも Android でもなんでも ok です。

 

全体の概要図みたいなもの 

f:id:plygnd:20180310194544p:plain

 

ざっくり解錠の流れ

鍵を解錠する権利の取得

  • Ethereum スマートコントラクトに公開鍵を書き込みます。

ここで Ether 建てによる支払いも完了できます。ただし、エスクロー等の手段を使用しないのであれば、鍵の持ち主を信用できる場合に限ります。

鍵を解錠

  • [ユーザのデバイス] 鍵デバイスに鍵の解錠要求を出します。
  • [鍵デバイス] 解錠要求を受け取ったら、Ethererum スマートコントラクト上の公開鍵を取得します。(値を読むだけなので、手数料のGasはかかりません。)
  • [鍵デバイス] 乱数を生成します。
  • [鍵デバイス] 乱数を公開鍵で暗号化し、暗号化した乱数をユーザのデバイスに返します。
  • [ユーザのデバイス] 秘密鍵で暗号化された乱数を復号します。
  • [ユーザのデバイス] 得られた乱数のハッシュ値を鍵デバイスに返します。
  • [鍵デバイス] 自身が生成した乱数のハッシュ値と、ユーザのデバイスから受け取ったハッシュ値を比較して、一致していれば鍵を解錠します。

 

ここでは、ユーザのデバイスはインターネットに接続できる必要がないため、BLE 以外にもスマートカードとかでも同じようなことができる気がします。

 

鍵自身が  Ethereum のノードになっているときはいいけど、外部のノードを使用するときは、ノードが嘘をついている可能性もあるので、複数のノード上のスマートコントラクトの値を読んだほうがいいのかな?

 

プロトタイピングで使用したもの

  • Raspberry Pi + サーボ - 鍵デバイス
  • Chrome - ユーザデバイス
  • Node.js - 鍵側のコード
  • HTML/JS + Web Bluetooth API - ユーザデバイス側のコード
  • 使用した node modules - web3, eth-crypto, bleno, crypto, cylon
  • Solidity - スマートコントラクトのコード

 

最初は、BLE を使うユーザのデバイスを iOS にしようと思ったけど、ちょっと楽をするために、ブラウザから Bluetooth を使用することのできる Web Bluetooth API を使ったのでかなり楽にプロトタイプをつくることができました。

 

おわりに

書いてる途中で、「鍵」がゲシュタルト崩壊してきました。「鍵デバイス」という名前だと秘密鍵やら公開鍵やらと混同してしまうので、「スマートロック」という名前を使用して説明すればよかったです。でもめんどくさいからこのままでいいや。

 

あと、スマートロックといいながら、まったく鍵の機構を作っていないのでタイトル詐欺かもしれない。ごめんなさい。

 

あとあと、公開鍵認証のやり方がこれでいいのか不安。ちゃんとコンピュータサイエンスを勉強したいなあ。やっぱり大学に行きなおすべきか。学費稼がないと。

 

今日も現実逃避できて楽しかったけど、そろそろ本格的に確定申告やばい。

 

参考

blog.playground.io

 

blog.playground.io

Ethereum Blockchain 上の「ピクセル」のオーナーになれるサービス Pixereum.io

Ethereum Blockchain 上の「ピクセル」のオーナーになれるサービス Pixereum.io を作ってみたよ。

 

f:id:plygnd:20180303170323p:plain

Ethereum Blockchain 上の 100x100=10000 ピクセルの所有権を取得できるサービス

 

Pixereum とは?

  • 暗号通貨(Ether)を使って、Ethereum Blockchain 上の「ピクセル」の所有権を取得することができるサービス
  • Pixereum には合計 10000 個のピクセルがある
  • 取得した「ピクセル」には、任意の色やメッセージを設定できる
  • 取得した「ピクセル」に、任意の価格を設定して販売することができる
  • 使い方: Pixereum.io にアクセスしてピクセルをクリックしてみよう!*1

 

意味あるの?

  • ないよ!
  • でも、「世界に10000個しかないピクセル」に価値を見出すへんなひとが一定数いて、ピクセルを購入してくれたら何か価値が生まれるかも?
  • アートって言い張ることもできるかも?(cryptoart なるジャンル?)
  • 広告的な価値があるかも?
  • もともとは、1ピクセルを1ドルで販売したという http://www.milliondollarhomepage.com/ にインスパイアされている。*2 
  • 現時点(2017年 - 2018年)における Ethereum の Smart Contract 上の技術的ないろいろやJavaScript APIの検証目的。

 

このあとやってみたいこと

  • 万が一ピクセルを取得してくれるひとがそこそこ出てきて、ピクセルが埋まってきたら、Pixereum をどこかパブリックなスペースで大きく表示してみたい。
  • 「世界初(※僕調べ)暗号通貨アート」とかわけのわからないことをいえるかも。
  • 今はカタコトでしか英語での説明を書けていないので、ちゃんと英語を勉強して海外の人向けにちゃんとサービスを提供する練習をしたい。
  • DApps といろいろできるアプリ(iOS or Android)を書きたいので、Pixereum を練習台につかいたい。

 

最近は Blockchain の勉強をしながら「価値とはそもそも何か?」とか考えて現実逃避できるので楽しいけど、そろそろ確定申告やらないとやばい。現実つらい。