とってもやさしいビットコイン

とってもやさしいビットコイン

ビットコインの知識が全くない初心者の方でもビットコインがどういうものなのか分かりやすく理解できるブログを目指してます。

ビットコインの軽量クライアントとは

f:id:jyutakugyoseiku:20161130165645j:plain

 

 

 

 

ビットコインにはノードと呼ばれる参加者がいます。ノードはフルノードと呼ばれる全てのビットコインブロックチェーンを保存しているクライアントがいますが、段々とブロックチェーンが増えて容量が大きくなっていくと全てのブロックチェーンを保存しておける人が少なくなっていきました。そこで登場するのが軽量クライアント(SPVクライアント)です。軽量クライアントとは何か、分かりやすく解説していきたいと思います。

 

 

 

軽量クライアントとは

 

ビットコインは全てのブロックチェーンを保有するフルノードが沢山存在し、お互いに接続しあう事でブロックチェーンが更新され公開されています。(フルノードについてはこちら⇒ビットコインのフルノードとは? - とってもやさしいビットコイン

しかし、7年も経つと全てのブロックチェーンはずっと残されていくのでかなり膨大な量になっていきます。そこで全てのブロックチェーンを持っていなくてもビットコイントランザクションを利用できるような「軽量クライアント」というものが登場しました。

 

では一体「軽量クライアント」(軽量ノード)とはどのようなものなのでしょうか。

 

軽量ノードはビットコインウォレット等に利用されております。これはビットコインウォレットのような持ち運びをしたい端末(スマホタブレットなど)で利用できるように開発されました。このような端末では保存容量が限られているためにフルノードと同様に全てのブロックチェーンを保存しておく事などできません。ですので皆さんが主に目にするものは現在ではフルノードではないでしょう。

 

ルノードが全てのブロックチェーンとトランザクションビットコインの個々の取引)を保存しておくのに対して軽量クライアントと呼ばれるものはブロックチェーンは保存しますがトランザクションは保存しません。そうすることによって容量がかなり抑える事が可能になります。

ブロックチェーンのブロックは、前のブロックと繋がっていますので(だから「ブロック」の「チェーン」と呼ばれます。ブロックチェーンについてはこちら⇒ブロックチェーンをちょっと詳しく!① - とってもやさしいビットコイン)ブロックの頭の部分を見れば前のブロックと繋がっている正式なブロックかどうかが確認できます。

 

簡単に言うとこのような方法でトランザクションを抜いたブロックチェーンのみを保存することで軽量クライアントは容量の軽量化に成功しております。

 

軽量クライアントのトランザクション

 

しかし、これだけでは今までのトランザクションを確認できない為に軽量クライアントではトランザクションを検証できずそのビットコイントランザクションが二重支払いになってしまう可能性が起こってしまいます。全てのトランザクションを確認できない為に「使おうとしているビットコインの所有権が本当にその人にあるのか?」という疑問に答えることができないという事です。(ビットコインの所有権の証明方法⇒ビットコインの所有権「UTXO」とは? - とってもやさしいビットコイン

 

ですので軽量クライアントはこの問題に対しては「フルノード」に問い合わせをして確認する、という解決方法をとります。軽量クライアントはフルノードに接続しており、そのビットコイントランザクションに関する情報だけを教えてもらうのです。

 

そうすることによって「今回のトランザクションは正当なものか否か」という問題を解決するのです。ブロックチェーンには一部のトランザクションだけを簡単に見れるような「ブロックチェーン内のトランザクションを要約した記録」があります。(とても簡単に説明しております)それを利用することによって今回のトランザクションに関連した今までのトランザクションを参照することができるのです。

 

この方法によって軽量クライアントでもトランザクションを検証し、実行されることになるのです。

 

 

 

軽量クライアントのセキュリティ

 

しかし、軽量クライアントには問題もあります。まず一つ目はトランザクションを検証する際に関連のトランザクションしか参照しないため、それがある個人のビットコインウォレットだった場合にずっと監視されてしまうとそのビットコインウォレットアドレスがどのくらいの量のビットコインを持っているのかやどんな取引をしているのかを監視されてしまう可能性があることです。

 

これによりビットコインアドレスを特定されてしまって攻撃を受けやすくなってしまうことがある、ということです。これには防御する技術が存在します。詳しくは長くなってしまうので省略しますが、簡単に言うと関連トランザクション以外の情報も合わせてランダムにもらう、という方法が既にあります。この方法も軽量クライアントは実装していなくてはなりません。

 

また、二つ目に上がる問題点としては情報をもらうフルノードが悪意のあるノードかもしれないという可能性です。もし軽量クライアントの接続するフルノードが悪意のあるノードだった場合、二重支払いのトランザクションに対して情報をもらう際に「それは二重支払いではないよ」と言われてしまったら二重支払いを許すことになってしまいます。

 

ですので信頼できるフルノードと繋がっていることが軽量クライアントにとっては命綱になるのです。ですので誰も信頼できない場合はセキュリティ面ではフルノードが最も堅牢性が高いです。しかし、実際は信頼できるフルノードと常につながっている軽量クライアントはあります。そこまで気にしてしまうと何もできなくなってしまいます。それこそそこまで気にする人は現行通貨でさえ信用できない通貨という事になります。

全財産を全てビットコインにする、等の命がけで行う場合以外はそこまで気にする必要は無いでしょう。

 

まとめ

 

以上が軽量クライアントのご説明です。もちろんリスクを減らす為にこのような知識をつけていくのもいいですし、知的好奇心でビットコインの知識を増やすのも充分楽しめると思います。調べれば調べるほど面白いビットコインの世界、是非情報収集してみてください!

 

関連技術記事⇒ビットコインとマークルツリーとマークルパスと - とってもやさしいビットコイン

 

ビットコインとブロックチェーン:暗号通貨を支える技術

ビットコインとブロックチェーン:暗号通貨を支える技術

 

 bitFlyer ビットコインを始めるなら安心・安全な取引所で