初心者にとって仮想通貨を難しくしているものの1つに、ウォレットがあるんじゃないかと思います。物理的、技術的な仕組みはともかくとして、例えばSuicaならば手元のカードにお金に相当するバリューが入っていると考えれば分かりやすいですね。銀行であれば、自分がお金を預けているのであって、通帳やキャッシュカードは、引き出したいと考えているのが「自分である」ことを証明するツールでしかありません。
では、仮想通貨(暗号資産)におけるウォレットとは何か。名前だけ聞くと、まるでここに仮想通貨のバリューが入っているように思えます。でも、それは違うんですね。
ウォレットはネットバンキングのアプリである
理解しやすくするために、技術的な正確性よりも、イメージしやすさを重視して解説を考えてみます。
ネット銀行、例えば楽天銀行に口座を持っていて、手元のiPhoneに楽天銀行アプリが入っていたとします。楽天銀行アプリからは、残高を確認したり、振り込みの指示が可能です。セキュリティの都合上、楽天銀行アプリは1つの端末にしかインストールして使えませんが、セキュリティの制限を緩和すれば、別のAndroid端末にもアプリを入れれば、同様に残高照会や振り込み指示ができることは想像できます。
実は、仮想通貨におけるウォレットは、このネットバンキングのアプリのようなものです。スマホにインストールするウォレットもあれば、Webブラウザの拡張機能として動作するウォレットもありますが、いずれも、その中にバリューが入っているわけではなくて、残高を確認したり振り込みを指示する機能だけを持ったものになります。
ブロックチェーンは銀行口座である
ではネット銀行に相当するものは何か。それが各仮想通貨のブロックチェーンに当たります。銀行では、預かったお金を残高としてデータベースに記録し、アプリなどから操作できるようにしています。
仮想通貨のブロックチェーンは、このデータベースそのものです。Bitcoinのブロックチェーンならば、対応するウォレットアプリから残高が確認でき、ほかの人の口座に送金=振り込みすることも可能です。
銀行口座は、国ごとに法律が違い、日本人が開けるのは基本的に日本の銀行口座です。ところがブロックチェーンには国籍がなく、世界のどこにいても誰であっても、同じような方法で口座を開くことができます。世界中で1つの同じ銀行のデータベースを使っているので、口座間の送金=振替も簡単にできるというわけです。
本人確認不要で即座に口座が開ける
銀行口座とブロックチェーンの最大の違いは何でしょうか。銀行に口座を開くには、住所氏名や身分証などを使い、自分が誰なのかを明らかにした上で、口座開設を依頼する必要があります。
一方で、ブロックチェーンの場合、ウォレットアプリをセットアップするだけで、口座を開くことができます。開くという意識がないほど、シンプルで即座に作ることができます。このとき、口座番号に相当するのが、受け取りアドレスになります。ぼくのEthereumならば、
0x7cD30B25F2ffF01FBcAf0295c5a840125fa97B18
が受け取りアドレス。銀行でいう口座番号ですね。本人確認は不要なので、1人で複数作ることも容易です。
どうやって本人であることを確認するのか
銀行の場合、口座の残高を確認したり振り込みするには、何らかの方法で、自分が口座保有者であることを証明しなくてはいけません。これはIDとパスワードだったり、キャッシュカードと暗証番号だったり、通帳と印鑑だったり、身分証明書だったりします。
一方でブロックチェーンの場合、その口座の所有者であることを証明するのは、秘密鍵と言われる文字列だけです。これを持っていれば、その口座から自由に送金ができてしまいます。秘密鍵は、ウォレットで口座を作成して口座番号にあたるアドレスを取得したときに同時に作られます。最近のウォレットでは、文字列ではなく、One Bird Triple Eagle……といった複数の単語を並べたパスフレーズの形になっていたりもします。
いずれにせよ、口座の所有者はこの秘密鍵を持っている人です。決して秘密鍵を漏らしてはいけないのは、こういう理由です。
また、コールドウォレットとかペーパーウォレットと呼ばれるものは、この秘密鍵を印刷したりして、金庫にしまっておくという保存法です。秘密鍵を使って送金などを行うにはウォレットに入力する必要があるので、ハッキングされたら一巻の終わりです。そのため、ネットからアクセスできない場所に、秘密鍵(といわれる文字列)をしまっておくわけです。
人間と結びつかない口座の面白さ
このように、仮想通貨はブロックチェーン上に作られた口座に保管され、その口座の所有者であることを証明するのは秘密鍵だけです。まったく人とは結びついておらず、秘密鍵を知っているかどうかが全てになります。
一方で、銀行口座は人と結びついています。何らかの手段で、口座保有者であることを証明できれば、口座の中身を自由にすることができます。これは、法人口座も同じで、法人が仮想的な「人」扱いされているから同じように運用できるわけです。
実はブロックチェーンにも法人口座のような存在があります。それが、Ethereumのようにプログラムを走らせることができるブロックチェーンで使われるコントラクトアドレスです。例えばDeFiのサービスを利用したい時などは、このコントラクトアドレス宛に送金を行います。このコントラクトアドレスはプログラムで管理されていて、例えば10日後にxxxのアドレスに送金する、などが決まっており、そのとおりに実行されます。
誰かの恣意的な判断ではなく、バグさえなければ、予め切れられたように動作するところが、スマートコントラクトの面白いところです。銀行に預けた場合、それは銀行が管理していて、銀行のミスや意図で失われることもあれば、逆に預けたお金に何かあっても銀行が保証してくれます。逆にスマートコントラクトの場合、プログラムのバグさえなければ、決められた通りの操作が行われ、そこに恣意的なだれかの意図が入ることもなければ、管理者もいないわけです。
これを面白いと思うか、不安だと思うか。預金封鎖みたいなことがあれば、自分の財産を自分で管理できることの良さも分かるんじゃないかと思います。