しゅーと (@shutingrz)
しゅーと (@shutingrz)
Security researcher
Apr 27, 2019 3 min read

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

自作仮想通貨「Raccoin」のアイコン

自作仮想通貨「Raccoin」のアイコン


皆さんは自作仮想通貨を作ったことはあるでしょうか?
イーサリアムのトークンやCounterPartyもいいですが、やはり仮想通貨の思想を深く知りたいなら、好きな仮想通貨のソースコードをフォークして自作仮想通貨を作ってみるべきです。

ただ、巷に溢れているアルトコインは総じて古いBitcoin Coreの実装を流用しており、英語で書かれている断片的な解説ページも、同じく古い実装を参照しています。
古いBitcoin CoreはP2SHやSegwitに未対応など機能が少ないばかりか、現在では修正されている複数の問題が残っているため、ソースコードの流用はオススメできません。

しかしながら、最近のBitcoin Core系を使ってアルトコインを作ろうにも、最近の実装に対応したアルトコインの作り方を載せているページは全くありませんでした。

結局私は自力でソースコードリーディングし、現在のBitcoin Coreに準拠した、2018年にリリースされたLitecoin 0.16をもとに自作仮想通貨を作り上げました。
その過程で得られた知見と手順をここに記載します。

なお実際に仮想通貨を作成する際、遅かれ早かれ仮想通貨の勉強が必要になってきます。
並行して以下のMastering Bitcoin [日本語版]を読んでおくと理解が深まるでしょう。
https://bitcoinbook.info/wp-content/translations/ja/book.pdf


注意点

ビルド環境について

FreeBSD 11.1 でビルドを確認しました。
Linux環境でもほぼ同じ手順で行えますが、sed コマンドのコマンドオプションが異なるため文字列置換の際に問題が発生するかもしれません。

ドキュメントの記載と実際の環境の差異について

仮想通貨をビルドし実際に使える状態にすることを第一に考えるため、ドキュメントに記載された内容と実際の環境に差異が発生します。
例えば、release-process.md にはgitianを使ったリリースプロセスが項目にありますが、そこには特定のgitが存在することを前提にした記載になっています。
そのためリリースプロセス通りにリリースしようとすると必ず詰まります。
その他、ドキュメントには参考URLとしてLitecoinチームが独自に開設したコミュニティが記載されていますが、これについても自作仮想通貨を作成しているときには存在しないため、リンク切れを起こします。

以上のような現象がいくつかのドキュメントで発生しますが、自作仮想通貨の作成に影響はないのでここでは放置します。