しゅーと (@shutingrz)
しゅーと (@shutingrz)
Security researcher
Apr 30, 2019 2 min read

自作仮想通貨入門

自作仮想通貨入門 - 実際に作って学ぶビットコイン

2018年、技術書展5で頒布された合同誌「ITやみなべ」に「オレオレ仮想通貨の作り方」という記事を寄稿しました。
ただ頒布から半年も経ったということで、記事を無償でブログに公開することにしました。

なお合同誌では付録として「chainparams.cpp」に出てくる各変数の意味と歴史的経緯を7ページにわたって記載していますが、これは合同誌を購入いただいた方へのスペシャルとしてここでは公開しません😏

このコンテンツがビットコインの理解の助けになれば幸いです。


目次

全10章です。

自作仮想通貨入門(1) - はじめに

自作仮想通貨入門(2) - Litecoinの準備

自作仮想通貨入門(3) - Litecoinを試してみよう

自作仮想通貨入門(4) - テンプレートファイルのコピー

自作仮想通貨入門(5) - 単純な文字列置換

自作仮想通貨入門(6) - ジェネシスブロックの作成と設定

自作仮想通貨入門(7) - コンセンサスの設定

自作仮想通貨入門(8) - アドレスのプレフィックス変更

自作仮想通貨入門(9) - ブロックデータのマジックバイト変更

自作仮想通貨入門(10) - 著作権表示の記載・おわりに


重要: CVE-2018-17144 の対策

今回、自作仮想通貨のもととして利用するソースコードは Litecoin 0.16 です。 Litecoin 0.16 のもとである BitcoinCore 0.16 には CVE-2018-17144 の脆弱性が存在し、このまま利用すると通貨が不正増殖される恐れがあります。

この脆弱性を修正するため、Litecoin 0.16 をダウンロードしたあとに"src/validation.cpp" の 3003 行目を以下のように変更してください。

-        if (!CheckTransaction(*tx, state, false))
+        if (!CheckTransaction(*tx, state, true))

false を true にするだけです。

一応ソースコードを変更する項目でも再掲しますが、忘れずに修正してください。


記事を執筆した時点ではCVE-2018-17144が公開される前だったのでこういうことになってしまいました。。

ビットコイン実装であるBitcoinCoreにはこのような脆弱性が時々見つかるので、可能なら常に最新バージョンを使って自作仮想通貨を作ったほうがいいのです。