2014年7月24日木曜日

ethereumをビルドしてみる


突然Newsletterが届いたので、ethereumをビルドしてみました。

今どういうフェーズなのか知りませんが、とりあえず何も考えずにビルド。


wikiを見ながら試しました。

とりあえず準備。
sudo apt-get update && sudo apt-get upgrade

まず、必要パッケージのインストール。

sudo apt-get install build-essential g++-4.8 git cmake libgmp-dev \
libboost-all-dev automake unzip libtool libleveldb-dev yasm libminiupnpc-dev \
libreadline-dev scons libncurses5-dev qtbase5-dev qt5-default qtdeclarative5-dev \
libqt5webkit5-dev libcurl4-openssl-dev


Cryptopp 5.6.2が必要だそうですが、libcrypto++-devにはCrypto++ v5.6.1しかないので、ソースからビルドする。

git clone https://github.com/mmoss/cryptopp.git
cd cryptopp
sudo scons --shared --prefix=/usr
cd ..


JSONRPCもソースから。

git clone git://github.com/cinemast/libjson-rpc-cpp.git
cd libjson-rpc-cpp/build
cmake .. && make
sudo make install
sudo ldconfig
cd ..


ethereumのソースを拾って来る。

git clone https://github.com/ethereum/cpp-ethereum
cd cpp-ethereum
git checkout develop


ビルドする。

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release && make


CUIで起動
cd eth
./eth


GUIで起動
cd alethzero
./alethzero


この辺を見ながら動かしてみたけど、いまいち何が起きてるのか不明。

ま、とりあえずメモってことで。

Read More...

2014年7月21日月曜日

意外と簡単に動いた! monacoindのビルドから実行まで


何か暗号通貨関連でサービスを作りたいと思い立ち、準備運動としてWalletのビルドを前回やったので、次にデーモンのビルドを試してみます。

最近TVで報道されたり、暴騰したりで話題のMonacoinのmonacoindをビルドしてみます。


前回Walletをビルドする際に、必要そうなパッケージはあらかた突っ込んだので、今回は非常にシンプルです。
$ git clone git://github.com/monacoinproject/monacoin.git
$ cd monacoin/src
$ make -f makefile.unix

ビルドし終わったら、「/usr/local/bin」あたりに放り込んで実行します。
$ monacoind
Error: To use monacoind, you must set a rpcpassword in the configuration file:
It is recommended you use the following random password:
rpcuser=monacoinrpc
rpcpassword=EvCj7irBs1egMX33HixQ6Hv481neRF9Jm8qmFwRKdUJy
(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 "Monacoin Alert" admin@foo.com

なんか怒られました。

設定ファイルでrpcpasswordを設定しろとのことです。
オーナーのみ読み込み可能なように設定するべきと書いてあります。

ということで、指定どおりファイルを作成し編集する。
$ touch monacoin.conf
$ vi monacoin.conf

#中身は言われた通りに設定してみる。
rpcuser=monacoinrpc
rpcpassword=EvCj7irBs1egMX33HixQ6Hv481neRF9Jm8qmFwRKdUJy

#同じく指示通りオーナーのみ読み込み可能に。
$ chmod 400 monacoin.conf

#実行する。
$ monacoind

初めてmonacoindを実行すると、debug.logがモリモリ増量していきます。
初回の同期処理をしてるんだと思いますが、100M超えたあたりで不安になりました。。

不安なのでdebug.logを監視してみます。
$ tail -f debug.log

height(何ブロック目まで読み込んだか)の値が少しずつ大きくなっていっているので何か動いている風です。
しばらく待って、最新のブロックまで読み込んだ後、再起動したところdebug.logは200kぐらいになりました。

実際のデータはblocksディレクトリの中だと思われます。


では、実際にAPIを叩いて動作しているか確認してみます。

monacoindをデーモンとして起動します。
$ monacoind -daemon
Monacoin server starting

いくつかAPIを呼んでみます。

  • ヘルプ

$ monacoind help
だーっとヘルプが表示されます。


  • monacoindを停止

$ monacoind stop
Monacoin server stopping

#この状態でAPIを呼ぶと当然エラー
$ monacoind help
error: couldn't connect to server


  • 再起動してから残高を表示

$ monacoind -daemon
Monacoin server starting
$ monacoind getbalance
0.00000000


  • 最新のブロック番号を表示

$ monacoind getblockcount
197067


  • 現在のdifficultyを表示

$ monacoind getdifficulty
227.03475154


  • もろもろの情報をまとめて表示

$ monacoind getinfo
{
    "version" : 80700,
    "protocolversion" : 70002,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 197069,
    "timeoffset" : 26,
    "connections" : 8,
    "proxy" : "",
    "difficulty" : 168.17490151,
    "testnet" : false,
    "keypoololdest" : 1405931648,
    "keypoolsize" : 101,
    "paytxfee" : 0.00000000,
    "mininput" : 0.00001000,
    "errors" : ""
}


  • 受信用アドレスの情報を表示
以下だと取引の発生していないアドレスは表示されません。

$ monacoind listreceivedbyaddress
[
]


  • すべての受信用アドレスの情報を表示
取引の発生していないアドレスも表示されます。

$ monacoind listreceivedbyaddress 0 true
[
    {
        "address" : "MENrRKiTwgXSGxczz62Jk7AFq67pLYpdWV",
        "account" : "",
        "amount" : 0.00000000,
        "confirmations" : 0,
        "txids" : [
        ]
    }
]


  • 取引発生後の受信用アドレス
別のWalletから上記アドレスに0.01MONA送金後、こんどはオプション無しで表示されました。

$ monacoind listreceivedbyaddress
[
    {
        "address" : "MENrRKiTwgXSGxczz62Jk7AFq67pLYpdWV",
        "account" : "",
        "amount" : 0.01000000,
        "confirmations" : 7,
        "txids" : [
            "f1a4f98965f45d69abbced94c94e0daa6c4b8106593b8836f2d3d8dc2244d1e6"
        ]
    }
]


  • 取引発生後のすべての受信用アドレス
取引発生後、内部的に新しいアドレスが追加された模様。

$ monacoind listreceivedbyaddress 0 true
[
    {
        "address" : "MENrRKiTwgXSGxczz62Jk7AFq67pLYpdWV",
        "account" : "",
        "amount" : 0.01000000,
        "confirmations" : 7,
        "txids" : [
            "f1a4f98965f45d69abbced94c94e0daa6c4b8106593b8836f2d3d8dc2244d1e6"
        ]
    },
    {
        "address" : "MNVb8W1dHD4jNGRtCayhiMzojGontESw8r",
        "account" : "",
        "amount" : 0.00000000,
        "confirmations" : 0,
        "txids" : [
        ]
    }
]


  • 送金テスト
0.001MONAを送金してみます。

$ monacoind sendtoaddress MR2j3u5oNWZzAAxeHtSinHUEVNiSbkn8zJ 0.001
02f4ab46964f9a55dd0554a5764725e10513b1ad402b939a96e2273d531c9773

早速Windowsに入れているWalletに0.001MONA届きました。


ちなみに激しく貧乏なのは、1MONAが7円ぐらいに跳ね上がった時に、焦って全部Bitcoinにしてしまったためです。。
まさかあそこから30円突破まで行くとは。。


ということで、なんかサービス作るのでMonacoinで寄付下さいw

MR2j3u5oNWZzAAxeHtSinHUEVNiSbkn8zJ


Read More...

2014年6月1日日曜日

Linux用walletをビルドする


そういえば、一度もWalletを自分でビルドしたことが無かったので、Walletのビルドを試してみました。
ビルドの実験はVMware上のUbuntuで作業しました。


まずは最近無事完全PoSへ移行したRingoで試します。

GitHub
https://github.com/dkwzjw/ringo


「INSTALL」を見ると以下のような記載があります。

Building Ringo

See doc/readme-qt.rst for instructions on building Ringo QT,the intended-for-end-users, nice-graphical-interface, reference implementation of Ringo.


まずはdoc/readme-qt.rstを見ろと書いてあり、見ると以下のように記載されています。

First, make sure that the required packages for Qt5 development of your distribution are installed, for Debian and Ubuntu these are:

apt-get install qt5-default qt5-qmake qtbase5-dev-tools qttools5-dev-tools build-essential libboost-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev libssl-dev libdb++-dev

then execute the following:
qmake
make

Qt(キュートと読む)というのは、アプリケーション開発フレームワークで、クロスプラットフォーム対応が楽な設計になっているとか。

事前準備として、そのQt開発に必要なパッケージをインストールします。
$ apt-get install qt5-default qt5-qmake qtbase5-dev-tools qttools5-dev-tools build-essential libboost-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev libssl-dev libdb++-dev

次にgitをインストールします。
$ sudo apt-get install git

次にringoのリポジトリを複製します。
今回は/tmpで作業。
$ cd /tmp
$ mkdir ringo
$ cd ringo
$ git clone git://github.com/dkwzjw/ringo.git ./

git cloneしてあげると、GitHubからringoのソースコードをごっそり持ってくるので、Makefileを作成し、makeします。
configureじゃなくてqmakeなんですね。
$ qmake
$ make

なにやらエラーを吐きました。
src/net.cpp:19:32: fatal error: miniupnpc/miniwget.h: そのようなファイルやディレクトリはありません
 #include <miniupnpc/miniwget.h>
                                ^

以下で必要なパッケージをインストールしたらいけました。
$ sudo apt-get install libminiupnpc-dev libminiupnpc8


が、思いっきり文字化けw


既にコンソールに日本語が出ていたので、ロケール設定には問題ないはず。
$ env | grep LANG
LANG=ja_JP.UTF-8

やはり問題無いですね。

フォントがインストールされてないだけか?ということで、IPAフォントを入れてみます。
$ sudo apt-get install fonts-ipafont

うーん、あと一歩w漢字が表示出来ない。。


よく分からないですが、動作には問題なさそうなので、文字化け問題は一旦放置して、Vertcoinでもやってみます。

基本的な作りは本当に皆同じなんですね。

ほぼ同じように作業したところ、Makefile作るときに、なにやらエンコードか何かのエラーが出ましたが、とりあえずうまくいきました。

ちなみに、ホームディレクトリにringoフォルダや、vertcoinフォルダが出来ているんですが、隠しディレクトリです。
lsコマンドに「-a」オプションを付ければ見えます。


ちなみに、BAMTでも試してみたのですが、ビルドは出来たんですが、容量不足とか言われて同期出来ませんでした。
たしかに、結構容量喰うんですよね。
Read More...

Fujicoin始まりました


Fujicoinが日本時間の6/1 6:00にローンチしました。

Fujicoinの情報
http://www.fujicoin.org/index-ja.html
http://www55.atpages.jp/~cctj/index.php?topic=5.0


Ringo祭りには参加出来なかったので、今回は参加しておきます。

5分前にUPされたWalletをダウンロードしてみたところ、ノートン先生から警告。

様々な暗号通貨をインストールしてきましたが、これ出たの初めてです。

いつもは、Suspicious.Cloud.9とか、「なんか怪しいよー」ぐらいのしか出たことが無かったので、ちょっと怖いです。

単純に暗号通貨の採掘アルゴリズムが入ってるという意味なのか、知らないうちに誰かのためにせっせと働かされるという意味なのか。

まぁ誤検知なんでしょうが、Walletのインストールは後回しにして、ひとまずは世界中の人柱様達に一旦はお任せすることにします。


ローンチ後1時間のブロック報酬は1コインとのことなので、6時台から堀りはじめても電気代の無駄なのですが、とりあえず試しにPoolで掘ってみます。

あれ??

まだ6時台ですが、モリモリとUnconfirmedが増えていきます。

Crypto Coin Talk Japanを見ると、以下の記述が。

S-Curve報酬は既に始まっています

ローンチと同時に一気にブロックが進みました。現在1000くらい。
S-Curveはブロック500から始まるのですが、想定外に早く始まりました。
多分エポックタイムからの遅れを取り戻すように動作しているんですね。
知りませんでした。


どうやら、開発者の方も想定外だったようです。

しかし、今7:20の時点で、Poolの表示でNet Hashrate 15.39 MH/s です。

ガチな人達はあまり参入していないということなのか、いくらScrypt-Nだからと言って、ちょっと低すぎる気がします。

まぁせっかくローンチから堀りはじめたので、部屋の暑さに負けるまでは、掘り続けようかと思います。

もう負けそうだけど。。


Read More...

2014年5月21日水曜日

部屋が暑くて挫けそう。。 暗号方式とGPU温度と効率


人類は、太陽を手に入れた。

そして、我が家はMining Rigを手に入れた。

結構な熱源が常に猛威を振るっている我が家から、暗号方式とGPU温度と効率についてお届けします。


まずは、MonacoinやLitecoinなどのScryptの通貨。

こいつらを掘っていると、GPU温度はかなり高くなります。
最も温度が高いGPUが73℃ということで、冬は暖房要らずでした。

次にQuarkcoinのクローンのKumacoin。
最も温度が高いGPUが55℃で、Monacoinと比較して18℃も低い。

最後はDarkcoinなどのX11。
最も温度が高いGPUが59℃で、Kumacoinよりも4℃高い。


ということで、Scryptはやはり温度が高く、また消費電力も大きいっぽい。

そして、QuarkやX11は比較すると温度が低く、Quarkの方がさらに温度が低い。
ワットチェッカーなどで計っては無いものの、恐らく消費電力も小さいんだと予想できます。


そしてScryptで2Mhash/sの我が家のMining Rigによる、Bitcoin入手効率を考えてみます。

まぁグラボで掘っているので、電気代で基本的には赤字ですが。。


Monacoinの場合は、1日で手に入るBitcoinは0.006~0.007BTCほどで安定。

ちょっと前にかなりの高効率だったKumacoinは、バグやらBlock timeの変更などを経て、20分の1ぐらいまで値下がりしているので、せいぜい0.003BTC程度。

X11のコインをマルチプールで掘った場合は、タイミングによって大きく変わるものの、0.006~0.012BTCほど。
これは同じマルチプールで掘った場合、Scryptのコインでも同じぐらいでした。


ということで、この暑さに耐えながら現状続けるのであれば、新規コイン狙いを続けるか、GPU温度、電気代を考えて、マルチプールでX11を掘り続けるしかなさそうです。

マジで暑いです。


Read More...

2014年5月2日金曜日

結構な高効率!? Litecoin BAMT 1.6.2でKumacoinを掘る


現時点で最新版のBAMT 1.6.2には、scrypt以外の暗号方式にも対応したsgminerが入っています。

ちょうどローンチしたばかりのKumacoinがquarkのクローンなので、BAMTを新しくして掘ってみます。


以下のページから最新版をダウンロードし、いつも通りインストールします。

Topic: Litecoin BAMT - Easy USB Linux mining distro (MARCH 29 update, v1.6.2, PiMP!)  (Read 358728 times)


デフォルトではcgminer.confを読みにいって、scryptで採掘を始めてしまいますので、若干設定が必要です。

まずは、/etc/bamtにあるbamt.confを以下の通り修正します。

CONFIG OPTIONSのところにどのconfファイルを読みにいくかの設定がありますので、cgminer.confをコメントアウトし、sgminer-sph.confのコメントアウトを外します。

#cgminer_opts: --api-listen --config /etc/bamt/cgminer.conf
cgminer_opts: --api-listen --config /etc/bamt/sgminer-sph.conf

これで、sgminer-sph.confを読みにいくようになります。

また、以下オプションがデフォルトではゼロなので1に修正します。

miner-sgminer-sph: 1

次に同じフォルダにあるsgminer-sph.confを修正します。

sgminer-sph.confについては、基本的にcgminer.confと同じなので、いつも通りurlやuser、passあたりを設定します。

今回はquark方式のKumacoinを掘るので、kernelを以下のように設定します。

"kernel" : "quarkcoin",

あとはリスタートするだけです。

scryptのコインを掘ると2Mhash/sの構成なのですが、5Mhash/sも出ました!

kuma MD poolのpool読みではバグがあるようで、Dashboardでは「My Hashrate 24.47 KH/s」と表示されたり、Statisticsでは5M~8Mhash/sぐらいで表示されたりよく分かりません。

が、Balanceの増え方的には5Mhash/sぐらい出ているような感じです。
この記事を書いている間にも、Unconfirmedが800KUMAぐらいになりました。


1日の稼ぎはというと、Poolの表示を見ると、5Mhash/sで日に9,000KUMAほどになります。

もなとれで見ると1KUMAが0.024MONAで取引されているので、216MONAです。

Difficultyが安定しないので何とも言えませんが、このままなら結構な高効率です。

scrypt系コインのマルチプールで掘った場合、0.006~0.01BTC/Dayぐらい。
MONAを掘った場合、100MONA/Day⇒0.01BTC/Dayぐらい。
KUMAを掘った場合、9,000KUMA⇒216MONA⇒0.02BTC/Dayぐらい。

Difficultyの上昇と、価格の下落ですぐMONA並みになるかもしれませんが、現時点ではダントツですね。
これなら電気代もペイ出来ます。


ということで、グラボを売っぱらってASIC買おうかと思ってましたが、乗り遅れた後悔を噛み締めながらも、しばらくはKUMAを掘ります。

Read More...

2014年4月29日火曜日

cgminer.confの最適値を探す旅 続き


Rigが不安定だったので頓挫していた、cgminer.confの最適値を探す旅を仕切りなおします。

まぁ正直言うとグラボでのマイニングは既にオワコンなので、いまさら感満載です。。

また、夏が訪れることを考えると、低電圧、低クロックの省電力な設定を追い求めるべきかもしれませんし、なんならグラボを売りさばくのが正解のような気もします。

その辺のまじめな話はとりあえず置いておいて、一度やり始めたことを完遂しようと思います。


※これはあくまでも、自分の環境(GIGABYTEのR9 270 GV-R927OC-2GD)における最適値を探すという話です。

  • intensity

その1でintensityの最適値は19と結論付けました。


  • thread-concurrency

thread-concurrencyは、GPUスレッドの同時実行数の設定で、シェーダー数の整数倍が推奨されています。

適当に検索して拾った設定値が15,000で、ぜんぜん整数倍じゃなかったので、その付近の整数倍から試してみます。

ちなみに、R9 270のシェーダー数は1,280なので、その11倍と12倍の間で試します。


上から14,080、14,336、15,000、15,232、15,360です。

11倍の14,080とそこに256足した14,336がハイスコアでした。
12倍の15,360になると少しハッシュレートが落ちるようです。

ここは順当に11倍の14,080を最適値ということにします。


  • gpu-engine

gpu-engineはいわゆるGPUコアのクロックで、簡単にオーバークロック出来ます。

R9 270のgpu-engineはデフォルトが975で、適当に検索して拾った設定値が1,110だったので、そのあたりで探します。
ちなみに、そもそもの975が既にオーバークロックされています。

上から975、1,000、1,050、1,100、1,150です。

上げすぎても逆効果のようですね。

意外にデフォルトのままでも問題ないぐらいでしたが、一応最適値は1,000ということにします。

  • gpu-memclock
gpu-memclockはメモリコアのクロックで、同じくオーバークロック可能です。
R9 270のgpu-memclockはデフォルトが1,400で、拾った設定値が1,500だったので、そのあたりで探します。

上から1,400、1,425、1,450、1,475、1,500です。

言うほど変わらないようなので、最適値は1,425ということにします。


ということで、intensity:19、thread-concurrency:14,080、gpu-engine:1,000、gpu-memclock:1,425を最適ということにします。


そういえばRigを組んだ当初は、なにやら480khash/sぐらい出てた気がするんですが、あれは何だったのでしょう?

その際はthread-concurrency:15,000で、gpu-engine:1,110、gpu-memclock:1,500に設定していた気がするのですが、定かではありません。

当時と異なるのは、グラボが増えたのと、明らかに気温があがったことで、確かにコア温度が10度近く上がっているので、その当たりが影響しているのかもしれません。


ということで、もはやどうでも良い話かつ、中途半端な結論という、どうでも良い記事ですが、色々と設定を試す過程は、ASICでも同じだと思いますので、一応意味があるということにしておきます。

さて、グラボ売ってGridseedでも買うかなぁ。。


Read More...