サーバー linux 仮想通貨

【仮想通貨】CentOSにSHIELDウォレットをインストール

2018年2月13日

SHIELDコインは既にデッドコインなのですが備忘録として残しています。

SHIELDをLinux環境で実行する場合、公式サイトだとElectrumを使用するようになっている。

しかし、Electrumのバージョンが2.4.1であり、脆弱性対策がされていないバージョンの為、あまり利用できないな思っていたので。
公式には記載されていないのですが、bitcoin-coreと同じ方法で使用することができるか試してみました。

使用環境

OS:CentOS7.4(最小構成インストール)
SELinuxは無効にする
Berkeleyをインストールするためにepelを使用する。
関係ないけどvim好きなのでvimをインストール(最小構成の場合インストールされないない為)
予めyum updateしていること。
インストールはCUIオンリー(No GUI)であること。

Berkeleyは手動インストールでもできるが、今回はepelでいくことにしました。

[root@localhost ~]# getenforce
Disabled
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

必要なものインストール

epel

[root@localhost ~]# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
http://ftp.riken.jp/Linux/fedora/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.PPx2AP: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
準備しています... ################################# [100%]
更新中 / インストール中...
1:epel-release-7-11 ################################# [100%]
[root@localhost ~]#

git、vimのインストール

テキスト編集としてvim
SIELDの取得に必要なgit
をインストールします。

[root@localhost ~]# yum install -y git vim
読み込んだプラグイン:fastestmirror
base | 3.6 kB 00:00
・
・
省略
・
・
================================================================================
Package アーキテクチャー
バージョン リポジトリー
容量
================================================================================
インストール中:
git x86_64 1.8.3.1-12.el7_4 updates 4.4 M
vim-enhanced x86_64 2:7.4.160-2.el7 base 1.0 M
依存性関連でのインストールをします:
gpm-libs x86_64 1.20.7-5.el7 base 32 k
libgnome-keyring x86_64 3.12.0-1.el7 base 109 k
perl x86_64 4:5.16.3-292.el7 base 8.0 M
perl-Carp noarch 1.26-244.el7 base 19 k
perl-Encode x86_64 2.51-7.el7 base 1.5 M
perl-Error noarch 1:0.17020-2.el7 base 32 k
perl-Exporter noarch 5.68-3.el7 base 28 k
perl-File-Path noarch 2.09-2.el7 base 26 k
perl-File-Temp noarch 0.23.01-3.el7 base 56 k
perl-Filter x86_64 1.49-3.el7 base 76 k
perl-Getopt-Long noarch 2.40-2.el7 base 56 k
perl-Git noarch 1.8.3.1-12.el7_4 updates 53 k
perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k
perl-PathTools x86_64 3.40-5.el7 base 82 k
perl-Pod-Escapes noarch 1:1.04-292.el7 base 51 k
perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k
perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k
perl-Pod-Usage noarch 1.63-3.el7 base 27 k
perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k
perl-Socket x86_64 2.010-4.el7 base 49 k
perl-Storable x86_64 2.45-3.el7 base 77 k
perl-TermReadKey x86_64 2.30-20.el7 base 31 k
perl-Text-ParseWords noarch 3.29-4.el7 base 14 k
perl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 k
perl-Time-Local noarch 1.2300-2.el7 base 24 k
perl-constant noarch 1.27-2.el7 base 19 k
perl-libs x86_64 4:5.16.3-292.el7 base 688 k
perl-macros x86_64 4:5.16.3-292.el7 base 43 k
perl-parent noarch 1:0.225-244.el7 base 12 k
perl-podlators noarch 2.5.1-3.el7 base 112 k
perl-threads x86_64 1.87-4.el7 base 49 k
perl-threads-shared x86_64 1.43-6.el7 base 39 k
rsync x86_64 3.0.9-18.el7 base 360 k
vim-common x86_64 2:7.4.160-2.el7 base 5.9 M
vim-filesystem x86_64 2:7.4.160-2.el7 base 9.8 k

トランザクションの要約
================================================================================
インストール 2 パッケージ (+35 個の依存関係のパッケージ)
・
・
省略
・
・
完了しました!

コンパイルに必要なもの

gccとかmakeとかlibtoolとかとりあえず必要なものを突っ込みます。

[root@localhost ~]# yum install -y --gcc gcc-c++ cpp make autoconf automake openssl-d evel curl-devel libevent libevent-devel libevent-doc
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
・
・
省略
・
・
================================================================================
Package アーキテクチャー
バージョン リポジトリー
容量
================================================================================
インストール中:
autoconf noarch 2.69-11.el7 base 701 k
automake noarch 1.13.4-3.el7 base 679 k
cpp x86_64 4.8.5-16.el7_4.1 updates 5.9 M
gcc x86_64 4.8.5-16.el7_4.1 updates 16 M
gcc-c++ x86_64 4.8.5-16.el7_4.1 updates 7.2 M
libcurl-devel x86_64 7.29.0-42.el7_4.1 updates 300 k
libevent x86_64 2.0.21-4.el7 base 214 k
libevent-devel x86_64 2.0.21-4.el7 base 85 k
libevent-doc noarch 2.0.21-4.el7 base 238 k
openssl-devel x86_64 1:1.0.2k-8.el7 base 1.5 M
依存性関連でのインストールをします:
glibc-devel x86_64 2.17-196.el7_4.2 updates 1.1 M
glibc-headers x86_64 2.17-196.el7_4.2 updates 676 k
kernel-headers x86_64 3.10.0-693.17.1.el7 updates 6.0 M
keyutils-libs-devel x86_64 1.5.8-3.el7 base 37 k
krb5-devel x86_64 1.15.1-8.el7 base 266 k
libcom_err-devel x86_64 1.42.9-10.el7 base 31 k
libkadm5 x86_64 1.15.1-8.el7 base 174 k
libmpc x86_64 1.0.1-3.el7 base 51 k
libselinux-devel x86_64 2.5-11.el7 base 186 k
libsepol-devel x86_64 2.5-6.el7 base 74 k
libstdc++-devel x86_64 4.8.5-16.el7_4.1 updates 1.5 M
libverto-devel x86_64 0.2.5-4.el7 base 12 k
m4 x86_64 1.4.16-10.el7 base 256 k
mpfr x86_64 3.1.1-4.el7 base 203 k
pcre-devel x86_64 8.32-17.el7 base 480 k
perl-Data-Dumper x86_64 2.145-3.el7 base 47 k
perl-Test-Harness noarch 3.28-3.el7 base 302 k
perl-Thread-Queue noarch 3.02-2.el7 base 17 k
zlib-devel x86_64 1.2.7-17.el7 base 50 k

トランザクションの要約
================================================================================
インストール 10 パッケージ (+19 個の依存関係のパッケージ)
・
・
省略
・
・
完了しました!

Berkeley DBのインストール

SHELD(bitcoin core)だとDBはBerkeleyを使用しているため、Berkeley DB 4.8をインストールします。

[root@localhost ~]# yum install -y libdb4-cxx-devel-4.8.30-13.el7
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
・
・
省略
・
・
================================================================================
Package アーキテクチャー
バージョン リポジトリー
容量
================================================================================
インストール中:
libdb4-cxx-devel x86_64 4.8.30-13.el7 epel 15 k
依存性関連でのインストールをします:
libdb4 x86_64 4.8.30-13.el7 epel 607 k
libdb4-cxx x86_64 4.8.30-13.el7 epel 635 k
libdb4-devel x86_64 4.8.30-13.el7 epel 32 k

トランザクションの要約
================================================================================
インストール 1 パッケージ (+3 個の依存関係のパッケージ)
・
・
省略
・
・
完了しました!

libboostのインストール

SHIELD(bitcoin core)のコンパイルに必要なlibboostをインストールします。

[root@localhost ~]# [root@localhost ~]# yum install boost-devel
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
・
・
省略
・
・
================================================================================
Package アーキテクチャー
バージョン リポジトリー
容量
================================================================================
インストール中:
boost-devel x86_64 1.53.0-27.el7 base 7.0 M
依存性関連でのインストールをします:
boost x86_64 1.53.0-27.el7 base 33 k
boost-atomic x86_64 1.53.0-27.el7 base 35 k
boost-chrono x86_64 1.53.0-27.el7 base 44 k
boost-context x86_64 1.53.0-27.el7 base 36 k
boost-date-time x86_64 1.53.0-27.el7 base 52 k
boost-filesystem x86_64 1.53.0-27.el7 base 68 k
boost-graph x86_64 1.53.0-27.el7 base 136 k
boost-iostreams x86_64 1.53.0-27.el7 base 61 k
boost-locale x86_64 1.53.0-27.el7 base 251 k
boost-math x86_64 1.53.0-27.el7 base 334 k
boost-program-options x86_64 1.53.0-27.el7 base 156 k
boost-python x86_64 1.53.0-27.el7 base 129 k
boost-random x86_64 1.53.0-27.el7 base 39 k
boost-regex x86_64 1.53.0-27.el7 base 300 k
boost-serialization x86_64 1.53.0-27.el7 base 169 k
boost-signals x86_64 1.53.0-27.el7 base 60 k
boost-system x86_64 1.53.0-27.el7 base 40 k
boost-test x86_64 1.53.0-27.el7 base 223 k
boost-thread x86_64 1.53.0-27.el7 base 57 k
boost-timer x86_64 1.53.0-27.el7 base 43 k
boost-wave x86_64 1.53.0-27.el7 base 210 k
libicu x86_64 50.1.2-15.el7 base 6.9 M

トランザクションの要約
================================================================================
インストール 1 パッケージ (+22 個の依存関係のパッケージ)
・
・
省略
・
・
完了しました!

SHIELDのインストール

gitの取得

gitよりSHIELDソースの取得を行います。

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# git clone https://github.com/ShieldCoin/SHIELD.git
Cloning into 'SHIELD'...
remote: Counting objects: 1326, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 1326 (delta 0), reused 0 (delta 0), pack-reused 1322
Receiving objects: 100% (1326/1326), 4.91 MiB | 4.02 MiB/s, done.
Resolving deltas: 100% (404/404), done.
[root@localhost src]# ll
合計 0
drwxr-xr-x 9 root root 315 2月 13 01:19 SHIELD

コンパイル準備

autogen.shを実行します。

[root@localhost src]# cd SHIELD/
[root@localhost SHIELD]# ./autogen.sh
configure.ac:12: installing 'src/build-aux/config.guess'
configure.ac:12: installing 'src/build-aux/config.sub'
configure.ac:48: installing 'src/build-aux/install-sh'
configure.ac:48: installing 'src/build-aux/missing'
configure.ac:724: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
configure.ac:724: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
src/Makefile.am: installing 'src/build-aux/depcomp'
parallel-tests: installing 'src/build-aux/test-driver'

prefixはお好きな場所(インストール先)を指定し、configureを実行します。

[root@localhost SHIELD]# ./configure --prefix=/opt/xsh/ --with-gui=no
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking whether make supports nested variables... (cached) yes
checking whether enable SSE/SSE2 optimizations... yes
checking for g++... g++
checking whether the C++ compiler works... yes
・
・
省略
・
・
config.status: creating src/Makefile
config.status: creating share/setup.nsi
config.status: creating share/qt/Info.plist
config.status: creating qa/pull-tester/run-bitcoind-for-test.sh
config.status: creating qa/pull-tester/build-tests.sh
config.status: creating src/config/SHIELD-config.h
config.status: executing depfiles commands

コンパイル&インストール

コア数を指定してmakeします。
-j〇はコンパイルに使用するCPUコア数を設定してください。(2コアの場合は-j2と記載します。)

[root@localhost SHIELD]# make -j2
make[1]: ディレクトリ `/usr/local/src/SHIELD/src' に入ります
CXX libbitcoin_server_a-addrman.o
CXX libbitcoin_server_a-alert.o
CXX libbitcoin_server_a-bloom.o
CXX libbitcoin_server_a-checkpoints.o
CXX libbitcoin_server_a-init.o
CXX libbitcoin_server_a-db.o
CXX libbitcoin_server_a-txdb-leveldb.o
CXX libbitcoin_server_a-bitcoinrpc.o
CXX libbitcoin_server_a-keystore.o
CXX libbitcoin_server_a-main.o
CXX libbitcoin_server_a-noui.o
CXX libbitcoin_server_a-net.o
net.cpp:1151:13: 警告: ‘void ThreadStakeMinter(void*)’ が定義されましたが使用されません [-Wunused-function]
void static ThreadStakeMinter(void* parg)
^
CXX libbitcoin_server_a-rpcblockchain.o
CXX libbitcoin_server_a-rpcmining.o
CXX libbitcoin_server_a-rpcnet.o
CXX libbitcoin_server_a-rpcrawtransaction.
・
・
省略
・
・
/bin/ar -rs libleveldb.a db/builder.o db/c.o db/db_impl.o db/db_iter.o db/dbformat.o db/dumpfile.o db/filename.o db/log_reader.o db/log_writer.o db/memtable.o db/repair.o db/table_cache.o db/version_edit.o db/version_set.o db/write_batch.o table/block.o table/block_builder.o table/filter_block.o table/format.o table/iterator.o table/merger.o table/table.o table/table_builder.o table/two_level_iterator.o util/arena.o util/bloom.o util/cache.o util/coding.o util/comparator.o util/crc32c.o util/env.o util/env_posix.o util/env_win.o util/filter_policy.o util/hash.o util/histogram.o util/logging.o util/options.o util/status.o port/port_posix.o
/bin/ar: libleveldb.a を作成しています
make[2]: ディレクトリ `/usr/local/src/SHIELD/src/leveldb' から出ます
AR libbitcoin_util.a
AR libbitcoin_server.a
CXXLD SHIELDd
make[1]: ディレクトリ `/usr/local/src/SHIELD/src' から出ます
make[1]: ディレクトリ `/usr/local/src/SHIELD' に入ります
make[1]: `all-am' に対して行うべき事はありません.
make[1]: ディレクトリ `/usr/local/src/SHIELD' から出ます

makeが無事に終わったらmake installでインストール

[root@localhost SHIELD]# make install
Making install in src
make[1]: ディレクトリ `/usr/local/src/SHIELD/src' に入ります
make[2]: ディレクトリ `/usr/local/src/SHIELD/src' に入ります
/bin/mkdir -p '/opt/xsh/bin'
/bin/install -c SHIELDd '/opt/xsh/bin'
・
・
省略
・
・
make[2]: ディレクトリ `/usr/local/src/SHIELD' に入ります
make[2]: `install-exec-am' に対して行うべき事はありません.
make[2]: `install-data-am' に対して行うべき事はありません.
make[2]: ディレクトリ `/usr/local/src/SHIELD' から出ます
make[1]: ディレクトリ `/usr/local/src/SHIELD' から出ます

/opt/xsh/にフォルダが作成され、binフォルダ内にSHIELDdがあればインストール完了です。

[root@localhost SHIELD]# cd /opt/xsh
[root@localhost xsh]# ll
合計 0
drwxr-xr-x 2 root root 21 2月 13 02:01 bin
[root@localhost xsh]# ll bin/
合計 56236
-rwxr-xr-x 1 root root 57581816 2月 13 02:01 SHIELDd

confファイルの作成

SHIELDを実行するにはconfファイルが必要になりますので作成します。
confファイルの場所を/opt/xsh/etcに格納します。

[root@localhost xsh]# mkdir /opt/xsh/etc
[root@localhost xsh]# cd etc/
[root@localhost etc]# vim shield.conf

SHILEDウォレットをデーモン化にし、JSON-RPCの接続を受け付けるように設定します。

たぶん、設定はbitcoin coreと同じだと思います。(bitcoin wiki 参照)

rpcuser=test
rpcpassword=test
rpcport=8332
rpcallowip=127.0.0.1
server=1
daemon=1

SHILEDウォレットの実行

Dataディレクトリの作成

編集が終わればウォレットデータ格納ディレクトリを作成します。

[root@localhost etc]# cd ../
[root@localhost xsh]# ll
合計 0
drwxr-xr-x 2 root root 21 2月 13 02:01 bin
drwxr-xr-x 2 root root 25 2月 13 02:17 etc
[root@localhost xsh]# mkdir var
[root@localhost xsh]# chmod 600 var
[root@localhost xsh]# ll
合計 0
drwxr-xr-x 2 root root 21 2月 13 02:01 bin
drwxr-xr-x 2 root root 25 2月 13 02:17 etc
drw------- 2 root root 6 2月 13 02:18 var

ウォレットの実行

ここまできたらSHIELDウォレットを実行するだけです。

[root@localhost xsh]# /opt/xsh/bin/SHIELDd -daemon -datadir=/opt/xsh/var/ -conf=/opt/xsh/etc/shield.conf
SHIELD server starting
[root@localhost xsh]# ps aux|grep SHIELD
root 7631 59.6 14.9 914824 151632 ? SLsl 02:21 0:39 /opt/xsh/bin/SHIELDd -daemon -datadir=/opt/xsh/var/ -conf=/opt/xsh/etc/shield.conf
root 7644 0.0 0.0 112676 976 pts/0 S+ 02:22 0:00 grep --color=auto SHIELD

varフォルダの使用データが増えていってれば正常に動作しています。

[root@localhost xsh]# du -xsh /opt/xsh/var/
33M /opt/xsh/var/

SHIELDの場合、2018年02月13日02時時点で約460MBになります。
また、「/opt/xsh/bin/SHIELDd -conf=/opt/xsh/etc/shield.conf getinfo」でも稼働状況がわかります。

[root@localhost xsh]# /opt/xsh/bin/SHIELDd -conf=/opt/xsh/etc/shield.conf getinfo
{
"version" : "v2.3.0.0-84ab588-funky-beta",
"protocolversion" : 90005,
"walletversion" : 60000,
"balance" : 0.00000000,
"newmint" : 0.00000000,
"stake" : 0.00000000,
"blocks" : 55592,
"moneysupply" : 209592000.00000000,
"connections" : 7,
"proxy" : "",
"ip" : "123.223.238.129",
"pow_algo_id" : 0,
"pow_algo" : "scrypt",
"difficulty" : 0.00835942,
"difficulty_x17" : 0.00024414,
"difficulty_scrypt" : 0.00835942,
"difficulty_groestl" : 56.35033554,
"difficulty_lyra2re" : 0.16505603,
"difficulty_blake" : 0.00024414,
"testnet" : false,
"keypoololdest" : 1518456087,
"keypoolsize" : 101,
"paytxfee" : 0.05000000,
"errors" : ""
}
[root@localhost xsh]#

blocksが増えていってることで同期されていることが確認できます。

コマンド

コマンド実行する際、「/opt/xsh/bin/SHIELDd -conf=/opt/xsh/etc/shield.conf 〇〇」になるようです。

[root@localhost xsh]# /opt/xsh/bin/SHIELDd -conf=/opt/xsh/etc/shield.conf help
addmultisigaddress <nrequired> <'["key","key"]'> [account]
backupwallet <destination>
checkwallet
createrawtransaction [{"txid":txid,"vout":n},...] {address:amount,...}
decoderawtransaction <hex string>
dumpprivkey <SHIELDaddress>
encryptwallet <passphrase>
getaccount <SHIELDaddress>
getaccountaddress <account>
getaddressesbyaccount <account>
getbalance [account] [minconf=1]
getblock <hash> [txinfo]
getblockbynumber <number> [txinfo]
getblockcount
getblockhash <index>
getblocktemplate [params]
getcheckpoint
getconnectioncount
getdifficulty
getgenerate
gethashespersec
getinfo
getmininginfo
getnewaddress [account]
getnewpubkey [account]
getpeerinfo
getrawblockbynumber <number>
getrawmempool
getrawtransaction <txid> [verbose=0]
getreceivedbyaccount <account> [minconf=1]
getreceivedbyaddress <SHIELDaddress> [minconf=1]
gettransaction <txid>
getwork [data]
getworkex [data, coinbase]
help [command]
importprivkey <SHIELDprivkey> [label]
keypoolrefill
listaccounts [minconf=1]
listaddressgroupings
listreceivedbyaccount [minconf=1] [includeempty=false]
listreceivedbyaddress [minconf=1] [includeempty=false]
listsinceblock [blockhash] [target-confirmations]
listtransactions [account] [count=10] [from=0]
listunspent [minconf=1] [maxconf=9999999] ["address",...]
makekeypair [prefix]
move <fromaccount> <toaccount> <amount> [minconf=1] [comment]
repairwallet
resendtx
reservebalance [<reserve> [amount]]
sendalert <message> <privatekey> <minver> <maxver> <priority> <id> [cancelupto]
sendfrom <fromaccount> <toSHIELDaddress> <amount> [minconf=1] [comment] [comment-to]
sendmany <fromaccount> {address:amount,...} [minconf=1] [comment]
sendrawtransaction <hex string>
sendtoaddress <SHIELDaddress> <amount> [comment] [comment-to]
setaccount <SHIELDaddress> <account>
setgenerate <generate> [genproclimit]
settxfee <amount>
signmessage <SHIELDaddress> <message>
signrawtransaction <hex string> [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [<privatekey1>,...] [sighashtype="ALL"]
stop <detach>
submitblock <hex data> [optional-params-obj]
validateaddress <SHIELDaddress>
validatepubkey <SHIELDpubkey>
verifymessage <SHIELDaddress> <signature> <message>

使い方については後日

-サーバー, linux, 仮想通貨
-, , ,