2016年9月26日月曜日

【コラム】ビットコインの実装をして見えた仮想通貨の未来

テクノロジーは金融の世界も大きく変えようとしている

フィンテックという言葉が世の中を席巻しています。
フィンテックは造語で

FinTech = Finance(金融)× Technology(技術)

という意味です。
つまり、金融とITを掛けあわせた領域のことを指しています。

日本は、いまだに現金のやりとりがメインです。なので、フィンテックと言われても、あまりピンとこない人も多いかもしれません。
しかし、テクノロジーが金融やマネーの概念を大きく変えていくことは間違いありません。

実際、株式市場ではブロックチェーン関連企業が投資家の注目を集めています。
しかし、識者や経営者のフィンテックに関する未来予想は多いですが、エンジニア視点から語られたフィンテックの未来についてはほとんど見かけません。

これは、テクノロジーに長けた識者や経営者が少ないことにも原因がありそうです。また、実際にブロックチェーンをコードレベルで実装した人が少ないからでしょう。特に、仮想通貨に関しては、技術者でもわかりにくい内容なので、ブロックチェーンという単語が過大評価されているようにも思えます。

私は最近、ビットコインのヴォレット(財布)を実装する機会があったので、ビットコインをコードレベルで把握できました。
なので、この記事では、仮想通貨の可能性についてエンジニア視点で記述しようと思います。

ビットコインと仮想通貨

ビットコインの名称を聞いたことがある人は多いと思います。
いわゆる仮想通貨です。

日本が発行する通貨は「円」で、アメリカが発行する通貨は「ドル」なのは皆さんも知っての通りです。
これら「円」や「ドル」といった通貨は国家が発行し、国家の信頼度により通貨の国際価格が決定します。これが今までの「常識」でした。

一方、ビットコインは国家が発行する通貨ではありません。ビットコインは、世界中のユーザーによって管理されます。
景気が悪いからといって紙幣をじゃぶじゃぶに刷ったりして、通貨の価格をコントロールすることはできません。

ビットコインの通貨の発行は、マイニングと呼ばれる行為を通してしか行うことができません。これは非常に賢明な設計です。

仕様を策定したSatoshi Nakamoto氏がビットコインを作った理由は、「国家の発行する紙幣はインチキだ」という考えからです。
もちろんこの意見に異を唱える人もいるでしょう。現代の資本の仕組みについては色々な意見があると思います。
しかし、今の金融資本の状況を考えると、ビットコインは出現するべくして出現した技術といってよいでしょう。

ビットコインは、現在、日本で使用できる店舗はほとんどありません。しかし、今後は少しづつ広がっていくでしょう。先日、公共料金がビットコインで支払えるようになるというニュースがありましたが、とても良い傾向だと思います。

みなさんに知っておいてほしい大切なことは、国家が保証しない通貨で取り引きが可能になったことです。
これは画期的なことです。これまでは国家が資本を管理してきました。ニクソン・ショックのインチキっぷりからもわかるように、通貨とは取引の道具でしかありません。
取引を円滑に運ぶためのルールなのです。

国が発行量を決める通貨と異なり、ビットコインはオープンソースです。つまり、世界中のあらゆる人が通貨を作成し、取引所をも作成できるようになったのです。

ブロックチェーンの正体

ビットコインといえば、ブロックチェーンという単語がバズワードとなっています。
このブロックチェーンのアルゴリズムには、以下の様なアルゴリズムが利用されています。(プログラミングJavaサイトを運営しています。開発者の人は是非利用してみてください。)

これらのアルゴリズムは昔から存在するアルゴリズムです。つまり、ブロックチェーンは、既存のアルゴリズムを組み合わせて作り出したデータ構造であり、技術なのです。

ビットコインは安全なのか

結論から言うと、「ほぼ」安全です。

今後、ハッキングするスーパーハッカーが出てこないとも限りませんが、バグはすぐに修正されるはずです。
国家がガンガンと発行する紙切れより、はるかに信頼性は高いです。

たとえ不正できても、ハッキングが可能なのは、世界でもごく一部の天才プログラマーだけです。偽札を作るようなことは一般人には不可能です。

日本の通貨「円」のデジタル化

そんな遠くない未来に、日本の通貨である円もデジタル化が検討され、実施されるでしょう。
これは、円だけでなく、ドル、元、ユーロなどもデジタル化されるはずです。

理由は簡単です。それは、

不正がほぼ不可能な上、税収漏れがなくなる

からです。
国家にとってこんな素晴らしいことはありません。

税を納める国民側からは「ふざけるな」という意見も噴出するでしょう。

しかし、ビットコインも含めたデジタル化の利点として、全てのトランザクションを記録できるということがあります。
ブロックチェーンは、あらゆる取引の記録が残ります。それは、闇の世界の取引だろうと、地下ビジネスの取引でも同様です。つまり、個人も国家も脱税は不可能です。未来にはAIを使った不正監視の導入も可能になるでしょう。ビットコインを通した取引を自動仕訳をする仕組みなども実装されるかもしれません。

よくも悪くも、世界中の国民国家による完璧な監視が可能です。

日本の通貨「円」のデジタル化の方法

現状では、通貨の作成は、ビットコインをフォークして、仕様を固めていくのが一番確実です。通貨の流通量に関しては、ビットコインのようにマイニングで国家予算のコントロールをするのは現実的ではありません。もっと柔軟な仕組みにするべきです。

また、取引量も膨大なので、巨大なデータ量のテストが必要になります。試行錯誤が必要だと思います。

もし、案件として取り組む予定がある方は、僕も誘ってくださいw 面白そうなら時間を空けて参加したいので。

強くなる企業と個人

誰でも世界中で通貨が発行できるということは、それだけ企業や個人の力が強くなります。

信用力のある企業や個人は、自らが発行する通貨で取引を完結できるようになります。

一方で、これにより生じる格差については、議論が必要です。権力が収奪的になるとイノベーションが起きなくなり、国家が衰退します。そして、結局は信用力のある企業や個人も力を失います。
日本は社会主義的な側面が強いので、注意が必要だと思います。これらの考察について詳しく学びたい方は、「国家はなぜ衰退するのか」を読んでください。

この本は起業家や資本家を目指す人には必ず読んでもらいたい本です。

まとめ

仮想通貨は、今度どんどん広がっていくでしょう。金本位制からの移行のように、ある日突然置きかわる可能性もあります。

国民が認識しておくべきことは、実装で不正が行われないことに注視することです。例えば、ある条件を満たした取引だけトランザクションから見えないようにする実装ですね。これをやられたら監視できないので、合法的な税の抜け穴になってしまいます。

どんな技術でも扱うのは人です。移行するにしても、ニクソンショックの時のようにいきなりは避けて、徐々に全世界の国民に仕様(ドラフト)を公開して欲しいですね。

PICK UP オススメ書籍

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2016年9月3日土曜日

【Rails5.0.0】 rails5.0.0からrails5.0.0.1にセキュリティアップデートする

記事概要

rails5.0.0からrails5.0.0.1にセキュリティアップデートした時の方法をまとめた記事です。

環境

  • centos6.5
  • rails5.0.0→ rails5.0.0.1
  • ruby2.3.0
  • rbenv
  • unicorn

rails5.0.0.1

rails5.0.0.1はrails5.0.0の重要なセキュリティアップデートです。rails5.0.0を利用していれば、簡単にアップデートできます。
rails5.0.0を利用していない場合、このアップデートは不要です。

Gemfile編集

必要なのはGemfileの修正だけです。

{project_folder}/Gemfile

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '5.0.0'

↓

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '5.0.0.1'

gem 'rails', '5.0.0.1'に修正し、updateします。

terminal

// update
bundle update rails


Installing actioncable 5.0.0.1 (was 5.0.0)
Installing actionmailer 5.0.0.1 (was 5.0.0)
Installing railties 5.0.0.1 (was 5.0.0)
Using kaminari 0.17.0
Installing sprockets-rails 3.2.0 (was 3.1.1)

Bundle updated!

Rspecを実行します。

terminal

bundle exec rspec

Finished in 1 minute 33.89 seconds (files took 13.35 seconds to load)
201 examples, 0 failures,

動作に問題はありません。
しかし、以下の警告が出力されました。

terminal

DEPRECATION WARNING: Sprockets method `register_engine` is deprecated.
Please register a mime type using `register_mime_type` then
use `register_compressor` or `register_transformer`.
https://github.com/rails/sprockets/blob/master/guides/extending_sprockets.md#supporting-all-versions-of-sprockets-in-processors

Sprocketsが3.1.1 → 3.2.0にアップデートされたので、警告が表示されています。
sass-railsを更新することで対応できます。

{project_folder}/Gemfile

# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0.5'

↓

# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0.6'

もう一度updateします。

terminal

// update
bundle update rails

Installing sass-rails 5.0.6 (was 5.0.5)
Using web-console 2.3.0
Using teaspoon-jasmine 2.3.4
Bundle updated!

Rspecで再テストします。

terminal

Finished in 1 minute 20.77 seconds (files took 11.46 seconds to load)
201 examples, 0 failures, 5 pending

完了です。
あとはブラウザで必要なテストをしていつも通りリリースします。

まとめ

以上で、Rails5.0.0.1へのセキュリティアップデート作業は終了です。

定期的に更新していれば10分で完了するので、さっさとアップデートしてしまいましょう。

以上です。

PICK UP オススメ開発環境
PICK UP オススメ書籍

運営サイト(railsで作成しています)


関連記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加
Related Posts Plugin for WordPress, Blogger...