Help us understand the problem. What is going on with this article?

Gitでブロックチェーンのようなことをする

ブロックチェーンはGitと何が違うの?ということでブロックチェーンのようにGitで Proof-of-Work する。

暗号通貨の送金などのトランザクションがgit addであり、ブロックチェーンのブロックがgit commitである、として考える。
そうするとブロックチェーンはgitの履歴であり、トランザクションの確定はgit commitを Proof-of-X することで信頼性(?)が担保される。

簡易的な Proof-of-Work を hooks/post-commit に書くことにする。
コミットのハッシュが特定の条件を満たさない場合はコミットのやり直しという感じ。

$ git commit --allow-empty -m foo
c501d4fd3d6522ac34f0977c87d2942b1438fb1c -
f28f9c80a4431fe9f2bd2cc806e1b0880ac58619 -
99513727ca14d70b336a1aaccd11e8c17a65e3c9 -

...

ad6e20750dc378eac2a15f73623fb49a0cf45973 -
00a824e2b63a0260e1bec773780d44b323b87b43 -
  ---  
done 0s.
  ---  
done 7s.
[master 3eaaac4] foo

なんか最後の出力がミスってるけど、とりあえずこれで。

https://github.com/nishimura/gitmining-hook

$ git log --oneline
0058b75 add readme
0054dde add empty readme
00842e6 update command
009b8bc add post-commit file
0008b42 initial commit

コミットハッシュの先頭を00に揃えることができた。

ランダムな文字列をコミットコメントに追加して PoW している。
コミットコメントやAuthor、Committerを自分の公開鍵のハッシュのみの固定文字にして変更不可にすれば、1秒ごとにマイニングするPoSになる、と思う。コミット時刻が変わるとハッシュが変わるので。

ブロックチェーンはトランザクションがブロードキャストされるので、これを更にブロックチェーンに近付けるならgit addをブロードキャストするようにしなければいけない。
あとはコミットを検証してコミットハッシュが00で始まらない場合や間違った計算のコミットはrecievepullも拒否しなければならない。

さて、上記ブロードキャストや検証の仕組みを作っても、今のままでは特に意味は無い。
単に面白いハッシュが作れるという以外の意味を見出すには、コミットに成功したらコインが増えるというような仕組みがないとどうしようもないよね。
普通のGitでいいじゃん、となる。

逆に言うと、自分のローカルのリポジトリが見ず知らずの他人によってブロードキャストされたデータで勝手に更新されるような環境だと、PoXが必要なのかもしれない。
ただし、そのデータの価値がコミットのPoXの価値と関連していなければ、やはり普通のGitでいいよね、となる。

ブロックチェーンをコイン以外の何かに使うことを考えるというのは、この0008b42ハッシュが何かに使えるかと探すようなことかもしれない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away