多くの人が仮想通貨の世界に入る際、基本的なこと――オンチェーンの秘密鍵・公開鍵、大手各公チェーン、取引所、ウォレットの関係――をあまり理解していません。私も長い間、それらのつながりが分からない時期がありました。今日は週末で暇なので、簡単で分かりやすい比喩で説明し、普及させたいと思います:

秘密鍵と公開鍵は、実際にはただの長い文字列です。簡単に言うと、秘密鍵=銀行口座のパスワード、公開鍵=銀行口座の口座番号、各種公チェーン=各銀行(たとえばビットコインチェーン=中国銀行、イーサリアムチェーン=工商銀行、bsc(バイナンス連携)=建設銀行)、取引所=資産を交換する両替商、ウォレットはホットウォレットとコールドウォレットに分かれます。違いはネットワークに接続されているかどうかです。スマホやPCなど、ネットに接続された端末にあるのがホットウォレットで、オフラインのハードウェアに保存されているのがコールドウォレットです。外部とのやり取りは、QRコードの読み取りやBluetoothでハンドシェイクします。このハードウェア上で署名の操作を行って初めて、資産を移すことができます。TPウォレットで販売されているkeyPalウォレットは、コールドウォレットです。

第一に、秘密鍵と公開鍵

秘密鍵xの不可逆暗号アルゴリズム=公開鍵(公開鍵はウォレットアドレスでもあります)。秘密鍵と公開鍵は1対1の対応関係です。つまり、1つの秘密鍵に対して1つの公開鍵が対応します。秘密鍵が分かれば公開鍵も分かりますが、暗号アルゴリズムは不可逆なので、公開鍵から秘密鍵を推導することはできません。つまり、各ウォレットアドレスには、それに対応する唯一の秘密鍵があります。たとえばbscウォレットにはそれぞれ1つの秘密鍵が対応し、ビットコインウォレットにもそれぞれ1つの秘密鍵が対応します。よって、たとえばバイナンスウォレットを秘密鍵ウォレットへ変換すると、多くの秘密鍵が表示されます。bscチェーンの秘密鍵、イーサリアムチェーンの秘密鍵、ビットコインチェーンの秘密鍵がそれぞれあります。これらの秘密鍵をたとえばTPウォレットにコピーしてインポートすると、それぞれのチェーンのウォレットアドレスが復元され、各チェーンのウォレット内にある資産を確認できます。

第二に、取引所・入金・出金・送金

取引所は大きな両替商のようなものです。あなたがある取引所で口座を開設すると、その取引所は自動的に各種公チェーンであなたの口座(つまり各公チェーンのウォレットアドレス。ウォレットアドレスは公開鍵に相当し、対応する秘密鍵は取引所が管理します)を開設します。これは、この両替商で口座を開設するのと同じで、両替商が各社の銀行口座(各種カード)を自動的に開設してくれるようなものです。たとえばビットコインウォレットアドレス=中国銀行の口座番号、イーサリアムチェーンのウォレットアドレス=工商銀行の口座番号、bsc(バイナンス・チェーン)のウォレットアドレス=建設銀行の口座番号のように、それぞれの口座番号には固有のパスワードが対応しており、それが秘密鍵です。ブロックチェーンの不思議な点は、誰がそのパスワード(秘密鍵)を持っているかで、ウォレット内の資産はその人のものになることです。つまり、口座のパスワードさえ分かれば、その口座の資産も自分のものになる、ということです。では「パスワードはコンピュータに解読されないのか?」という疑問が出ます。実際には可能性はほぼ0に限りなく近いです。これは6桁のような口座パスワードとは比べものになりません。秘密鍵は2^256、つまり10^77通りの可能性があります。世界で最も強力なスーパーコンピュータでも、1秒で10^18回計算できるとしても、この概念はどういうことかというと、1秒で1千万億(=10^15)まで数えても10^15です。つまり、このスーパーコンピュータで総当たり解読するには、おおよそ10^77 ÷10^18 = 10^59秒、つまり10^51年かかります。宇宙のビッグバンから現在までの時間はせいぜい10^10年程度ですので、宇宙のビッグバンからの時間よりも約10^41倍も長いです。解読するには、まず世界で最先端のスーパーコンピュータを借りて、そして小さな目標を立てる必要があります――宇宙のビッグバンよりも10^41年長く生きること。ちなみに、すべてのウォレットアドレスはオンチェーンで存在し、チェーン上には公開・透明という特徴があります。そのため、このウォレットアドレスをたとえばTPの観察ウォレットにコピーすれば、そのウォレットにどれだけ資産があるかを見ることができます。これは、口座番号を知れば、その口座にいくらあるか分かるのと同じです。これらのウォレットアドレスはすべてチェーン上で実行されます。つまり、入金や送金に関わるときにだけオンチェーンの処理が発生し、普段の取引はこの両替商の中で資産の両替(交換)を行うだけです。取引ごとに両替商は一定の売買手数料を徴収します。これが取引所の利益源です。よって取引所は中央集権的であり、チェーン上は非中央集権です。取引所自身には独自のローカル・データベースサーバーがあり、データベースには各ユーザーの資産情報が記録されています。これは両替商に台帳(帳簿)システムがあるのと同じで、データベースは次のような表になります。

ユーザーの一意なID番号に基づいて後続のデータ項目を管理します。たとえばユーザー1が取引するとき、現在は200枚のUSDTと5枚のBNBがあります。ユーザーはUSDTでBNBを買いたいと考え、BNBが1枚100Uだとすると、1枚購入した後、データベースに記録されるUSDTは100Uに変わり、BNBの数量は6になります。さらにたとえばユーザー1が欧意からトロン(波場)チェーン経由で出金・送金し、バイナンスに入金(チャージ)すると、全体の流れは実は銀行振込と同じです。まず送金先の銀行を選びます(つまり公チェーン)。次に口座番号を入力します(公鍵、ウォレットアドレス)。次に送金額を入力します(200元=USDT200)。最後に送金パスワードを入力します(私鍵)。これで送金プロセスが完了しますが、鍵の代わりに、例えば指紋や数値パスワードを使うだけです(システムが鍵を指紋に紐づけて対応させるため)。ユーザー1の200USDTがバイナンスのトロンウォレットに入ると、取引所はウォレットの保有資産が増えたのをスキャンして、ユーザー1のトロンウォレット内のUSDTを取引所自身のホットウォレット(両替商のカウンターに相当)へ振り替えます。同時に、取引所ローカルのデータベース帳簿上のUSDT残高が200増えます。すべてのユーザーのUSDT資金をこのホットウォレットに集約し終えると、一定時間ごとにコールドウォレット(両替商の金庫に相当)へ入金します。出金(払い出し)手順も同様で、ホットウォレットの資金が不足したときは、コールドウォレットから一部を取り出します。

つまり、取引所が作成したユーザープラットフォームの口座であり、すべてのユーザーのオンチェーンウォレットと秘密鍵を管理する機能を担っています。ここで問題が出てきます。1人のユーザーは複数の秘密鍵を持ち、何億人ものユーザーがいると、管理すべき秘密鍵の数は間違いなく膨大で、しかも紛失しやすいのです。これが、初期の取引所における秘密鍵管理の方式でした。現在の取引所では、HD階層(階層型)技術――樹形のパスで秘密鍵を管理する方法――が導入されています。以下の通りです:

取引所は「マスター秘密鍵+公チェーンのプロトコル番号+ユーザーの連番」という形式で末端の秘密鍵を生成します。秘密鍵はさらにウォレットアドレスを生成します。つまり、マスター秘密鍵さえ1つ覚えれば、すべてのユーザーの秘密鍵とウォレットアドレスが分かるのです。たとえば「マスター秘密鍵+公チェーンのプロトコル番号 m/44'/XX'/0'/0/ +ユーザーの連番」で、このチェーンの秘密鍵を生成します。ここでXX=0はビットコインチェーン、XX=60はbscとイーサリアムチェーンです。これらはどちらもEVMに属するため、実際にはこの2つの公チェーンで生成される秘密鍵・公開鍵・ウォレットアドレスは同じになります。これは、同じユーザーが開設する「建設銀行」と「工商銀行」の口座番号が同じであるのと同じです。ただし資産は2つの別の銀行に分かれているだけです。XX=195はトロンチェーンです。例を挙げると、CZはバイナンスの1号社員、何一はバイナンスの2号社員とします。何一がバイナンスで口座を開設すると、ビットコインチェーン上では「マスター秘密鍵+m/44'/0'/0'/0/2」でビットコインの秘密鍵が生成されます。この秘密鍵から公開鍵が生成され、つまり何一のビットコインウォレットになります。同様にbscチェーン上でも「マスター秘密鍵+m/44'/60'/0'/0/2」でbscチェーンの秘密鍵が生成され、その秘密鍵から公開鍵が生成され、つまり何一のbscウォレットになります。よってマスター秘密鍵を管理するだけで、その取引所のすべてのウォレットを管理できます。コールドウォレットの原理も同じで、リカバリーフレーズ(ミニシード)からマスター秘密鍵を生成し、このマスター秘密鍵をインポートすると、このユーザーがすべてのチェーンで持つ資産が得られるのです。