金融(Finance)と科学技術(Technology)を掛け合わせた「Fintech」というキーワードが注目されています。ITを駆使した「資産管理」や「決済」「会計」など、革新的なサービスが続々と誕生し、加えて、ビットコインを代表とする「仮想通貨」もよく聞かれることでしょう。
本稿では、ビットコインなどを支える「ブロックチェーン」やプログラム環境である「スマートコントラクト」を紹介し、なぜ注目されているのか、本当に安全なものなのか見ていきます。
ビットコインとブロックチェーン
ビットコインは、各国の中央銀行を介さずに、インターネット上で取引できる「分散型仮想通貨」です。これを実現するのが「ブロックチェーン」と呼ばれる技術です。ブロックチェーンは、実際には、「分散台帳」「P2P(ピア・ツー・ピア)」「トランザクション」「ブロック」などの要素から構成されているものと覚えておけばよいでしょう。
銀行のような特定の機関に管理権限が集中するのではなく、利用するユーザのコンピュータ上にも分散して管理されるのが特徴的です。また、図1のように、ブロックの状況なども公開されています(画面は2017年10月24日のもの)。
図1 ビットコインのブロックチェーン
昨今では、ビットコイン以外にも多くの仮想通貨があります。金融庁の金融機関情報ページでは、金融会社の項目に登録された「仮想通貨交換業者」を確認することができ、取り扱われる仮想通貨もビットコインだけではないのがわかります。
イーサリアムとスマートコントラクト
イーサリアム(Ethereum)は、ビットコインの次に時価総額が大きい仮想通貨と言われています。送金など特定の条件下だけではなく、応用的にプログラムを実装できる「スマートコントラクト」開発ができます。例えば、地域通貨や電子クーポン、有価証券、電子チケットの偽造・転売防止などへの利用にも期待されています。
安全なの?
スマートコントラクトは、プログラミングするうえでフィールドや関数を持ち、イーサリアムのブロックチェーンネットワークに接続されたノード内の仮想マシン上で実行されます。
ただし、取り扱う内容からセキュリティに注意すべきことは言うまでもありません。実際に、スマートコントラクト開発で脆弱性を持ったプログラムに起因した被害事例は複数あります。例えば、昨年の「The DAO事件」では約52億円(当時)、今年7月の「Parityのマルチシグウォレット」では約34億円(当時)の被害がありました。
Webアプリケーションなどと同様に、脆弱性となりうるバグは、開発者が知らずに埋め込んでしまうものです。新しい技術ではなおさらでしょう。スマートコントラクト開発でも、これらに対処すべく、セキュリティプラクティスは日々蓄積されていますが、まとまったものを見る機会はなかなかないのが現状です。
『堅牢なスマートコントラクト開発のためのブロックチェーン[技術]入門』では、具体的なスマートコントラクトのセキュリティプラクティスのほか、脆弱性の仕組みや実際の攻撃内容などにも言及しています。どうぞご活用ください。