ビットコインのSegwit実装をやさしく解説!Segwitとは

ビットコインには

Segwitが実装されている。

ビットコインについて調べていくと、

Segwit実装」

という言葉が出てきます。

Segwitとは

Segregated Witness(署名の分離)を

略した言葉です。

技術的な話は

苦手でよくわからないという人は

多いと思います。

しかし、

ビットコインに投資するなら

大まかにでもその内容は

知っておきたいものです。

Segwitは2017年8月24日に

ビットコインに実装されました。

このアップデートによって、

ビットコインが抱えていた問題の

解決につながりました。

Segwitの実装によって、

さらなる発展技術である

ライトニングネットワークの

実現への光も見えてくるように

なりました。

今回は

ビットコインに実装されている

Segwit技術について、

やさしく解説していきます。

基本用語であるブロックや

トランザクション(取引)

という用語の

意味については下記ページを

参考にしてください。

>>>ブロックチェーンの基本をやさしく解説

ビットコインが抱えていた問題

Segwitが実装される前の

ビットコインには、

2つの問題がありました。

マリアビリティ問題

(トランザクション展性)と

スケーラビリティ問題です。

マリアビリティ問題

マリアビリティ問題は

トランザクション展性問題とも

呼ばれます。

Segwitが実装される前の

ビットコインに存在した、

セキュリティ上の脆弱性です。

この脆弱性を悪用すると、

同じ送金を何重にも実行させる

ことができ、ビットコイン

だまし取ることができます。

従来のビットコイン

トランザクションの構成は

このようなものでした。

ビットコインのSegwit

トランザクションIDとは

ハッシュ関数という関数を使って、

送金内容と署名部分を合わせた内容を

一定の長さの文字列に変換したものです。

たとえば、

MD2というハッシュ関数を使うと、

あいうえお→f61ce990241d0eff615fbaf71d319f05
アいうえお→3b3792b599557035fdebf190c0ade4ea

このように、

一部でも違うと

別のトランザクションIDができます。

送金する際は

このトランザクションIDを

マイナー(承認作業者)に送って

承認してもらい、ブロックに

書き込んでもらう必要があります。

もし送金の受け取り者のBに

悪意があって署名部分の数字を

58

0058

ビットコインのSegwit

のように書き変えて

別のトランザクションIDを

マイナーに送り、

そちらが先に承認されて

ブロックに書き込まれると、

元のトランザクションIDは

承認失敗と見なされ、

送信者に失敗と通知されます。

しかし、

送金内容の本体部分は

変わっていないので、

実際には送金自体は行われています。

送信者だけが、

「依頼した送金が失敗した」

と誤認するわけです。

そこに、Bが

「送金されてない」と連絡して

Aに再送金させるわけです。

スケーラビリティ問題

ビットコイン

多くの人に使われ始めると、

送金に時間がかかったり、

手数料が高くなったり

するようになりました。

これを

スケーラビリティ問題と呼びます。

これは

ビットコインのブロックサイズが

1MBとそれほど大きくないのが

主な原因です。

トランザクションが増えると、

ブロックに格納しきれない

トランザクションが次々と

あとのブロックへ後回しにされます。

ところがブロックの生成は

10分間に1個と決まっているため、

後回しにされたトランザクションは

ブロックに書き込まれるまでに

時間がかかるようになります。

そうすると早く送金したい人たちは、

ブロックの承認を行うマイナーに払う

手数料を高くして、優先的に送金

してもらおうとします。

その悪循環によって手数料が

高くなっていくわけです。

Segwit実装とは

ビットコインが抱えていた

2つの問題を同時に解決しよう

というのがSegwit技術の実装です。

マリアビリティ問題は、

署名部分が書き変えられることに

より同じ送金内容でも異なる

トランザクションIDを作り出せる

ことから起きています。

スケーラビリティ問題は

ブロックに格納できる

トランザクションが少ないこと

から起きます。

そこで、

Segwitでは署名部分を別領域

(サイドチェーン上)に置くようにし、

トランザクションIDの生成条件から

外します。

これによって

署名部分が書き変えられても、

異なるトランザクションIDが

生成できないので、

マリアビリティ問題が解決できます。

ビットコインのSegwit

さらにひとつひとつの

トランザクションのサイズが

小さくなるため、

ブロックに格納できる

トランザクションの数が増えるので、

スケーラビリティ問題も

改善することができます。

Segwit実装の影響

ビットコイン

Segwitが実装されたことで、

ビットコインの信頼性が上がり、

実用性も向上しました。

ビットコインへの

さらなる発展技術である

ライトニングネットワークも、

Segwitの実装が前提であったため、

実現へと近づくことができました。

Segwit

ビットコインと同じ仕組みである

ライトコインやモナコインなど

他のコインにも実装されました。

一方で

Segwit実装を嫌って分裂した

ビットコインキャッシュは

Segwitを実装していません。

>>>ビットコインキャッシュとは

また、

Segwitを実装したうえで

ブロックサイズを2倍に拡張する

「Segwit2x」と言う技術も

導入が発表されましたが、

実現せずに現在に至ります。

Segwit実装によって、

ビットコインは更なる進化への道を

開いたと言えます。

Related Post