🦊

【Dev】Blockchainをjsで実装してみる(その1:機能要件)

2021/08/25に公開

今まで一度も技術本を完読したことがなかったのですが、はじめて最初から最後までJavaScriptでBlockchainを実装してみる、という英語の講座を完了しました。なかなかBlockchainの入口になる記事が日本ではあまりないことと(ゴリゴリの記事は時々見かけるのですが)、自分の情報整理のために世の中の流れと合わせてBlockchainの簡単な実装について書いてみようかな、と思ったのが記事を書こうと思ったきっかけです。

ざっくり機能要件

  1. 複数ノードで同一台帳を同期をとって管理する
  2. トランザクションの改変は不可

以上かな。意外とシンプル。まぁ細かく言えばもっとあると思いますけど...先にお伝えすると、私がつくってみた簡易Blockchainでは1については割と野暮ったいというか、ちょっとゴリゴリした感じの実装で、2については「なるほど、マイニングとはそういうイメージなのか」と感心するところがありました。あくまでもBlockchainのイメージを掴むものをつくる感じになります。

そもそもBlockchainとは何か...

Blockchainとは An Immutable, Distributed Ledger だそうです。 直訳すると、不変的な分散型の台帳となります。この台帳というものを何かに例えるならば、金融関連のトランザクションの記録ですね。「イチローくんの口座からショウヘイくんの口座に$100送金した。という記録が台帳になります。

不変的ということは、この台帳は一度記録されたら絶対に変更されてはならない、ということです。Blockchainでは、一度つくられたトランザクションは絶対に後から変更できません。こっそりと台帳を書き換えてイチローくんがショウヘイくんに送った$100を無かったことにしたり、ユリリンへの送金に書き換えたりすることはできません。

そして分散型であるので、単一のシステムによって制御するのではなく、この台帳は分散されたノードで管理されます。例えば、フォースブック(forcebook)というソーシャルメディアを使う時は、フォースブック社にアカウント情報を登録し、フォースブック社がフォースブック社なりのセキュア基準でもって情報を一元管理するわけですが、Blockchainでは情報は分散ノードにて管理されます。そもそも情報自体もオープンであることが前提です。誰からも見えないところで、テーブルの下で取引がされるようなことはありません。また、「フォースブック社にデータを預けて本当に大丈夫か」ということに悩む必要もありません。Blockchain上のデータは皆が参照することができます。

Blockchainが注目される理由

最近ときどき耳にするこの "Blockchain" という言葉ですが、AI技術以上にその実態や活用例をイメージしづらいですよね。「どうやらBitcoinなどの暗号資産取引がBlockchainで管理されているらしい」ということはうっすらと知っているひとが多いのではないでしょうか。Blockchainが注目される理由の一つは、BigTechの中央集権的な、データをガッサリとかき集めて、自分たちがルールとなって独占する、というビジネスのやり方に多くの人が疑問を持つようになったことでしょう。2021年の今はまさに技術動向の真っ只中であり、今後の業界の動向は誰にもわかりませんが、Blockchainの周りには面白い動きが沢山見られます。

次回以降、実際のコーディングについて紹介していこうと思います。

Discussion