ソフトウェアにバグがあるのは仕方のないことなのか?

languages-pao

何もかもがひどいものだ。ほとんどのソフトウェアは、たとえそれがクリティカルなシステムソフトウェアだとしても、まるでダクトテープとプチプチとヘアピンで梱包されたスイスチーズの如く安全性の低いものだ。例えば先週の怖ろしくも興味深い投稿記事「How to Crash Systemd in One Tweet」(Systemdを簡単にクラッシュさせる方法)を見てみると良い。しかしそれはsystemdだけの問題ではなく、Linuxだけの問題でもなく、ソフトウェアだけの問題でもない;業界全体に問題があるのだ。私たちが自分自身に間違って教え込んできたきたのだ。他にやりようはない、と。

それでは、そのAndrew Ayerによる面白い投稿をもう少し詳しく見てみよう、なぜならこれはより大きな問題の見事な例となっているからだ。まったく「Yay non-determinism!(非決定性バンザイ!)」だ。

もしあなたが筋金入りのギーク(技術オタク)なら、自分で投稿全体を読んだほうがいいだろう;もしそうではない場合には…簡単に説明すれば以下のようなことだ、systemdはほとんどのLinuxディストリビューションの不可欠なコンポーネントであり、その大切な役目の1つとして、システムを起動するために使用されている。Ayerはそれをクラッシュさせるためのとても簡単な方法をみつけて、それに哲学的な考察を行った。ということである。

このバグによってすぐに喚起される疑問は、一体どういった品質保証プロセスが、このような単純なバグを2年以上に渡って見逃していたのだろうかというものである。[…]systemdの問題はこの1つのバグよりも遥かに深いものだ。systemdは、設計に欠陥があるのだ。バグのないソフトウェアを書くことは非常に困難なことだ[…]良いプログラマはバグのないソフトウェアを書くことの難しさを知っているし、バグの可能性を最小にするか、少なくともその影響を低減させる方向へソフトウェアを設計することの重要性を理解している。systemdの開発者たちは、こうしたことを理解していない。不必要な複雑性を膨大に詰め込むことを決定し[…]メモリ安全ではない言語で記述した。

私が思うに、最後の点がキーとなる大きなポイントである。何もかもがひどいものだ、なぜなら私たちが今でも使っている基本的なツールは、使われる際に、必然的にひどいものを作り出してしまうような欠陥を抱えているのだ。こうした適用は、systemdのような低レベルのコンポーネントから、最近大規模なDDoS攻撃の奴隷として使われたカメラや他のIoTデバイスの事例 ‐

– そして1億5000万ドルが失われたイーサリアム上のDAOの大惨事(実際にはその後の対応で経済的損失は防がれたが技術的、倫理的に大きな禍根が残された)のような高レベルのSF的抽象世界に至るまで、広く行われている。あまりにも長い間、ほとんどすべてのソフトウェアがバグを持ち安全ではないことに慣らされてきて、私たちはこれがソフトウェアの自然な姿だと思うようになっているのだ。しかし、この学習性無力感(長期にわたってストレスの回避困難な環境に置かれたために、その状況から逃れようとする努力すら行わなくなること)は正しくない。すべてがひどいものである必要はないのだ。

原理的には、コードは形式検証(formal verification)を用いて正しいことを証明することができる 。これはとても困難で、時間もかかり、常に実践するには現実的ではないものである;しかし、長期間に渡って何百万という機械を制御するクリティカルなソフトウェアの話をしているときには、または数百万ドルもの投資を行おうとしている際には、少なくとも考慮すべきものである。

これよりは苦労と厳密さが少なめで、ひいてはより有望なものの1つはlangsec構想だ:

言語-理論的アプローチ(LANGSEC)が関心を寄せているのは、ネットワークスタックや、その他のソフトウェアスタックの全ての階層における、入力の取扱いに対するアドホックなプログラミングが引き起こす、インターネットの非安全性の広がりである。LANGSECは、信頼できない入力を取り扱うソフトウェアを、信頼できるものにするための唯一の道は、すべての正しい或いは期待される入力を形式言語として取扱い、それぞれの入力処理ルーチンを、その形式言語への認識装置であるように取り扱うことだ、と想定している。

…このようなやりかたは着実に現実世界に近付いている。そしてフランスのセキュリティ会社Prevotyのような仲介者に依頼すれば時期尚早ということもない。

前述したように、プログラミング言語自身が大きな問題だ。膨大な経験が明らかにしたのは、プログラマたちにメモリ安全でない言語を使って安全なコードを書くことを期待するのは、現実的ではないということだ(私の昨年の記事「 Death to C(Cに死を)」が書かれたのはそれが理由だ)。しかし希望はある!破滅の予言をしたあと、Andrew Ayerはこのように注意を促している「しかし、私には改善の兆しが見えている。GoとRustはこれまでCで書かれていたようなシステムソフトウェアを書くための注目すべき安全な言語だ」。

最善は善の敵である(最初から最善であることに拘ると、次善にすらたどり着けない)。私たちは現在の不名誉な状態から一足跳びに名誉ある状態に行くことはできない。しかし産業としては、少なくとも進むべき道を設定しよう。まず最初に、より良い言語でシステムコードを書くことへ向かおう ‐ これはセキュリティスピードを改善する筈だ。 そして、ミッションクリティカルなコードの形式仕様記述と検証に向かおう。

そしてレガシーコードとレガシーシステムに捕らわれているときには、もちろん今でもそれが大部分の時間を占めているのだが、それを徐々にでも良くして行くことを学ぶために、プログラミングの原則と基礎に注目し、最大限の努力をしよう。(例えば、JavaやC#のプログラマたちは、私の昔の同級生によって書かれた素晴らしい書籍であるPractice your JavaPractice Your C#を読むことを検討した方が良い)。「ひどい状態」を避けられない事態だと受け入れてはならない。たとえそれが「現在の」状態だとしても。よりよい状態を目指して努力しよう。

もちろん、業界の多くが伝統的なプログラミングから離れて、様々なフレーバーのAIに向かって移行しようとしているのを見ながら、私はこれを書いている。私たちはどのように「畳み込みニューラルネットワーク」をきちんと定義すれば良いのだろうか?そこへ流し込む現実世界のデータに対して、どのようLANGSECを適用すれば良いのだろうか?これらのことを、どのように量子コンピューティングに適用するのだろうか?(もしそんな疑問を抱くのは時期尚早だと思うなら、私の友人のChristineによる、極めてクールな5ビット量子コンピューターシミュレーターをチェックしてみると良い。 Github上でオープンソースとして公開中だ)。

ああ、いや、私は最後のいくつかの疑問に対する答を持っているわけではない。しかし少なくとも問いかけることから始めよう!そしてその間に、従来のプログラミングの修正を最終的に始めることができるように、できることは何でも試みよう。それは非現実的な夢ではない。それは実際に可能なのだ。そして、もしそれを受け入れたなら、すべてが良なって行くことが可能だろう(私はそうなると信じている)。

訳注:本記事の原タイトルは「Learned helplessness and the languages of DAO」というものである。「学習性無力感とDAOの言語」という直訳になるが、「学習性無力感」の方は文中に説明がある。「DAOの言語」の方は古いSFである「The languages of Pao」(アイキャッチ画像の書籍)のタイトルをもじって、最近のソフトウェアバグに起因する有名な事案の「イーサリアムのDAO」と関連付けている。

[ 原文へ ]
(翻訳:Sako)

コードで定義された“ほぼ”自律的で民主化されたベンチャーファンド、The DAOが1.3億ドルを集めて始動

synergistic

ブロックチェーンと仮想通貨という議論が多い分野で、巨額の資金と注目を集めて新しい実験が始まった。その名をThe DAOという。ドイツのスタートアップSlock.itが始めたこの取り組みは、プログラムコードで定義された“ほぼ”非集権的で自律的で民主的なベンチャーファンドとしての活動を開始しようとしている(どこが“ほぼ”かは後述する)。2016年5月28日までにTHe DAOは1億3232万ドル相当の資金を集めた。これはクラウドファンディングのプロジェクトとして現時点での史上最高額となる(Wikipediaによる)。

The DAOについてはUS版TechCrunchの記事(日本版では未訳)も出ているが、ここでは最新情報も入れて、日本の読者向けに最初から説明することにする。

DAOはコードで定義された非集権で自律型の組織

今回取り上げる「The DAO」の前に、定冠詞TheがつかないDAO(Decentralized Autonomous Organization)の話をしておきたい。これは、その略語から分かるように非集権で自律型の組織といった意味の造語だ。「ビットコインのエコシステムは最初のDAOである」という「ものの言い方」もある。例えばビットコインのエコシステムは、「マイニングによるビットコインネットワークの維持と、それに対する報酬(マイニングで得られるビットコイン)の受け取り」という仕組みで回っている。人間の経営者、管理者や明文化されたルールがなくても、ビットコインのプログラムコードに内在する決まり事と、そして人間を動かすための経済的インセンティブによって事業が進んでいる。このような事業の自律化、非集権化の枠組みを指す言葉がDAOだ。最近の文脈では、主にブロックチェーン技術Ethereumのスマートコントラクトを活用したDAOに関する議論が中心だ。

今回の記事で取り上げるのは定冠詞が付く “The DAO” は、定冠詞が付かないDAOとは違い、ドイツのスタートアップ企業Slock.itが作り上げた非集権的で“ほぼ”自律的に機能するベンチャーファンドを指す言葉だ。“ほぼ”が付くのは、後述するように人間のスタッフであるキュレーターが一部の管理を担うからだ。

The DAOの開発元であるSlock.itのもともとの事業は、Ethereumで制御するスマートロックによりシェアリングエコノミーを実現するというものだ。この事業は、今ではThe DAOの「プロポーザル」の一つだ。

Slock.itは、自社の事業資金を直接クラウドファンディングで集めることもできたが、そうではなくThe DAOを開発した。ベンチャーファンドを立ち上げて、そのベンチャーファンドの投資対象として自社の事業を提案する形をとった。風呂敷が大きい方が、より大きな資金を集めることに結びつくと考えたのかもしれない。

Slock.itが書いたThe DAOのコード “Standard DAO Framework” はGitHub上でLGPLライセンスにより公開されている。つまりオープンソースソフトウェアである。このコードを参考に新しいDAOのコードを書いて提案する可能性が誰にでも開かれている。ここは素晴らしい構想だと思う。

投資案件の提案が続々と集まる

記事執筆時点で “Under development” の段階のプロポーザルが13種類あった。その中でもっとも賛成意見が多いプロポーザルは、オライリーの書籍 Mastering Bitcoin の著者Andreas Antonopoulos氏が提案した “Decentralized Arbitration and Mediation Network” だ。最も反対意見が多いプロポーザルは、皮肉なことにThe DAO開発元であるSlock.it自身が提案した “Slock.it Universal Sharing Network / Ethereum Computer proposal v0.1” である。

この記事を書いている間にも、新しいプロポーザルがどんどんプロポーザルパイプラインに登録されつつある(ここを参照)。これは面白い見物だ。アイデア投票のソーシャルサービスのようでもあるが、過去のサービスとの大きな違いは総額1.3億ドル相当の資金をどのプロポーザルがどれだけ獲得するかという競争の要素があることだ。

13323349_10154170585307768_1352103275717934506_o

13320437_10154170585297768_3040866104208284035_o

仮想通貨のテクノロジーでベンチャーファンドを小口化、証券化

The DAOの仕組みを説明するために、少しだけ「株式会社」の話をさせてほしい。株式会社は、事業を遂行する会社の資本金、リスクとリターン、ガバナンスを「株式」の形で証券化し、多くの人々に分割する仕組みだった。株主はマネーを払い込んで株式を受け取り、会社のガバナンスに関与する権利を得る。株式を売却してキャピタルゲインを得ることもでき、株式を持ち続けて配当を受け取ることもできる。そしてベンチャーファンドは複数のスタートアップの株式に分散投資するものだ。

株式会社が成立する根拠は、法と契約、つまり自然言語で書かれた人間のためのルールだ。一方、The DAOが成立する根拠は、Ethereumのブロックチェーン上で自動執行される改ざんできないプログラムコード──スマートコントラクトである。

The DAOは、Ethereumのスマートコントラクトで記述した「DAOトークン」としてマネー、リスク、リターン、ガバナンスを小口に分割した。ビットコインは採掘にコストがかかり発行量が限られるという点でよく「金貨」に例えられるが、DAOトークンは複数のスタートアップ企業に分散投資するベンチャーファンドを小口化した証券に例えることができるだろう。

この2016年4月30日から5月28日まで続いた「DAOクリエーション」と呼ぶプロセスにより、多くの人々がEthereumの仮想通貨Ether(ETH、関連記事)建てでマネーを振り込み、引き替えにDAOトークンが発行されている(私も参加してみた)。集めた金額はEther建てで1207万ETH、米ドルに換算すると1億3232万ドル(5月28日時点)となる。発行されたDAOトークンの総数は11億7278万となる。

DAOトークンホルダーは、投資案件の投票に参加する

誰もがDAOトークンホルダーになり、DAOの推進するプロジェクトに投票し、投資し、リターンを受け取ることができる。

DAOトークンホルダーは、新たなThe DAOに寄せられたプロジェクトの提案(プロポーザル)への投票権をもつ。投票により認められたプロジェクトには資金が集まり、そのリターンの一部はDAOトークン所有者に配分される。株式会社との大きな違いは、一連のプロセスに対する人間の関与を最小限に留めていることだ。The DAOではキュレーターと呼ばれる人々がプロポーザルの管理に関与する。キュレーターの役割は「DAOトークンの51%を買い占めて100%のトークンを引き出す攻撃を防ぐため」と説明されている。Ethereumの提唱者であるVitalik Buterinを筆頭に、Ethereum Foundationのメンバーらがキュレーターに名を連ねている。人間が関与することから、The DAOは“ほぼ”自律的なDAOだといえる。

日本からもいち早くDAOトークンを扱う取引所が

DAOトークンは、仮想通貨取引所で売買することができる。日本で活動している取引所としては、ビットコイン取引所のKrakenがDAOトークンの取引を開始し、そしてレジュプレスが運営するビットコイン取引所/販売所coincheckもDAOトークン売買ができるようにした(発表文)。DAOトークンの売買ができるようになった5月28日18:00(日本時間)から数時間で取引や売買の機能追加を施したスピード感はすばらしい。

記事を書くにあたり、手持ちのDAOトークンをそれぞれの取引所に送ってみた。使い勝手は仮想通貨Etherの送金とだいたい同じだ。Ethereumアドレスを指定して送金すると、10分間ほどで確認の手続きが終わる。ビットコインの送金では6回の確認を待つのに約1時間か要するが、それよりずっと短い時間で送金が終了する。

The DAOは不完全かもしれないが、ガバナンスに参加することは可能だ

前述したように、ビットコインが仮想通貨版の「金貨」だとすれば、DAOトークンはベンチャーファンドを小口化したものだ。値上がりを期待してホールドしてもよく、売却してお金に換えてもいい。これから名乗りを上げる「プロポーザル」への投票権を得ることができ、利益が上がるなら配当に預かることもできる。DAOトークンホルダーはプロポーザルへの投票により、The DAOのガバナンスに参加することができる。

The DAOは、見方によっては、新興の投資ファンドが、仮想通貨による資金調達により、IPOもM&Aもなしに1億3232万ドルを手にした事例といえる。ガバナンスという観点では、The DAOの運営はDAOトークンホルダーの総意を反映した民主的な枠組みに基づく(ここが素晴らしいと思う人もいれば、不安を覚える人もいるだろう)。The DAOが今後も成長を続けていくならば、ひょっとするとスタートアップやベンチャーキャピタルのエコシステムが様変わりするかもしれない。

The DAOのコードはオープンソースとして開示されてはいる。だが、The DAOの仕掛けになんらかの欠陥──例えば法的な不備や、キュレーターを含むプロセス上の不備など──があるのかないのか、ここは議論の余地があるし、部外者からはなかなか分からない部分だ。The DAOが自分の資金を託すに足りる相手なのかどうかという判断材料は、株式や投資信託のような慣れ親しんだ投資商品に比べると乏しい。新しい試みなので過去の実績から判断する訳にもいかない。

将来へのヒントとなりそうな話もある。The DAOへのプロポーザルの一覧には、セキュリティやガバナンスに関する提案がある。The DAOはベンチャーファンドである以前に、DAOトークンホルダーの合意形成およびThe DAO自身の完成度を高めるためのソフトウェア開発のための機関であることを求められているのかもしれない。

いろいろな議論はあるが、コードを根拠に1カ月で1.3億ドルを集めた頭がいい人々がいて、そこにアイデア(プロポーザル)を提案する人々も現れている。この連中が次に何をやらかしてくれるのか気になる。The DAOの運営が今後の仮想通貨やブロックチェーンの動向に大きな影響を与える可能性もある。注目しつつ見守りたい。

最後に大事な話を。今回の記事はDAOトークンへの投資を薦めるものではない。本文を読めばお分かりのように、非開示のリスクが存在する可能性もあるし、投資案件の情報もまだまだ不十分だ。現時点でのDAOトークンは、The DAOのビジョンに賛同し、投票によりガバナンスに参加したいと考える人にとって価値があるものだと考えている。