2018年09月02日

マスターノード構築してみよう(その2)

(追記 このコインは死んでます)

実際にコインを選んでやってみる編
1.コインを選ぶ
練習なので、お手軽な金額でスタートできるもの。
​まず、windows で操作
マスターノードの情報サイトで、ROI が高くて、Mn worth(構築資金)が低いのを選ぶ
https://masternodes.online/
今回は適当に、Charity (CHRT) を選択  #Required は 1000 となっているので必要コインは 1000 
https://masternodes.online/currencies/CHRT/
詳細情報がでてくるので、左の方の Links から、Website や Github で情報を調べる。
Github が更新されてないので、怪しいタイプのコインですね(w

(追記 サイト死んでます)
Website に行く。( Discord の画面がでるけど、無視して閉じて、下の方を見に行く。)
MN collateral が必要コイン 1000 なので、masternodes.online 情報で間違いなし。
コインによっては、ブロックサイズによって変わっていくものもある。


2.ソフトを準備する
とりあえず練習なので、バイナリをいきなりダウンロードする。
本来は、github からソースをダウンロードしてコンパイルするのがベスト。
なぜか、windows に linux バイナリがリンクされている。(はい、怪しいですね)
右クリックで、リンクのアドレスをコピーする。


ここから、linux で操作します。Teraterm とか putty とかお好みで。​

追記、WEBサイトが死んでるので、ダウンロードするなら、git 経由です。
git clone https://github.com/charity-coin/linux

wget http://charitycoin.live/resources/charitycoin.linux.zip
unzip charitycoin.linux.zip
# 多重に zip に入っているので、必要分展開する
最低必要なのは、コイン名d
コイン名-cli は、コマンドライン用操作ソフト
コイン名-qt は、GUI 用 (マスターノードでは使わない)

# 実行可能にする。
chmod +x charityd
chmod +x charity-cli

# bin ディレクトリにファイルを移動する
mkdir ~/bin
mv charity* ~/bin
cd ~
# bin のファイルを実行できるように、path を再設定する
. .profile

3.ウォレット作成
​(無理やり linux で作っていきます。windows で作るのが普通らしいです)​
# デーモンを初回起動すると、自動的に最小限必要なファイルが作成するされる
charityd
masternodes@bjsoftab4:~/linux-master$ ./charityd
Error: To use charityd, or the -server option to charity-qt, you must set an rpcpassword in the configuration file:
/home/masternodes/.charity/charity.conf
It is recommended you use the following random password:
rpcuser=charityrpc
rpcpassword=DuaJTjR5KCLyvjCS1gXGXauaX9PWGLMqDgyTSLfgfQmC
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "Charity Alert" admin@foo.com
# 指示に従って、rpcuser と rpcpassword の行のファイルを作成する。
# charity.conf ファイルの内容を参照して、rpc で通信するので、表示されるとおりで問題なし。
# 気になるなら、pwgen 64 1 とかで再生成してもいいです。(パスワードを覚えておく必要はなし)
nano ~/.charity/charity.conf
# デーモンとして起動する
charityd -daemon
# これをやっておけば、ログアウトしてもデーモンは動き続けます。
# コマンドラインで、動作状態をチェックする
# 何回か実行して、blocks が増えていれば、同期中です。
charity-cli getinfo
# 同期している間に、送金先のアドレスを作成します
charity-cli getaccountaddress mn1
# ウォレットのアドレスがでるので、メモする。
4.マスターノード作成
# マスターノードのプレイべートキーを作成する。
charity-cli masternode genkey
# プライベートキーがでるので、メモする。
# メモし忘れると、アクセス不能になります。
# まぁ、失敗しても、またここからやり直して、新しいキーを作ればいいですが
さっき作成したウォレットのアドレスに、CryptBridge などから
​​「ぴったり 1000 コインを一回で送金する」​​
ここが、割と間違うケース多い。ミスすると送金からやり直し
5.マスターノード確認
getinfo していると、そのうちノードが同期完了し、
balance が、さっき送信した 1000 になるはず。

# マスターノード用送金データ確認
charity-cli masternode outputs
この結果を後で使います。
{
    "4f40008f84a7544509283c3c419a91ab9ec5d5fb74c6818b294fca2ccce87c98" : "0"
}
この場合、
output_txid が、4f40008f84a7544509283c3c419a91ab9ec5d5fb74c6818b294fca2ccce87c98
output_index が、0 
です


6.設定ファイルを編集する
# まず、デーモンを止める
charity-cli stop
# ifconfig とかで、 IPアドレスを確認する
# .charity/charity.conf を編集する
rpcallowip=127.0.0.1
server=1
listen=1
daemon=1
maxconnections=256
masternode=1
masternodeprivkey=マスターノードのプレイべートキー
externalip=IPアドレス
# ほかのコインだと、port とか設定することもあるけど、このコインは省略できる
# .charity/masternode.conf を編集する
# 3300 は、マスターノードのポート コインごとに大抵違う
mn1 IPアドレス:3300 マスターノードのプレイべートキー output_txid output_index
mn1 10.10.10.10:3300 jfafdkfjadfjadfjdf 4f40008f84a7544509283c3c419a91ab9ec5d5fb74c6818b294fca2ccce87c98 0
みたいな感じ
7.ファイアウォールのポートを開く (ポートを開かなくても動くコインはあるけど念のため)
さくらのVPSだと iptables を使っているので、その例。
sudo nano /etc/iptables/iptables.rules
:OUTPUT ACCEPT [0:0] の後に以下を追加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3300 -j ACCEPT
linux を再起動する。
8.マスターノードを起動する
# デーモンを起動する
# charity-cli stop するとか、linux を再起動したら、手動でスタートします
charityd -daemon
ここまでうまく設定できていると、状態が確認できるはず。
charity-cli masternode list-conf
{
    "masternode" : {
        "alias" : "mn1",
        "address" : "IPアドレス:ポート",
        "privateKey" : "プライベートキー",
        "txHash" : "output_txid",
        "outputIndex" : "output_index",
        "status" : "MISSING"
    }
}
# マスターノード起動
charity-cli masternode start-alias mn1
{
    "alias" : "mn1",
    "result" : "successful"
}
# コインによっては、masternode start-alias false mn1 とか、masternode start だけとかバリエーションがある
# マスターノード状態確認
charity-cli masternode status
コインによって表示が違うけど、status が以下になっていればOK
    "status" : "Masternode successfully started"
あとは、残高を確認しつつ、気長に報酬が振り込まれるのを待ちましょう。
charity-cli getbalance
masternodes online の、コインごとの詳細で、平均報酬間隔があります。
普通なら、2〜3倍待てば、初回報酬が入ります。
AVG masternode reward frequency: 2h 54m 49s
ちなみに、まだ報酬入ってません(w


追記:報酬入りました。手順に問題ありません
posted by とーふ at 20:02| マスターノード

マスターノード構築してみよう(その1)

せっかくなので、自分のメモもかねて、マスターノード構築手順。
まずは、linux 環境の準備
前提知識:
1.linux がそれなりに使える
2.CryptBridge で取引できる
※さすがに、この程度はできないと無謀かと
前提OS:
さくらのVPS ubuntu 16.04 LTS
事前準備:
1.必要なパッケージを入れる
root権限で実行してください。
例えば、sudo bash とかしてから。
apt-get update && apt-get upgrade
apt-get install unzip
apt-get install git
apt-get install pwgen
apt-get dist-upgrade
apt-get install software-properties-common nano  libzmq3-dev libssl-dev libevent-dev
# 実行に必要そうなもの
apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libboost-all-dev unzip libminiupnpc-dev python-virtualenv
apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils
# 仮想通貨関連リポジトリ追加
add-apt-repository ppa:bitcoin/bitcoin
apt-get update
apt-get install libdb4.8-dev libdb4.8++-dev
2.ユーザ追加
念のため、デフォルトユーザでは使用しないほうが安心かと。
sudo adduser NEWUSER
sudo usermod -aG sudo NEWUSER
3.セキュリティ設定
# さくらVPSならデフォルト設定済み
apt install fail2ban
systemctl enable fail2ban
systemctl start fail2ban
4.ソースからビルドする場合
git clone お好みのコイン
コンパイルに必要なパッケージを入れる。まぁ、以下を入れれば、足りるでしょう。
apt-get install libssl
apt-get install libdb4.8 libdb4.8++
apt-get install miniupnpc
apt-get install univalue
apt-get install build-essential libtool autotools-dev autoconf pkg-config 
./autogen.sh
./configure
posted by とーふ at 20:01| マスターノード

Chroot Jail でマスターノードを分離する

​1GBメモリのレンタルVPSで、3〜4つぐらいの草コインなら、マスターノード運用できそう。
4つ動かしている時点で、ディスクは10GBぐらい消費。

問題は、マスターノードのソフトが悪さをしようとしたら、踏み台にしたり、他のコインの設定ファイルを読み込んで、送金したりもできちゃうこと。

ということで、対策としては、無関係のファイルは一切アクセス不能にする

linux には、chroot といって、任意のディレクトリをルートディレクトリに変更する機能がある。
なので、コインごとにディレクトリを作って、必要なファイル類をコピーしてから起動すれば、一切悪さができなくなる。
ということで、運用中。
まぁ、コインごとに必要な共有ライブラリが違うので、その辺が微妙に手間ですが。

以下、最新の環境作成スクリプト。
#!/bin/sh
mkdir -p dev
sudo mknod dev/random c 1 8
sudo mknod dev/urandom c 1 9
mkdir -p bin
mkdir -p usr/bin
mkdir -p lib64
mkdir -p lib/x86_64-linux-gnu
mkdir -p usr/lib/x86_64-linux-gnu
cp /bin/bash bin/
cp /bin/ls bin/
cp /bin/cat bin/
cp /usr/bin/vi usr/bin/
cp /lib64/ld-linux-x86-64.so.2 lib64/
cp /lib/x86_64-linux-gnu/libacl.so.1 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libanl.so.1 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libattr.so.1 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libc.so.6 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libdl.so.2 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libgcc_s.so.1 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libm.so.6 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libpcre.so.3 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libpthread.so.0 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/librt.so.1 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libselinux.so.1 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libssl.so.1.0.0 lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libtinfo.so.5 lib/x86_64-linux-gnu/
cp /usr/lib/libdb_cxx-4.8.so usr/lib/
cp /usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.58.0 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.58.0 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.58.0 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libevent_core-2.0.so.5 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libevent_pthreads-2.0.so.5 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libgmp.so.10 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libminiupnpc.so.10 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libsodium.so.18 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 usr/lib/x86_64-linux-gnu/
cp /usr/lib/x86_64-linux-gnu/libzmq.so.5 usr/lib/x86_64-linux-gnu/
posted by とーふ at 20:00| マスターノード

2018年09月01日

とーふ流コインの選び方

​​​​マスターノードを立てるとき、コインを選びながら、いろいろ思った。
ということで、とーふ流コインの選び方について(でも、失敗しても知らないよ)

0.心構え
 コインが増えることだけ考える。換金を考えない
 例えば、景品と交換できるパチンコじゃなくて、ゲーセンのコインゲームだと思うこと。

1.コインとしての特長や、コードの変更履歴は気にしない
 普通のコインは、ASIC耐性とか攻撃耐性を気にするので、マメな更新が必要。
 なので、開発者が頑張っているかどうかは、github こ更新履歴を見てチェックする。

 でも、マスターノードの源流は、DASH。
 所詮、既存のマスターノードの仕掛けをコピペ(+名前変更)するだけで量産できる。
 (DASH -> PIVX からフォークしました と書くだけでOK)
 なので、更新は本質ではない。

 その反面、詐欺コインも大量に作ることができる

2.コインの目的はあるか
 どのコインも、きれいなホームページを作ってる。詐欺コインも同じ。
 ロードマップやコンセプトがきちんと書かれているのは当たり前。テンプレがあるし。
 なので、「コインを使って何をしたいか?」を見る。
 決済手段を提供 とだけ書かれているのは無視。

 たとえば、​マンガ図書館Z​みたいに、本業が何かあって、その支援のためにコインを作った。
 とかいうコインを選ぶ。
 (注:マンガ図書館Zはコインを発行してません)

 マスターノードってベンチャー支援だと思う。

3.コインとしての流通は確立しているか
 立ち上げたばかりだと、こけるのも早い。詐欺かもしれない。
 CryptBridgeや Cryptopia で取引できるのが最低ライン。
 あと、マスターノード数が3桁ぐらいあること。
 マスターノードを構築するのに、異なるIPアドレス(異なるサーバー)が必要なので、
 2桁ぐらいだと、たぶん簡単に達成できる。
 3桁ぐらいあれば、一般の参加者もいると思う。

4.損しても構わない金額で、将来もうかるかもしれない金額か
 マスターノードを構築するのに、一定のコイン数が必要だが、その辺は財布と相談。
 でも安すぎると VPSレンタルする費用も出せないので、$100〜ぐらいで。
 あと、収益回収率(ROI)は、200% / 年 以上で。

5.コインの価値はすでに落ちてるか?
 はい。この辺が、とーふ流。たいていのコインは取引所に上場後、急落している感じ。
 その急落具合は半端ないので、高値でつかむと泣きます。
 でも、ベンチャー支援だと思えば、長期保有してリターンを期待するのが基本。
 ということで、落ちてるコインを買ってます。

こんな感じです。

余談:
VultrとかのVPSレンタルは、アフィリエイト報酬があるようです。
なので、Vultr用のインストーラが用意してあるとか、スタートが簡単すぎるコインは疑ってます。
つか、デフォルトが root でログインできるサーバは怖くて使えない。
posted by とーふ at 20:01| マスターノード

2018年08月27日

動かなかったマスターノードやっと起動

先日、以下のエラーで動いてなかったマスターノードは、linux のファイアウォールに阻まれていただけだった。
error: {"code":-1,"message":"Masternode not found in the list of available masternodes. Current status: Not capable masternode: Could not connect to IPアドレス:ポート"}

さくらのVPSだと、明示的に iptables でポートを開かないと、新規の接続を全部拒否する初期設定だった。
スタート時に接続したポートでは通信できるけど、新規接続を拒否するので、動いたり動かなかったりしたようだ。

その後、直しても動かないので、信用できないマスターノードとされた模様。

結局、createmasternodekey で、新しいマスターノードキーを作成して、別の名前のマスターノードとして登録して解決。(旧: mn1, 新: mn2)

なお、草コイン4つ動かしている状態で、以下の状態。メモリが厳しいです。
top - 19:28:31 up  1:14,  1 user,  load average: 0.07, 0.11, 0.12
Tasks:  96 total,   1 running,  95 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.8 sy,  2.7 ni, 94.8 id,  0.2 wa,  0.0 hi,  0.5 si,  0.0 st
KiB Mem :  1015900 total,    66640 free,   727132 used,   222128 buff/cache
KiB Swap:  9314296 total,  9223668 free,    90628 used.   142256 avail Mem
posted by とーふ at 20:00| マスターノード