【ITニュース解説】Deriving Wallet Addresses Across Cosmos Ecosystem
2025年09月15日に「Dev.to」が公開したITニュース「Deriving Wallet Addresses Across Cosmos Ecosystem」について初心者にもわかりやすく解説しています。
作成日: 更新日:
ITニュース概要
Cosmosエコシステムでは、異なるチェーンのアドレスも元は同じ公開鍵から作られる。一つのアドレスから「コア公開鍵」を取り出し、別のチェーンの識別子(プレフィックス)と組み合わせることで、そのチェーンのアドレスを簡単に生成できる。`@cosmjs/encoding`ライブラリがその変換を支援する。
ITニュース解説
Cosmosエコシステムは、多数の独立したブロックチェーンが相互に連携し合う広大なネットワークである。これらの個々のブロックチェーンは「App Chain」と呼ばれ、それぞれが特定の機能やアプリケーションに特化して設計されている。このCosmosエコシステムで活動するユーザーや開発者にとって、複数のApp Chainにまたがるウォレットアドレスの管理は一つの課題となっていた。たとえば、あるApp Chainでは「cosmos…」で始まるアドレスを使い、別のApp Chainでは「osmo…」で始まるアドレスを使うといった具合に、一見するとそれぞれ異なるアドレスを持つように見えるため、自分のデジタル資産がどのチェーンのどこにあるのかを把握するのは手間がかかる作業だった。
しかし、最近、Cosmosエコシステム内で忘れられたトークンや早期のエアドロップを発見するためのウェブアプリケーション「tshue.app」が開発される過程で、このアドレス管理の課題を根本的に解決する重要な仕組みが明らかになった。それは、Cosmosエコシステム内のApp Chainで使われるウォレットアドレスは、見た目は異なっても、実はすべて「同じ一つの公開鍵(Public Key)」から派生している、という事実である。この仕組みがあるため、ユーザーがどれか一つのApp Chainにおける自分のウォレットアドレスを知っていれば、そこから他のすべてのApp Chainにおけるあなたのアドレスを導き出すことが可能になる。これは、根本となる情報が一つあれば、それを使って様々な形式の識別子を作り出せる、という画期的な考え方だ。
Cosmosエコシステムのアドレスは、共通して三つの主要な部分から構成されている。第一に「プレフィックス」である。これはアドレスの先頭に付く文字列で、そのアドレスがどの特定のApp Chainに属しているかを示す識別子として機能する。例えば、「cosmos」はCosmos Hubのアドレスを、「osmo」はOsmosisチェーンのアドレスをそれぞれ表す。第二に「コア公開鍵データ」がある。これは公開鍵の情報をバイト列(Uint8Array)で表現したもので、ウォレットの持ち主を特定する本質的な情報であり、アドレスを生成する際にどのApp Chainのアドレスであってもこのデータ自体は変わることがない。そして第三に「チェックサム」が存在する。これはアドレスの正当性を検証するための情報であり、アドレスの入力ミスなどによって発生する可能性のある不正なアドレスを検出する役割を担う。
このアドレス構造の利点を活用することで、あるApp Chainのアドレスから別のApp Chainのアドレスを効率的に生成するプロセスが確立される。具体的には、まず既存のウォレットアドレスから、アドレスの本質であるコア公開鍵データを抽出する。次に、その抽出したコア公開鍵データと、目的とするApp Chainのプレフィックスを組み合わせることで、新しいApp Chainにおける正しいウォレットアドレスを生成できるのだ。これは、共通のユーザー識別情報(コア公開鍵データ)に、それぞれのサービス(App Chain)に応じた接頭辞(プレフィックス)を付与して、固有のアドレスを作り出すようなものだと理解できる。
このようなアドレスの解析と生成を、プログラミングによって簡単に行うための強力なツールとして、Cosmos開発チームは「@cosmjs/encoding」というライブラリを提供している。このライブラリには、「fromBech32」と「toBech32」という二つの主要な関数が用意されている。「fromBech32」関数は、既存のCosmosアドレスを入力として受け取り、そのアドレスを構成するプレフィックスとコア公開鍵データを分離して取り出す役割を果たす。例えば、「cosmos…」で始まるアドレスをこの関数に渡せば、「cosmos」というプレフィックスと、それに紐づくコア公開鍵データが取得できる。
次に、「toBech32」関数は、この「fromBech32」関数で取り出したコア公開鍵データと、新しく生成したいApp Chainのプレフィックスを引数として受け取り、これら二つを組み合わせて新しい正しいウォレットアドレスを生成する。例えば、Cosmos Hubのアドレスから得られたコア公開鍵データと、「osmo」というプレフィックスを「toBech32」関数に渡せば、Osmosisチェーンにおける同じユーザーのウォレットアドレスが正確に生成されることになる。これにより、システムエンジニアは複雑なアドレス変換ロジックを自ら実装する手間を省き、効率的にCosmosエコシステム全体でユーザーのウォレット情報を管理したり、関連データを取得したりするアプリケーションを開発できる。
Cosmosエコシステムには非常に多くのApp Chainが存在するため、それぞれに対応するプレフィックスをすべて手動で把握し続けるのは現実的ではない。そこで、「chain-registry」というパッケージが非常に有用なツールとなる。このパッケージは、Cosmosエコシステム内の各App Chainに関する詳細な情報、特にそのApp Chainが使用するウォレットアドレスのプレフィックスの一覧などを網羅的に提供してくれる。これを利用すれば、プログラムから動的に目的のApp Chainのプレフィックスを取得し、前述の「toBech32」関数と組み合わせて使用することで、Cosmosエコシステム内のあらゆるApp Chainにおけるユーザーのアドレスを効率的に導出することが可能になる。
このアドレス導出の仕組みと、それをサポートするライブラリやツールの存在は、ユーザーが複数のApp Chainに分散した自分の資産を再発見したり、早期に配布されたエアドロップを見つけ出したりする「tshue.app」のような画期的なウェブアプリケーションの開発を可能にした。一見すると複雑に感じるCosmosエコシステムのアドレス管理も、その背後にある共通の原理と、それを支える技術的なツールを理解し活用することで、システムエンジニアはユーザー体験を大きく向上させる実用的なアプリケーションを構築できるようになる。これは、ブロックチェーン技術がより身近で使いやすいものになるための重要な進歩であると言えるだろう。