こんにちわ!CATです!
この前からカルプレスの本読み直してますが、ブログにまとめると頭が整理されていいですね!でも読んでて感じたのが本人、これ全部書いてないよねwって思った。
- 本の続き
前回書いた部分は第1章から第2章までを調べながら、ツラツラ書きました。
私は技術者じゃないですが、ワクワクするんですよね。ビットコイン を見てると。第3章はビットコイン キャッシュの誕生について書かれてました。2017年になると当時ビットコイン の取引が急増し送金時間の大幅な遅延が発生しました。ビットコイン のブロックサイズは1メガバイトまでと決めたられていたそうです。
なので1,000,000バイトか。JPEGの写真が500,000バイトなので写真2枚分か。。。
現在のブロックを見ると 1,360,000バイトやね。前よりキャパ広くなってる。収容されとる取引数は2500個位でした。ビットコイン の管理者はおりませんが、ビットコイン コアというコミュニティは存在してます。
ビットコインコアはブロックの大きさを変えずに送金データの容量を圧縮するSegwitという機能を追加する事にしました。
-
Segwit
SegwitはSegregated Witnessの略称で2つの問題を解決できると言われていました。
スケーラビリティ
1つ目はスケーラビリティです。これを理解するにはトランザクションの中がどうなっているのか見ると理解しやすいです。トランザクションには
- Txin(支払い元)
- Txout(支払い先)
- 電子署名
が含まれてました。新しいブロックの中に入れる未承認取引はこんな感じです。これは380,000ブロック目の1つの取引です。
ハッシュと書かれているのがトランザクションIDで取引履歴の識別子です。「1M〜」から始まっているのがTxinで「1y〜」から始まっているのがTxoutです。トランザクションIDのハッシュ値を算出対象から署名を削除し独立した署名領域で署名を行う事で多くのトランザクションをブロックに収納します。実際は1.7MB程度の容量に拡大したとの事。JPEGの写真3枚ちょいか。。。少ないですね〜。
トランザクション展性
SegwitはトランザクションIDを算出するために必要なデータを別管理する方法です。前回書いたマウントゴックスのビットコイン 残高が合わない理由にも繋がります。ビットコイン にはトランザクションIDを外部から改竄する事ができる脆弱性がありました。
トランザクションIDを変更する事自体でハッキング はできませんが、取引所やウォレットはトランザクションIDを見て取引を識別していたので、
送金→ID変更する→送金確認しても送金してない→もう1回送金する
って感じで2重送金してしまったようです。Segwitはトランザクションの計算に使われる署名などのデータを別管理する事によってトランザクションIDを変更できなくします。これによってトランザクションIDのみを参照して取引を認証できるようになりました。これだけ見るとSegwitは取引遅延解決にあまり貢献せず、トランザクション展性を解決してるように見えますね。。。ちょうどコインポストに纏められてた記事がありました。
ちょっと長くなりましたので、今日はここまでにします。それでは!