資本家を目指すカワウソのブログ

投資やITのことについて書くカワウソのブログ

自分でアルトコインを作ってみる①

今回は技術寄りの記事を書いていきます。

テーマ:オリジナルのアルトコインを作る
空前の仮想通貨ブームが巻き起こり、自分独自のコインを持ちたい!って人もいるはず。

コインの作り方を調べてみると、やり方は


①CounterPartyを使う
②MonaPartyを使う
WAVESを使う
④Ethereumを使う
⑤Bitcoinなどのオープンソースを元にして改変する


他にも色々ありますが、
今回は技術の勉強の意味も込めて⑤に挑戦していきます。

何に使うかとかを考えるより、まず中身をいじってみて、ビットコイン型のブロックチェーンについて知ろう!
を目的にやっていきます。

※まだまだ専門知識などは勉強中なので、説明や知識に誤りがある場合もあります。何かあればご指摘いただけると幸いです


<方針>

ライトコインソースコードをもとにオリジナルのコインを作る

今回はビットコイン(Bitcoin)をベースに作られたライトコイン(Litecoin)のコードを使います。

余談ですが、モナコイン(Monacoin)もライトコインをベースに作られたものです。

本来は、発行枚数や難易度調整なども自分でデザインして改変していくべきなのですが、

今回は詰まる人が多いといわれるジェネシスブロック(初期ブロック)の作成に焦点を当てていきます。

ですので、細かい設定は変更しません。


<名前>

今回はHagicoin(HGC)という名前のコインを作ります。

通称ハギコ。

萩です。(僕と関係が深い組織の花なのです…)

適宜好きな名前に変更して進めてください。


<始めに>

僕の現在の状況をもとに、どれくらいの知識があれば作れるか参考までに書いてみます。

・プログラミングの経験がちょっとでもあれば問題ないです。(僕もC++は今回初めて触りました。)
ブロックチェーンの知識が少しでもあると良いかも?(でも今回はハッシュとナンスが分かればいけそう)
・ITパスポートや基本情報技術者くらいのIT知識もあるとよい?


<参考にしたサイト>

・Complete Guide on How to Create a New Alt Coin
https://bitcointalk.org/index.php?topic=225690.msg2374550#msg2374550
・coin cloning guide
https://bitcointalk.org/index.php?topic=1115063.0
・Error Guide For Altcoin Daemon Compilation
https://medium.com/@aniketengg.225/error-guide-for-altcoin-daemon-compilation-2e52b22029e7

※日本語のサイトはかなり少ない印象です。

<参考にした書籍>

仮想通貨ブロックチェーン&プログラミング入門


それでは早速いきましょう!

<動作環境>

windows10+Virtual Box 5.1+Ubuntu 14.04.5

今回はLinuxコマンドが使いたかったので、元はWindowsですがVMを使ってUbuntuで動かします。

Windowsでも可能らしいですが、Linuxをつかった記事が圧倒的に多い気がします。

<コードをダウンロードする>

以下リンクからLitecoinのソースコード(zipファイル)をダウンロードする。
https://github.com/litecoin-project/litecoin/releases/tag/v0.8.7.4

※新しいものは複雑で扱いにくいため、今回は2014年当時のバージョン0.8.7.4を使用。

ダウンロード後、分かりやすいようにフォルダ名をlitecoin(バージョン)からhagicoinに変更しました。

<必要なツールをインストール>

コンパイルに必要なツールをインストールする

sudo apt-get install libdb-dev libdb++-dev libboost-all-dev libminiupnpc-dev libminiupnpc-dev libevent-dev libcrypto++-dev libgmp3-dev
sudo apt-get install build-essential libssl-dev libdb-dev libdb++-dev libboost-all-dev git libssl1.0.0-dbg


・Litecoinの文字列をHagicoinに変更する
※以下では「大文字・小文字・末尾にdが付いたもの・単位」の4つを変更しています。

 find ./ -type f -readable -writable -exec sed -i "s/Litecoin/Hagicoin/g" {} \;
 find ./ -type f -readable -writable -exec sed -i "s/litecoin/hagicoin/g" {} \;
 find ./ -type f -readable -writable -exec sed -i "s/litecoind/hagicoind/g" {} \;
 find ./ -type f -readable -writable -exec sed -i "s/LTC/HGC/g" {} \;


はい、ここまで出来たらいよいよジェネシスブロック作成に必要な、
ハッシュ値やナンス値などを改変していきます。

ここからはかなり長くなるので第一回はここまで。