【図解】トランザクション展性とは?わかりやすく解説!

 
この記事を書いている人 - WRITER -

今回は、前回取り上げたスケーラビリティ問題、Segwitなどに密に関係のある「トランザクション展性」についてまとめてみました!

トランザクション展性を解消してくれるのがSegwit技術ではありますが、ビットコインが抱えているトランザクション展性とはそもそもどのような仕組みによって起こる問題なのでしょうか?

専門用語だらけでちんぷんかんぷんな方向けにも、わかりやすく解説していきますね(*’ω’*)

めっちゃ今更ですけど、暗号通貨用語って掘れば掘るほど飽きる事なくでてきて、ただのパンピにはちんぷんかんぷんですよね〜私も常に頭抱えてます(´-`).。oO

でも、どんどん知らないことがでてくるからこその学ぶ楽しみもあって、学生卒業してから結構経った身としては懐かしみを覚えてます笑

話が逸れちゃいましたが、本題に入っていきましょう!

トランザクション展性(マリアビリティ問題)とは

トランザクション展性を簡単に説明すると

トランザクション展性、別名トランザクションマリアビリティ・マリアビリティ問題と言われていますが、マリアビリティの訳が展性なので意味合いは一緒です。

そもそも展性って聞き慣れないですよね、意味としては

金属の物理的性質の一つ。弾性の限度を越えた圧力・打撃によって、破壊されずに箔(はく)に広げられる性質。金・銀・銅・錫(すず)に特に著しい。

とのこと。上記直訳を今回の「トランザクション展性」に合わせてみると、トランザクションが破壊はされないが変形させられる性質みたいなイメージで大丈夫です!

実際にもっと想像しやすくいうと、ビットコインにおける第三者・悪い事を企んでいる受取側が取引のデータを改ざんして二重取引を起こすことができてしまう脆弱性のことをさします。

ちなみに、暗号通貨に激震が走ったマウントゴックス事件も、このトランザクション展性によって起こりました。

予備知識:トランザクション内の用語

トランザクション展性の説明には、ブロックチェーンのトランザクションの構造を理解しておく必要があります。

そもそもトランザクションの意味なのですが、簡単にいうとブロックチェーン上に書き込まれる「取引」の記録と思っていただいて間違いありません(*’ω’*)

例えば「AさんからBさんに1000bit送金した」というデータはブロックチェーンに記録はされるものの、トランザクション内にてその取引情報を暗号化してしまうことで、素人が見てもよくわからないようになっています。

そして、暗号化された状態から元の情報を知らずに、元の姿に戻すことは極めて困難になりますよね。

その暗号化されたものをハッシュ値と言います。

そして、全く同じデータを入力すると同じハッシュ値になりますが、すこしでも違うデータを入力すると全く違うハッシュ値が出されます。

トランザクションの構成:インプット・アウトプット

トランザクションのインプット・アウトプット

トランザクションについてもっと深く掘り下げていきます。

トランザクションには、諸々いろんな情報が詰まっているのですが、その内支払う側の情報・誰から送るのかを指定する鍵が入ったインプット、受け取る側の情報・つまり誰に送るかを指定する鍵が入ったアウトプットが収納されています。

そして、5bit送金するAさんと、Aさんから受け取るBさんがいると仮定します。

まずは、Aさんがこれまでのトランザクションの中からAさん自身のウォレットに5bit以上があるという根拠を探し出します。ちなみに「自分のウォレットに対して5bit以上を入れた」という行為もアウトプットになります。

そして5bit以上あるという根拠の確認が取れたら、Bさんに5bitを支払うことが可能=過去のアウトプットが示されます。

更に、サーバーに対して自分がその通貨の正当な持ち主であることの証明として電子署名を用います。

そして、電子署名にて誰がみてもきちんと本人であるとわかるように公開鍵も一緒に同封するのですが、こういったトランザクション自体に関わらず、認証に関わる情報が含まれるものScript Sigと言われる領域が存在します。

そして、Aさんから送金され受け取る側のBさんに関しての情報と、送金された通貨の額がアウトプットの中に入ります。

さらに受け取ったBさん以外の人が、その送金された通貨を使えないようにするためにこの通貨に鍵をかけます。

このように、インプット時は電子署名という手法を使い他の誰でもない本人であることを証明しておりましたが、このような通貨の解錠を用いた手法の領域Script Pubkeyと言われます。

そして、このScript PubkeyとインプットのScript Sigが施錠・解錠の関係になっていて、これらによってトランザクションが成り立っています。

トランザクションの構成:トランザクションID

トランザクショIDとは、上述したインプット・アウトプットをハッシュ化したものです。

ブロックチェーンの仕組みでも説明した通り、元のデータが少しでも変更されると全く違うハッシュ値が出てくるようになっています。 

そして、トランザクション展性の鍵となってくる部分です。詳しくは後述しますね!

トランザクションの仕組みを踏まえてトランザクション展性を見る

取引の際に送金する側と受取側の二者が必ず存在しますが、送金者をAさん、受取人をBさんとし、この受取人Bさんが悪いことを企んでると仮定します。

そして、Aさんは何の疑いもなくBさんに5bit送金依頼をしました。

そして、送金後トランザクションにて処理される訳ですが、ここが重要なポイントです。

インプット内のScript Sigは、取引内容自体を変更することなく書き換えることができてしまいます。

例えば、受取人の悪者BさんはScript Sig内の文字列を少し変更するとします。

トランザクションIDは、説明した通りScript Sigのデータを少しでも変更されてしまうと全く違うハッシュ値が生成されトランザクションIDも全く違う値に変わってしまいます。

その上、トランザクションIDが変わってしまっても、どちらも同じ意味として処理されてしまいます。

なので、それを知らずにマイナーたちがマイニングを行なっても取引自体は変更されず、変更された後のトランザクションIDに対する送金取引が完了してしまう、

つまり、悪者Bさんはしっかりと5bitを受け取っているにも関わらず、もちろん見え方としてはAさんの送金したトランザクションID結果は送金失敗になってしまっている、といった事態になります。

トランザクションの意味自体は変わっていないので、支払い自体も行われているということです。

そして、悪者BさんがAさんが送金依頼したトランザクションIDに対し再送金依頼をだすと、Aさんは一度送金したにも関わらず再度送金する必要が生じました。

こういった流れで二重取引が発生してしまい、その上何回も二重取引を起こすことが可能になってしまいます。

まとめると、送信先・金額等の取引内容自体は変更されずにトランザクションIDのみを変更可能になってしまう脆弱性をトランザクション展性と呼ばれ、そしてマウントゴックス事件はこの脆弱性を突かれて起こった事件でもあります。

どうやってSegwitはトランザクション展性を解消できたの?

Segwitとは、電子署名、つまり上述したトランザクションの構成でいうとインプット内のScript Sigを、メインのブロックチェーンに記録していくのではなくサイドチェーンという別の場所で管理する技術です。

そして、サイドチェーンに保管されるのは電子署名だけではなく、トランザクションIDの計算に使用されるデータも一緒に別に管理される仕組みなので、Segwitの性質により第三者などの外部から電子署名含めトランザクションIDを変更することが不可能になりました。

これらによってトランザクション展性の原因を全て別にし、また他の部分を変更しても無効なトランザクションとみなされ却下されるために、Segwitでトランザクション属性問題が解決されます!

この記事を書いている人 - WRITER -

- Comments -

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Copyright© xRland , 2019 All Rights Reserved.