ChainProof
ブロックチェーンを使用して、「あるデータがある時点までに存在したこと」を証明することができるやつ。
コンセプト
ブロックチェーンについて詳しくない方・非技術者の方でも、とにかく簡単にブロックチェーンを使った存在証明を体験できることを目的に作りました。
多くのユーザにとってブロックチェーンを使用する大きなハードルがウォレットの管理・暗号通貨(暗号資産)を入手することだと考えたので、ウォレット・暗号通貨(暗号資産)を使用せずとも、代理でトランザクションを実行する機能を実装しました。
使い方
存在証明の登録
現時点までに存在していることを証明したいメッセージを入力して、「メッセージの存在証明を書き込む」ボタンを押下します。
https://gyazo.com/3944af1896cc8f8ee28cf39f6f659b1c
クレジットカード・ Apple Pay でトランザクション手数料を支払います。
https://gyazo.com/a48dea7d78115cd6614c657fd6d77bf1
決済の完了後、存在証明の確認用URLが生成されます。このURLは存在証明を確認する際に必要なので控えておきます。
https://gyazo.com/f8b3402e6272273f8989e8355764ebcf
存在証明の確認
存在証明の確認用URLにアクセスします。
「存在証明するメッセージ」に先ほど入力したメッセージを入力します。
https://gyazo.com/dd2ef54b29c67fea8aa4ee5750e8f80d
「存在証明を確認する」ボタンを押下し、存在証明を登録した際のメッセージ(のハッシュ)と入力したメッセージ(のハッシュ)が一致すれば、存在証明を表示します。
https://gyazo.com/06535f397aa703162f5a00e6e5914822
トランザクション実行までの流れ
ブラウザ
ユーザが支払い後、新規に wallet を作成
wallet の秘密鍵を使用してメッセージのハッシュ値に署名
サーバにハッシュ値と署名を保存(wallet の秘密鍵は保存しない)
サーバ
ハッシュ値と署名を含む Ethereum のトランザクションを作成
トランザクション実行用の秘密鍵でトランザクションに署名
Ethereum のトランザクションをブロードキャスト
今後の改善案
現状は「誰が」メッセージを書き込んだか証明するUIを設けていませんが、ハッシュ値に署名を行う際に毎回新しい Ethereum のウォレットを作成し署名するようにしているので、ハッシュ値への署名者が秘密鍵を保存できる UI を用意すれば、秘密鍵の所有者 == メッセージを書き込んだ者とみなすことができるようになるかと思います。
技術詳細
スマートコントラクトの実装
スマートコントラクト のアドレス
0x3baa051987bd958fcd2659fdd8e27cb49fedeee1