自作仮想通貨入門
自作仮想通貨入門 - 実際に作って学ぶビットコイン
2018年、技術書展5で頒布された合同誌「ITやみなべ」に「オレオレ仮想通貨の作り方」という記事を寄稿しました。
ただ頒布から半年も経ったということで、記事を無償でブログに公開することにしました。
なお合同誌では付録として「chainparams.cpp」に出てくる各変数の意味と歴史的経緯を7ページにわたって記載していますが、これは合同誌を購入いただいた方へのスペシャルとしてここでは公開しません😏
このコンテンツがビットコインの理解の助けになれば幸いです。
目次
全10章です。
自作仮想通貨入門(9) - ブロックデータのマジックバイト変更
重要: 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にはこのような脆弱性が時々見つかるので、可能なら常に最新バージョンを使って自作仮想通貨を作ったほうがいいのです。