Mnemonic Phrase(ニーモニックフレーズ) と HDウォレットを理解して複数アドレスを活用しよう

wallet
Screenshot from cosmostation_Medium

本記事は、普段使っているウォレットの仕組みを各方面の記事からポイントを抜き出してまとめたものです。

ウォレット関連の頻出用語は、暗号資産保全の文脈で使われますから、例えばMaster Key(マスターキー)Mnemonic Phrase(ニーモニックフレーズ)といった用語は、”守るもの”という意味でパスワードと同じとして使われがちですが、厳密には違うの混同し易いな、と常々思っていましたし、私もよくわかっていませんでした。

ウォレット操作の実際においては、この辺りの知識がなくても問題なく操作できることが多いのですが、ウォレットアプリ画面の表記やメッセージが出て操作に行き詰まった時、”Advanced setting(高度な設定)”ボタンで先に進もうという時には、その単語の意味を抑えておけば、比較的容易に操作/対処できるようになるのでは?と思ったりもしています。

・Master Seed マスターシード
・Mnemonic Phrase ニーモニックフレーズ
・Master Key マスターキー=一番上位の親秘密鍵

といった用語や、その文字列を生成する方法や順番については

Cosmostation公式ブログ記事を。
https://medium.com/cosmostation/the-magic-behind-a-mnemonic-phrase-and-hd-wallets-let-us-explain-43d9c97f6098
(Cosmostation運営が執筆した記事ですからCosmostationを例に説明されておりますが、KeplrもHDウォレット仕様に準拠したウォレットです。)

・HDウォレット(Hierarchy Deterministic Wallet(階層的決定性ウォレット))
についてはLedgerのLEDGER ACADEMYの記事を。
https://www.ledger.com/academy/crypto/what-are-hierarchical-deterministic-hd-wallets

・Cosmos 固有のHDウォレット派生パス(m/44’/118’/0’/0)
については、Keplrの記事を。
https://medium.com/chainapsis/keplr-explained-coin-type-118-9781d26b2c4e
 

これらの記事から一部引用しならがらまとめた本記事が、普段使っているウォレット内部構造の理解を深める一助となれば本望です。


※当該和訳は、英文を和訳したものですので、和訳はあくまでも便宜的なものとして利用し、適宜、英文の原文を参照していただくようお願いします。

Mnemonic Phrase(ニーモニックフレーズ)とHDウォレット

Before I explain what a mnemonic phrase is, let us begin by acknowledging the relationship between a Hierarchical Deterministic Wallet and a master seed.

Mnemonic phrase(ニーモニックフレーズ)とは何かを説明する前に、まずHDウォレット(Hierarchical Deterministic Wallet)とMaster Seed(マスターシード)の関係を理解しておきましょう。

Master Seed マスターシード

A HD(Hierarchical Deterministic) Wallet is a wallet that can generate virtually infinite numbers of private/public key pairs with a single Master Seed.

With a master seed, you do not have to remember all the individual private keys for your wallets — all you have to remember(or write down) is the master seed to regenerate all the subkeys and restore the entire wallet.

HD(Hierarchical Deterministic)ウォレットとは
1つのMaster Seed(マスターシード)で事実上無限に
Private Key(秘密鍵)とPublic Key(公開鍵)のペアを生成できるウォレットのことです。

Master Seed(マスターシード)があれば、個々のウォレットの秘密鍵を覚えておく必要はありません。Master Seed(マスターシード)さえ覚えておけば(あるいは書き留めておけば)、すべてのサブキーを再生成し、ウォレット全体を復元することができます。

ですが、Master Seed(マスターシード)は、後述のとおり味気ない文字列ですから、覚えられませんよね。

A master seed is generated from a hexadecimal entropy that looks something like this.

0C1E24E5917779D297E14D45F14E1A1A

If an entropy is what I need in order to generate a master seed to access my master key, what is a mnemonic phrase?

Master Seed(マスターシード)は16進数のエントロピーから生成され、以下のような形になります。

0C1E24E5917779D297E14D45F14E1A1A

Master Key(マスターキー)にアクセスするためのMaster Seed(マスターシード)を生成するために必要なものがエントロピーであるとすれば、Mnemonic Phrase(ニーモニックフレーズ)とは何でしょうか。

Mnemonic Phrase ニーモニックフレーズ

Because memorizing a hexadecimal entropy is an inconvenient way to access your wallet, Bitcoin developers came up with a way to translate an Entropy into a more readable and easily recognizable form.

This is called BIP-0039.

16進数のエントロピーを記憶することは、ウォレットにアクセスするには不便な方法であるため、
ビットコインの開発者は、エントロピーをより読みやすく、認識しやすい形に変換する方法を考え出しました。

これはBIP-0039と呼ばれています。

BIPとは Bitcoin Improvement Proposals の頭文字をとった略で、Bitcoinの技術仕様ですね。

A mnemonic phrase consists of readable words. A user can easily write down or memorize these words to import a wallet.
Because of its convenience, the majority of cryptocurrency wallet providers support importing a wallet with a mnemonic phrase.

Mnemonic Phrase(ニーモニックフレーズ)は、読みやすい単語で構成されています。ユーザーはこれらの単語を書き留めたり、覚えたりすることで、簡単にウォレットをインポートすることができます。
その利便性から、暗号通貨ウォレットプロバイダーの大半は、Mnemonic Phrase(ニーモニックフレーズ)を使ったウォレットのインポートをサポートしています。

Mnemonicは、予め定義された2048語からなるリストから数式に沿ってピックアップされます。 複数言語で2048語のリストがありますが、英単語が標準的に使われていますね。 間違えないよう記憶・記録しやすいよう、文字数の多い英単語や似た英単語(build,built)は排除されかつ全て小文字のものを定義したようです。 Mnemonicはその順番も決まっていますから、正しいつづりと順番で書き留める必要があります。

As mentioned above, an Entropy is transformed into a mnemonic phrase for readability and better accessibility.
A a master key and an infinite number of sub private keys can be generated from this single mnemonic phrase when accessing HD wallets.
Simply put, individual private keys are “children” of a “parent” mnemonic phrase.

Now that we’ve covered what a master seed can do and what a mnemonic phrase is, let’s look at how exactly an entropy is turned into a mnemonic phrase.

前述したように、エントロピーは読みやすさとアクセスしやすさのためにMnemonic Phrase(ニーモニックフレーズ)に変換されます。
HDウォレットにアクセスする際には、このMnemonic Phrase(ニーモニックフレーズ)からMaster Key(マスターキー)と(事実上)無限のsub Private Key(=子秘密鍵)を生成することができます。
簡単に言えば、個々の秘密鍵は ニモニックフレーズを「親」とした「子どもたち」です。

さて、Master Seed(マスターシード)とは何か、
Mnemonic Phrase(ニーモニックフレーズ)とは何かを説明してきましたが、具体的にエントロピーがどのようにMnemonic Phrase(ニーモニックフレーズ)に変化するのかを見てみましょう。

以上の説明でMnemonicの正体がわかりましたね。 Mnemonicは Master Key(マスターキー)導出に必要なエントロピー(乱数)を表すものです。 なお、単語数が12(128bits)より24(256bits)のほうが、より強度が高まります。

Generating a Mnemonic Phrase ニーモニックフレーズの生成

Below is a step-by-step explanation of how a mnemonic phrase is generated from an entropy.

以下、エントロピーからMnemonic Phrase(ニーモニックフレーズ)が生成される仕組みを順を追って説明します。

How a mnemonic phrase is generated from an entropy. (Screenshot from Cosmostation_Medium)

Generating a mnemonic phrase begins with creating an entropy (128, 160, 192, 224, 256bits).

SHA256 hashing algorithm is applied to the entropy, and we create a checksum with the first 4 bits. The 4bit checksum is added to the entropy, which is then divided into 11bit length segments.

These 11 bit segments are then matched with words from the BIP39 English word list (2048 words).

Finally as a result, an entropy that looks something like this

FEE717B164F36BB660DE11B808842996

Turns into a 12 word mnemonic phrase that looks like this.

Year December Unable Size Cute Swamp Lock Season Retreat During Apology Code

Mnemonic Phrase(ニーモニックフレーズ)の生成は、まずエントロピー(128, 160, 192, 224, 256bits)を作成することから始まります。

エントロピーにSHA256ハッシュアルゴリズムを適用し、最初の4ビットでチェックサムを作成します。4ビットのチェックサムはエントロピーに追加され、11ビットの長さのセグメントに分割されます。

この11ビットのセグメントをBIP39の英単語リスト(2048語)の単語と照合します。

最終的に、次のようなエントロピーが得られます。

FEE717B164F36BB660DE11B808842996

(このエントロピーを区切ったうえで単語リスト索引から、)次のような12語のMnemonic Phrase(ニーモニックフレーズ)に姿を変えます。

Year December Unable Size Cute Swamp Lock Season Retreat During Apology Code

ハードウェアウォレットLedger Nanoシリーズは、専用チップでこのエントロピー生成(乱数発生)からMnemonic導出、さらにマスターキーである秘密鍵の保存までオフラインで実行してくれます。

So, now we have a mnemonic phrase derived from an entropy. When accessing your wallet on Cosmostation, this mnemonic phrase is used to generate a master seed which is then used to generate a master key.

This master key is the root private key to all of your wallets! Let’s look at the process below.

これで、エントロピーに由来するMnemonic Phrase(ニーモニックフレーズ)が出来上がりました。Cosmostationでウォレットにアクセスする際、このMnemonic Phrase(ニーモニックフレーズ)はMaster Seed(マスターシード)の生成に使用され、Master Key(マスターキー)の生成に使用されます。

このMaster Key(マスターキー)が、すべてのウォレットのroot private key(根幹となる秘密鍵=親秘密鍵)となります!

ソフトウェアウォレットで上記一連の処理をしたならば、その重要な秘密鍵がソフトウェア内に保存されることになります。少額ウォレットなら良いですが、多額の場合はセキュリティ驚異に対する防御力を高める為にメルハードウェアウォレットを使うのが一般(常識)です。

Mnemonic Phrase(ニーモニックフレーズ)と秘密鍵の関係

A lot of people may misunderstand the relationship between a mnemonic phrase and a private key. Some even say that a mnemonic phrase can be derived from a private key — this is absolutely the opposite of what’s true.

Once more, let’s look at the process in which a private key is generated in a HD wallet.

1. Generating an entropy (128, 160, 192, 224, or 256bits)
2. Generating a mnemonic phrase from the entropy
3. Generating a master seed from the mnemonic phrase
4. Generating private key from the master seed

As you can see in the steps above, a private key is generated from a mnemonic phrase, not the other way around — this process cannot be reversed.

多くの人が、ニーモニックフレーズと秘密鍵の関係を誤解しているのではないでしょうか。
中には、「ニーモニックフレーズは秘密鍵から導き出せる」と言う人もいますが、これは全く逆の話です。

もう一度、HDウォレットで秘密鍵が生成される過程を見てみましょう。

 1. エントロピー(128、160、192、224、256ビット)を生成する。
 2. エントロピーからニーモニックフレーズを生成する
 3. ニーモニックフレーズからマスターシードを生成する
 4. マスターシードから秘密鍵を生成する

上記の手順でわかるように、秘密鍵はニーモニックフレーズから生成され、その逆はありえません。

HDウォレット

KeplrやCosmostaionウォレットはBIP-44に従ったHDウォレット(階層的決定性ウォレット)です。

HDウォレットは1つのシードで、BIP-44で定義されたCoin Typeの暗号資産アドレスをほぼ無限に管理できます。

つまり、ATOMやOSMOに限らずBTCやETHなどのトークンも1つのシード、言い換えれば1つのLedger Nanoで管理できることになります。

Accessing HD wallets with a mnemonic phrase, Cosmostation(Screenshot from Cosmostation_Medium)

上図は、Mnemonic Phrase(ニーモニックフレーズ)から導出されたMaster Key(マスターキー)でHDウォレットの階層へアクセスしますよ、という図です。

この広大なアドレス空間の中で、自分の鍵で管理するアドレスはどれか?
という道順(path)を5階層に区切ったフォーマットがBIP-0032で定義されています。

m/44’/118’/0’/0/0

上記のPath Levelは Cosmosのアドレス空間を意味します。

フォーマットは以下のように定義されています。

m / purpose’ / coin_type’ / account’ / change / address_index

m
 マスター鍵を意味する”m”固定値になります。

purpose
 BIP-43により、BIP-44準拠であることを示す”44″固定値となります。

coin_type 
 暗号資産ごとにBIP-44で定義された数字がセットされます。
 Cosmos hub(osmo/regenといったCosmos圏トークンも含む)の場合は”118″がセットされます。

account
 寄付口座、貯蓄目的、共益費の口座のように数字を決めて使い分ける想定で、0から1ずつ数字を大きくしていくことがお作法

change
 定数0が外向けに、定数1が内部用(お釣り用のアドレス)として使われる。
 🐵定数0としておいたほうが良さそうです🐵

address_index
 追加口座番号を数字0から1ずつ数字を大きくしていくことがお作法

HDウォレットの HD Derivation Pathを指定しないかぎり

KeplrもCosmostationも以下の Path Levelで導出されるアドレスを使うことになっています。

m/44’/118’/0’/0/0

住所の番地のように捉えるとわかりやすいですね。 広大なアドレス空間に区画を設け、それぞれに番号を振っているのです。

Cosmos hubの118’番地までは与えられており従う必要があるので、その先のアドレスを指し示す区画を自分が好きなように決め、増やすことができます。

さきほど Path Levelの各階層の意味を書きました通り
スラッシュで区切られた一番最後のaddress_indexの数字を0以外で指定すれば、その数字で導出されるアドレスを作ることができる、つまり用途ごとのアドレスを増やして使い分けることができますよね?

 

例えば

address_index を 以下のように、運用種別ごとに自由に定義することができます。

 m/44’/118’/0’/0/0 は ステーキング用
 m/44’/118’/0’/0/1 は LP用
 m/44’/118’/0’/0/2 は Liquid Staking用
 m/44’/118’/0’/0/3 は Lending用

運用方法ごとに収益評価しやすくなりそうですね

ついでに

 m/44’/118’/0’/0/4 は iCNS等のネームサービス紐付け用

として、外部公開用のアドレスを作っておくのもアリですよね🐵

上記は、例としてdefaultで作成されるアドレス"0"に対し、さらに4つのアドレスを作っています。 仕様上は無限に(といっても2の512乗個)作れます。

account を以下のように、利用主体別に定義しても良いですね。

 m/44’/118’/0‘/ は 個人ウォレット
 m/44’/118’/1‘/ は 自分の会社用(法人のウォレットとして)

では、どうすれば別のアドレスを作ることができるのか?ということで

 機能拡張版Keplr
 Ledger Nano X

の組み合わせを例に以下へ手順を説明します。

Keplrはハードウェアウォレットを使わずとも、HDウォレットのPath Levelを設定することができますが、小口資金用途に留めるべきですね😅

HD Derivation Pathを設定して複数アドレスを作ろう

HDウォレットの特徴でもある、階層構造を利用し
今回は、Path Level5階層目の address_indexを1つ追加指定し、Ledger Nano Xを接続することでアドレスを導出します。

機能拡張版Keplrを開き、赤枠内”人形”アイコンをクリックします。

次に、赤枠内”+Add Account”ボタンをクリックします。

ブラウザ画面に、内部ページが表示されますので
赤枠内”Connect Ledger”ボタンをクリックします。

次に、赤枠内に今回作成するアドレスの名前をつけます。
今回は、そのままHD Derivation Pathを含めた名前としました。

そして、青枠内”Advanced”をクリックします。

HD Derivation Path、つまり前述のPath Levelを任意指定できる設定画面が表示されます。
赤枠内5階層目を”1″にします。

接続したLedger NanoにPINコードを入れ活性化させ、
NanoにインストールされているCosmos appを起動させた後
Nextボタンをクリックします。

間もなく、設定完了します。
これで、指定したHD Derivation Pathに応じたアドレスがLedger Nano本体の秘密鍵から導出されます

赤枠内に新しいアカウントが作成されていることが確認できます。
アカウント名の下に、HD Derivation Pathも表示されていますね。

最後に、Cosmostaion記事の締めくくりのコトバに共感したので、紹介します🐵

Most cryptocurrencies are not managed or operated by centralized organizations.
The end user must always take caution in taking every measure to best protect his or her assets.

In order to do so, you must have a through understanding of the wallet you are using and the mechanism behind key management.

 

暗号資産の多くは、中央集権的な組織によって管理・運営されているわけではありません。
エンドユーザーは、自分の資産をしっかり守るために、あらゆる手段を講じることに常に注意を払わなければなりません

そのためには、使用しているウォレットや鍵管理の仕組みについて、しっかり理解することが必要です。

そして、毎度繰り返しとなり恐縮ですが
中長期保有が前提となるステーキング運用などは ハードウェアウォレットでの
Master Key(秘密鍵)保管を徹底しましょう!!

そして、そのMaster Keyを導出するMnemonic Phrase(ニーモニックフレーズ)は書き留めて安全な場所に保管しましょう🐵

Ledger Nano S Plusを安心して購入できるLedger社公式ショップのご案内

本サイトでは、Keplrウォレットと好相性なLedger Nano S Plusを安心して購入できるLedger社公式オンラインショップを紹介しております。

👇カラーも選べますし、初めてのかたも、すでに持っていれば予備として、この機会に購入をご検討いただけますと幸いです。2つ以上買うと送料無料ですよ!😊

タイトルとURLをコピーしました