Toilを無くして徒然なるままに日暮し硯に向かひたい

生成AIアプリケーション開発などを行うエンジニアのブログです。

ブロックチェーンノード運用の苦労話

アドベントカレンダー

この記事はSRE Advent Calendar 2023 2日目の記事です。

1日目はしょっさんGitHubのorganization移行をやったお話でした。

転職しました

2023年11月30日で、暗号資産交換業者ビットバンクを退職し、12月1日にスリーシェイクに入社しました。

ビットバンクでは関係各位お世話になり、ありがとうございました。

スリーシェイクでは、皆様お世話になります。

SRE構築総合支援サービスを行うSreake事業部にて、これからガッツリとSREの世界で頑張っていきます!

日本のSREを盛り上げていきたいと思います。SREの皆様、よろしくお願いいたします!

これまでやってきたブロックチェーンのキャリアについて

私は、ビットバンクの前は、フレセッツという暗号資産交換所向けウォレットベンダーにいました。途中買収により、HashPortに。

暗号資産業界にかれこれ5年いて、ウォレットの新規開発フェーズだったフレセッツでの最初の1年を除いて、4年間はブロックチェーン領域のEmbeded SREをやってました。

この記事を書いているときは、スリーシェイクに入って1日目が終わったところであり、スリーシェイクでの経験で書くのが無理なので、 自分のキャリアの棚卸しも兼ねて、これまでのブロックチェーンのことを振り返ろうかな、と思います。

ブロックチェーンノード構築、運用はインフラエンジニアの仕事であり、SREの皆さんもやる機会があるかもしれないので、参考になれば幸いです。

ブロックチェーンノード

ビットコインイーサリアムなどの暗号資産(仮想通貨)について名前は聞いたことあるかな、と思いますが、 トランザクションやブロックのデータを蓄えている分散台帳です。

「フルノード」という言葉を聞いたことがあるかもしれません。ビットコインのフルノードの場合は、過去から全てのトランザクションとブロックデータを持っています。

イーサリアムなどの通貨によってはフルノードでも全てのデータを持っておらず、アーカイブノードが全てのデータを持っているなど名前が異なったりしますw

ここではブロックチェーンノードということにします。

ブロックチェーンノード運用の何が大変か

フレセッツに在職していた当時、同僚が書いたブロックチェーン徒然日記も併せてご覧ください。

インスタンスとコスト

ブロックチェーンノードというのはアプリケーションとデータベースを持っており、特殊なシステムと言えるかな、と思います。

CPU、メモリをくうて、でかいサーバーが必要です。

ブロックチェーンデータが大きすぎるため、AWSでいうとFargateは使えず、EC2を使う必要があります。

m5.xlargeとかxlarge、2xlargeなどでかいインスタンスを使用してコストもすごいです。

コストを少しでも抑えるため、適切なインスタンスサイズを模索するのも大事な仕事でした。

ビットバンクにいたときは、通貨数もどんどん増えて、通貨ごとに異なるブロックチェーンノードの種類もどんどん増えていきました。

個人でブロックチェーンノードを利用する際、ノード内のウォレットを使用したりしますが、 商用利用する際は、安全性を考えて、安全な設計のウォレットをノードの外部で動かします。

ブロックチェーンノードは参照のみでよいため、複数の開発環境のノードを1台にまとめて、 複数環境のウォレットからアクセスするなど、コスト削減も推進しました。

最近話題のFinOpsを実践できたとも言えます。

Gethが高負荷で落ちたり同期遅延

イーサリアム(Ethereum)のノードgo-ethereum(通称Geth)を2019年とかに運用していたときは、品質も悪く、 高負荷でプロセスが死んだり、ブロックの同期遅延が起こったりして大変だったな、と思い出しました。

あとは、Ver.の違いでチェーンの分岐が起こる事故起こったり、致命的なバグのHot-Fix版が出た数日後にバグを突かれてチェーンの分岐が起こったり。

なかなか大変でしたね。

ビットコインと同じくマイニングしてブロックを生成するPoWから2022年9月にステーキングしたバリデータノードがブロック生成するPoSに移行した後は安定したと思います。

Web3のプロジェクトとかやるとなると、Geth使うかもしれませんが、今はマシです。

Polygonなどのノードではデータが6TB

同じくWeb3のプロジェクトで、Polygonノードの運用とかやるなら大変ですよ。

ブロックチェーンデータが6TBとかあるので。。。

Gethの場合は初期から同期しても、インスタンスのサイズによりますが、1週間とかでできるものの、 Polygonの場合は永遠に終わらないので、 公式が配布しているSnapshotをダウンロードして展開してからプロセスを起動するのですが、 Snapshotのダウンロードだけで丸一日かかったりします。

これだけデータがでかいと途中でダウンロード失敗することもあり、やり直しが何回も発生して大変でした。

振り返って

ブロックチェーンノードの稼働自体は難しくないのですが、ブロックチェーンネットワーク自体がおかしくなると、 ウォレットの入出金を止める必要があったり、外乱も大きなシステムでした。

こんなじゃじゃ馬と格闘したのもいい経験です。

これからは

一旦ブロックチェーンは一区切りで、これからはスリーシェイクのSreakeにて、 kubernetes等を使用したクラウドネイティブなアーキテクチャを構成していき、効率的に信頼性を高める仕事をしていきます。

はてなブログを開設して1記事目が今回でしたが、今後も記事を増やしていきたいと思います。

ブロックチェーンでマニアックだったかと思いますが、最後までお読みいただきありがとうございました。

次回は

SRE Advent Calendar 2023 3日目はみゅーみくすさんのゆるやか成長スタートアップのEnabling SRE的活動です!