2017年4月7日金曜日

RFIDとブロックチェーン その2

ブロックチェーンにタグIDを保存しようとあれこれ調べてみると、単にデータを Bitcoin ネットワーク上に保存するという使いかたもあるようです。有名な使い方の1つに「Proof of Existence」というのがあります。存在証明というもので、ドキュメントが確かにその時存在したということを証明するサービスです。

ブロックチェーンの大きな特徴として取引のあった正確な時間もブロック内に保存しますので、ある時間でデータをブロックに保存した場合、その時間にそのデータが確かに存在した(ブロックチェーンに登録された)ということの証明になるわけです。

ドキュメントのデータをそのままブロックチェーンに登録するとデータが大きすぎますから、ドキュメントデータのハッシュ値だけを登録します。そうすることでドキュメントが更新されていなければ、そのドキュメント(電子データ)がその時間に確かに存在していたということを検証できるようになるわけです。

ただこの使い方は Bitcoin からすれば意味の無いデータがどんどん蓄積されていくわけですから、あまり歓迎される使い方ではなかったようです。(取引のアウトプットデータとしてネットワーク上に残るのですが、次の取引の再に未使用のアウトプットデータが必要となるため、Bitcoin の各ノードは未使用のアウトプットデータをすぐに検索できる形で保存していなければならず、これがどんどん増えていくと問題になるわけです)

しかしながら、このアウトプットは取引に使えないアウトプットデータなんだよーという印をつける(スクリプトに OP_RETUEN というコマンドを入れる)ことができるようになりました。こうすることで、各ノードが「あー、これ関係無い奴だから無視―」とできるようになるわけです。これでまー、一応データを保存してもよかろうということになっているようです。

ということで実際に Bitcoin ネットワーク上にタグIDを保存してみたいと思います。(1個だけね、1個だけ)

トランザクションを作ってネットワークに流すとなると Bitcoin のフルノードが要るわけですがそんな余裕は無いのでそれができるサービスを使ってみます。

https://coinb.in/

こちらで New -> Transaction とやるとトランザクションを手動で作成して Bitcoin ネットワークに流す(ブロードキャスト)ことができます。ただし通常の取引ではないとはいえ、手数料を支払う必要があります(そうしないとブロックに入れてもらえない)。

さらに署名のために Bitcoin アカウントのプライベートキー(秘密鍵)を入力する必要があります。さすがにこれは結構抵抗ありますが、使い捨てのアカウントを作ってやってみます。

まずは Bitcoin のアカウントを作成しますが、プライベートキーが必要ということでペーパーウォレットというサービスを使います。

https://www.bitaddress.org/

サイトにアクセスすると自動的に Bitcoin アドレスの作成が始まります。JavaScriptで作られた Bitcoinクライアントのようです。マウスを動かすと秘密鍵が生成されていきます(見てて楽しい)。生成が終わると Bitcoin アドレスと対応するプライベートキーが表示されます。さらに Paper Wallet のボタンを押すとかっちょいい Bitcoin 紙幣が生成されます。この紙幣に Bitcoin をチャージできるわけですね!なんかカッコイイ!


作成したアドレスに Bitcoin を送金します。手数料分だけ。0.001BTC(\130くらい)
その後 coinb.in サイトに戻ってトランザクションを作成します。

Advanced Option の中に、OP_RETURNを使うかどうかのチェックがあるのでチェックします。


で、Inputに先ほど送った取引のトランザクションID、Outputの Address に保存したいタグID(今回はE2801160600002066E6D580F)を入力し、Submit するとトランザクションが作成されます。(注:以下の画像は作業途中のもので正確なものではありません)


これをコピって、Sign Transaction のページでプライベートキーでサインします。


でまたこれをコピって、Broadcast のページでブロードキャストします。

txid: d5d3029172421fedd5a91b587049869c7f492580d07fa453de5549764fbd1cca

するとキター トランザクションIDが割り振られました。
早速トランザクションを https://blockchain.info で見てみます。

すると出力スクリプトのところにタグIDが! しかし横には「奇妙な取引」の表示が!
ごめんなさい。

0 件のコメント:

コメントを投稿