トークンエコノミーとITコンサルタント

旧帝大大学院卒業後、SIerからコンサルに転身した筆者が、トークンエコノミー、暗号通貨、構成技術やプロトコルについて学ぶブログになりました。最新の暗号通貨レポートの翻訳、ソースコードの解説、技術動向、週次レポート、など。特に、データ活用ビジネスの分界点・テクノロジー、資産価値を運用するテクノロジーも含めて書いていきます。

Eth2Phoneの仕組み解説

少し前ですが、Eth2Phoneというサービスが発表されました。
簡単にいうと、相手の電話番号だけを知っていればアドレスなどの情報を入力することなく
イーサリアムを送金できるアプリケーションです。


プロトコル自体は簡単です。

f:id:hacchan320:20180624170347p:plain

送信側


1. アプリ上から、Eth2Phone用のスマートコントラクトのアドレスにEtherを送信
ハッシュ化した電話番号をサーバ側に送信。コントラクトは公開鍵/秘密鍵のペアを送信者に渡す(今回の送信用にのみ使われる)

2. 送信者は秘密鍵のペアを乱数生成器で取得した値を用いて暗号化し、ハッシュ化した電話番号とともにサーバに送信。


3. 電話番号にて、受信側にSMS等で暗号化に使用したシークレットコードを通知


f:id:hacchan320:20180624170402p:plain

受信側

1.通知を受け取った後、アプリ上からサーバに対して自分の電話番号と受信したシークレットコードを送信

2.サーバは受信した電話番号先にSMSで検証コードを入力

3.受信者は検証コードをDappに入力。サーバ側で認証が成功した場合は、ハッシュ化した電話番号に対応する、送信者から送られてきた暗号化された秘密鍵を受け取る。

4.受信者は送信者から受け取ったシークレットコードで秘密鍵を複合化し、受け取りのアドレスに対して複合化した秘密鍵を用いて署名を行う。

5. 署名があっていれば、コントラクトを用いてEtherを送信する。



ここで重要なのが、「1回の取引用に鍵のペアがつくられること」「電話番号をハッシュ化」「シークレットコードによる秘密鍵の復号化」の3点。

つまり、取引ごとに秘密鍵が異なるので秘密鍵を盗難されるリスクが少なく、サーバにユーザの電話番号は蓄積せず、サーバに秘密鍵を預けることが不要である。
という点がいい設計になっている。

サーバは秘密鍵を復号化できないため、サービス側が悪意をもっていたとしても不正な引き出しを行うことができず、ユーザの資産が守られるわけである。
説明としてはそうなのであるが、サーバから電話番号を基にSMS経で検証コードを払い出しているので、管理しようと思えば受け取り側の電話番号は特定できてしまう。

ただし、サーバ側が秘密鍵を復号化できないことは変わりないので、不正な引き出しがおこなわれることはないと認識している。
後この場合、2回送金することになるからGasが多く消費されるのでは。


ウォレット事業はサービス自体はすでにかなり多く、すでにユーザを囲い込むことに成功しているサービスも存在する。
しかし、まだまだマネタイズができるほどにはユーザを囲い込めていないため、より簡単に送金ができる仕組みが今後も登場するのではないかと考える。



参考:
Using Escrow Smart Contracts to Secure ETH Transactions with Eth2Phone

bitFlyer ビットコインを始めるなら安心・安全な取引所で