AWSの人気とブロックチェーン業界
ビットコイン研究所のメンバーの皆さんの中には、AWS(アマゾンウェブサービス)を利用してソフトウェアを開発した経験がある方がいるかもしれません。あるいは、初耳の方もいらっしゃるかもしれません。
今回の記事はもはやインターネットにとって非常に重要なインフラになっているAWSとブロックチェーン業界の関係について書きます。つい最近、8/23にAWSの東京リージョンを利用しているサービスが多数停止した問題が話題になりました。
この際、PayPayや大手スマホゲームを含む多くのアプリが数時間使用不可になりました。直接的な原因はデータセンターの冷房故障によるオーバーヒートだったそうですが、その影響の範囲からAWSを利用する企業が冗長化のためのコストをかけているかどうかを測り知ったり、AWSが提供する冗長性が十分かなどについて示唆のある事件になりました。
AWSは今やインターネットを支えるインフラ
AWSは通販で有名なアマゾンから派生したクラウドコンピューティングサービス会社で、クラウドの世界ではトッププレイヤーと言えます。データの処理や保存、配信からビジネスソリューション、VRにブロックチェーン(※)まで数多のサービスを提供していて、特徴としては「必要なときに、必要なだけ使えて、使った分だけ課金」という柔軟性が評価されています。
※今回の記事には関係ありませんが、AWSは現在Hyperledgerをサポートしており、将来的にEthereumのプライベートチェーンをサポートする予定みたいです。
そのAWSはクラウドインフラサービスの世界シェアが34%にも達する業界首位の企業です。2位のマイクロソフトが15%程度なので、AWSの圧倒的な人気が伺えます。このAWSには地理的に分散している22ヶ所の「リージョン」や、各リージョン内に分別されている合計69つある「AZ(アベイラビリティゾーン)」という概念があり、冗長化や効率的な運用のために大規模なアプリケーションやグローバルなアプリケーション、停止すると困るものなどは必要に応じて複数のリージョンやAZにまたがった設計をするのが正しい運用とされています。
これによってクラウドサービスに依存していても、万が一の障害発生時にも影響を食い止めることができます。しかし、今回の障害は東京リージョン内で複数のAZにまたがる「正しい運用」をなされたアプリケーションも免れなかったようで、AWSに対する信頼性が少し損なわれることとなりました。
そこで、ダウンタイムが許容されないブロックチェーン業界によるAWSの利用について確認してみました。
ブロックチェーン業界のAWS依存度
・AWS上のノード数(IPアドレスから推定)
AWSが使用しているIPアドレスの幅は決まっているので、そこから逆算して外部にIPアドレスを公開しているノードのうちAWSを利用している割合を計算することができます。Bitnodesによると、ビットコインのノードのうち8.89%にあたる848のノードがAWS上にあるようで、上位にはDigitalOceanなど他のクラウド・VPS系の会社の名前も並んでおり、合算すると多く見積もって30%ほどに達します。
注意点として、これは外部からの接続を許可しているノードのみの計算となります。また、VPNとしてAWSを経由させている場合などもカウントされるため、実際にAWS上にあるノードはもっと少ないと考えられます。
Networksタブを参照: https://bitnodes.earn.com/nodes/
・InfuraはAWSに依存している
イーサリアムのノードの維持管理が大変とされるため、多くの会社や開発者がConsensys社のInfuraというAPIを利用してイーサリアム上のデータにアクセスしています。InfuraはAWSに依存したサービスなので、冗長化の度合いによっては今回のような事件によって停止したり不具合が起こる可能性はあります。
冗長化するにはコストが大幅に増加することも多いので、2019年は年間1億ドルほどの赤字で運営される見通しであるスタートアップのConsensysの懐具合によるものと思われます。
AWSの障害で起こりうる影響
・トレードのボットがダウンすることによる影響
トレードに使われるボットの多くが24時間稼働するためにAWSまたはAWS上に展開される他社サービスを利用していますが、ダウンした場合甚大な影響が起こり得ます。
実際に今回、小規模な取引所でトレードをするボットがダウンしたり暴走した結果注文が滑りまくり、BTCが$1以下で約定するなどの被害が確認されました。https://www.coindesk.com/amazon-cloud-outage-causing...
・ノードの多くが同時にオフラインになった場合の影響
当然ですが、ノードのほとんどがAWS上にあるようなコインであれば、万一多くのノードが落ちたときネットワークへの影響が大きくなり、チェーン分岐などが発生する可能性があります。
また、PoS通貨などに至っては、他のノードが一定数オフラインになることでスラッシングを受けるリスクが上昇する可能性などがあるかもしれません。(PoSとスラッシングの仕組みにはあまり詳しくないですが、ノードが突然減るなどの例外対応は一般的に難しいと感じます)また、前述したInfuraに起こりうる障害もここに含むと思います。dAppのInfuraへの依存度がかなり高いです。
・追放される可能性
これは障害ではありませんが、例えば最近ではGitHubがイラン人ユーザーを追放するなど、アメリカの政治的な圧力によってウェブサービスの提供を限定する会社が増えてきています。他にも、2017年にはAWSや他のクラウド・VPS業者の新規登録でもらえる無料利用権を使って草コインをマイニングしていた人が多数いましたが、発見次第に排除されていました。排除の動きが通常のノードに及ぶ可能性もゼロではありません。
悪用の余地
・S2XノードのほとんどがAWS上だった(誰かによる偽装?)
[PROOF] More than 90% of S2X nodes are Amazon AWS instances
by u/loserkids in Bitcoin
2017年のSegwit2x騒動の際、ツイッターなどを見たところ実際のユーザーでSegwit2xをサポートしている人がほぼ皆無のようにも関わらず、急速にノード数が増加していく事態がありました。
増加したノードの90%以上がAWS上に展開されたものと判明し、Segwit2xの人気を偽装したい何者かによる量産が疑われました。ノードの運用コストは「無制限のインターネット環境」があればVPSやクラウドと比べて自宅で古いPCやラズパイなどを動かすほうが安上がりなので、クラウドに矢継ぎ早に多数展開される状況は不審です。
ここにもスモールブロックが分散性に優れる点が現れていますが、短期間であれば比較的少額の費用で上記のような工作が行えるため、ユーザーの意見はオンチェーンで単純にノード数を見るだけで完結しない難しい問題と言えます。
おわりに
今回の記事でブロックチェーン業界においてAWSがどのような使われ方をしているか、そしてそれがどのようなリスクをはらんでいるかなどを事例を交えて紹介させていただきました。
個人的にはクラウドサービスはアプリケーション構築の際にインフラの部分を気にしなくて良いので好きなのですが、冗長性まで考慮すると事業内容とコストのバランスを取ることが難しいと感じます。クラウドに頼らずラズパイなどでビットコインのノードが動かせるという価値は、分散性にとってはかなり大きな意味を持つと再確認できました。
関連記事
最新記事
読者になる
ビットコイン研究所の新着記事をお届けします。
ディスカッション