Skip to content

BitZeny NOMP Mining Pool

cryptozeny edited this page Apr 29, 2018 · 34 revisions

비트제니 NOMP 마이닝풀 만들기

하드웨어 요구사항

  • 2 CPU
  • 4096 MB RAM
  • 50 GB SSD

소프트웨어 요구사항

VPS 구축

https://github.com/cryptozeny/CopyCoinStudy/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4-Ubuntu-16.04-VPS-%EC%84%A4%EC%B9%98

가상화폐 개발환경 구축

https://github.com/cryptozeny/CopyCoinStudy/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4-Ubuntu-16.04-%EA%B0%80%EC%83%81%ED%99%94%ED%8F%90-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EC%84%A4%EC%B9%98

비트제니 설치

비트제니 다운로드 및 컴파일: ~/bitzeny 폴더에 설치된다. 빌드에 약 30분 소요.

$ sudo add-apt-repository ppa:bitcoin/bitcoin -y && sudo apt-get update -y && sudo apt-get install -y software-properties-common libdb4.8-dev libdb4.8++-dev build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils libboost-all-dev libminiupnpc-dev libzmq3-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev && cd && git clone https://github.com/BitzenyCoreDevelopers/bitzeny.git && cd bitzeny/ && git checkout z2.0.x && ./autogen.sh && ./configure && make

비트제니 싱크

싱크는 자동으로 이루어지지만 약 3일 정도 걸린다. 하지만 만약 이미 싱크된 비트제니 노드가 있다면, 다음의 방법으로 약 30분 내외에 가능하다.

미리 싱크된 비트제니 노드에서 복사하기 https://github.com/cryptozeny/CopyCoinStudy/wiki/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-local-to-remote-host

먼저 bitzenyd를 실행시켜 ~/.bitzeny 폴더 및 환경설정을 만든후, 30초 뒤에 자동으로 강제종료시킨다.

$ ~/bitzeny/src/bitzenyd -daemon && sleep 30 && killall bitzenyd

~/.bitzeny 폴더를 확인해 본다.

$ l ~/.bitzeny/
banlist.dat  chainstate/  debug.log          hashes/      peers.dat
blocks/      db.log       fee_estimates.dat  mempool.dat  wallet.dat

원래 있던 blockschainstate 폴더를 삭제다른이름으로 변경

$ mv ~/.bitzeny/blocks/ ~/.bitzeny/blocks.old/ && mv ~/.bitzeny/chainstate/ ~/.bitzeny/chainstate.old/

ANOTHER COMPUTER에서 SERVER(123.123.123.123) (사용자명 HARUKA)로 RSYNC를 이용한 복사. ~/.bitzeny 내부의 blockschainstate 폴더를 전송한다. 약 5분 소요된다.

$ rsync -avzu -e 'ssh' ~/.bitzeny/blocks/ HARUKA@123.123.123.123:~/.bitzeny/blocks/
$ rsync -avzu -e 'ssh' ~/.bitzeny/chainstate/ HARUKA@123.123.123.123:~/.bitzeny/chainstate/

다시 비트제니를 실행하고, 로그를 확인한다.

$ ~/bitzeny/src/bitzenyd -daemon && tail -f ~/.bitzeny/debug.log

WARN 다음과 같은 메세지가 나오면서 시간이 약 30분 정도 소요된다. 다운받은 블록데이터를 검증하는 과정이다. Ctrl+C로 종료되지 않는다. 기다리는 방법밖에 없다. 도저히 안되겠으면 killall -9 bitzenyd로 종료할수는 있지만 추천하지 않는다. 이럴경우 블록체인 데이터가 망가져 다시 다운로드 받아야 할수도 있다.

init message: Loading block index from disk...

기다리면 싱크가 완료될것이다. 다음으로 확인가능. progress=1.000000 이면 완료된것이다.

$ tail ~/.bitzeny/debug.log | grep progress=1
2018-04-25 19:38:49 UpdateTip: new best=000000007ac94bdb2345dc8f28795dc55039e01ff41dca33a741674bf783693a height=1204110 version=0x20000000 log2_work=48.424603 tx=2355252 date='2018-04-25 19:38:15' progress=1.000000 cache=385.3MiB(2603143txo)

비트제니 설정

비트제니 ~/.bitzeny/bitzeny.conf 설정파일을 만든다

$ nano ~/.bitzeny/bitzeny.conf

다음을 입력 WARN usernamepassword는 다른 강력한 암호로 바꾸는것이 좋다.

server=1
rpcuser=username 
rpcpassword=password 
rpcport=9252

비트제니 종료후, 3초 딜레이후, 재시작

$ killall bitzenyd && sleep 3 && ~/bitzeny/src/bitzenyd -daemon

Redis 데이터베이스 다운로드 및 빌드

$ cd && wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make

(옵션) Redis TEST: 약 5분정도 걸린다.

$ sudo apt-get install -y build-essential tcl && make test

설치 sudo 권한이 필요하다 총 2번 입력한다.

$ cd ~/redis-stable && sudo make install && cd ~/redis-stable/utils && sudo ./install_server.sh

다음과 같이 물음에 enter를 입력하면 default로 설정된다. Starting Redis server... 메세지가 나오면 Redis 서버가 자동으로 시작된다.

Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Success!
Starting Redis server...
Installation successful!

Node.js 설치

https://github.com/cryptozeny/CopyCoinStudy/wiki/INSIGHT:-node.js-v0.10.x-%EC%84%A4%EC%B9%98

먼저 Node.js 버젼관리자인 NVM을 설치하고, 그것으로 Node.js v8.11.1 LTS을 설치한다.

$ cd && curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.9/install.sh | bash
로그아웃 & 로그인
$ nvm ls-remote | grep 'v8.11.1'
$ nvm install v8.11.1
$ nvm ls && node -v && npm -v

다음과 같이 출력되면 성공

->      v8.11.1
default -> v8.11.1
node -> stable (-> v8.11.1) (default)
stable -> 8.11 (-> v8.11.1) (default)
iojs -> N/A (default)
lts/* -> lts/carbon (-> v8.11.1)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.14.1 (-> N/A)
lts/carbon -> v8.11.1
v8.11.1
5.6.0

zny-nomp 다운로드 및 설치

https://github.com/cryptozeny/zny-nomp.git

master브랜치가 웹사이트가 매우 느려지는 문제가 있다. fix-slow_website브랜치를 참조한다.

$ cd && sudo apt-get install -y build-essential libsodium-dev 
$ cd && git clone https://github.com/cryptozeny/zny-nomp.git 
$ cd && cd zny-nomp && git checkout fix-slow_website

설치: --build-from-source를 반드시 한다. 이것이 없으면 에러가 난다. 다음에 설명.

$ npm update --build-from-source && npm install --build-from-source

--build-from-source 를 쓰지않으면 이와같은 에러가 난다. 하지만 작동은 된다.

node-pre-gyp ERR! Tried to download(403): https://rvagg-node.s3-us-west-2.amazonaws.com/bignum/v0.12.5/bignum-v0.12.5-node-v57-linux-x64.tar.gz 
node-pre-gyp ERR! Pre-built binaries not found for bignum@0.12.5 and node@8.11.1 (node-v57 ABI, glibc) (falling back to source compile with node-gyp) 

다음과 같이 성공

npm notice created a lockfile as package-lock.json. You should commit this file.
+ body-parser@1.17.1
+ mysql@2.13.0
+ async@2.3.0
+ bignum@0.12.5
+ compression@1.6.2
+ dateformat@2.0.0
+ extend@3.0.0
+ colors@1.1.2
+ express@4.15.2
+ dot@1.1.1
+ node-watch@0.5.2
+ redis@2.7.1
+ request@2.81.0
+ nonce@1.0.4
+ node-json-minify@1.0.0
+ stratum-pool@0.1.6
added 193 packages in 40.404s

zny-nomp 설정

폴더이동후, 파일복제후, WARN 서버주소 123.123.123.123로 문자열치환. 각자의 서버IP로 바꾼다.

$ cd ~/zny-nomp && cp config_example.json config.json && sed -i 's/cryppit.com/123.123.123.123/g' ~/zny-nomp/config.json

coinspool_configs 설정

name은 변경가능

$ cat ~/zny-nomp/coins/bitzeny.json
{
    "name": "Bitzeny",
    "symbol": "ZNY",
    "algorithm": "yescrypt"
}

마이닝풀 설정: ~/zny-nomp/pool_configs/bitzeny.json 설정

$ cd ~/zny-nomp/pool_configs && cp bitzeny_example.json bitzeny.json && nano bitzeny.json

마이닝풀에서 코인이 저장될 주소를 발급한다. 서버에 저장될 비트제니 지갑주소 를 기록해 놓는다.

$ ~/bitzeny/src/bitzeny-cli getaccountaddress ""
서버에 저장될 비트제니 지갑주소

수정사항: http://www.zinntikumugai.com/2018/02/10/-4373-/

  • false(2행)를 true로 변경
  • 서버에 저장될 비트제니 지갑주소getaccountaddress ""로 획득한 주소를 입력. 블록을 발견했을때 이 주소에 들어간 ZNY는 자동으로 분배되어 채굴자의 지갑으로 전송된다. 마이닝풀 운영자의 비트제니 지갑주소는 운영자의 개인주소를 쓰는것이 좋다.
  • "coin": "bitzeny.json"~/zny-nomp/coins/bitzeny.json 이다.
  • "rewardRecipients"는 수수료설정이다. 수수료를 징수하는 주소는 다르게 설정할수도 있다. 현재 1.0%로 설정
{
    "enabled": true,
    "coin": "bitzeny.json",

    "address": "서버에 저장될 비트제니 지갑주소",

    "rewardRecipients": {
        "마이닝풀 운영자의 비트제니 지갑주소": 1.0
    },

    "paymentProcessing": {
        "minConf": 10,
        "enabled": true,
        "paymentMode": "prop",
        "_comment_paymentMode":"prop, pplnt",
        "paymentInterval": 120,
        "minimumPayment": 0.1,
        "maxBlocksPerPayment": 3,
        "daemon": {
            "host": "127.0.0.1",
            "port": 9252,
            "user": "RPC사용자이름",
            "password": "RPC비밀번호"
        }
    },

zny-nomp 실행

$ cd ~/zny-nomp && node init.js

마이닝풀 설정은 다음과같다.

Network Connected:	Mainnet
Detected Reward Type:	POW
Current Block Height:	1204182
Current Connect Peers:	8
Current Block Diff:	31087.109275648
Network Difficulty:	31941.141875460165
Network Hash Rate:	20.33 MH
Stratum Port(s):	3032
Pool Fee Percent:	1%
Block polling every:	500 ms

서버주소에서 8080포트로 연결이 가능하다.

실리콘밸리 http://140.82.49.51:8080

일본 http://163.44.165.174:8080

접속화면은 다음과 같다. 접속화면

다음의 방법으로 채굴자가 마이닝풀에 접속한다. 마이닝풀 사용법

마이닝 테스트

마이닝풀에서 채굴을 하지말고, 다른 컴퓨터에서 실행하는것이 좋다. WARN CPU의 과열에 주의한다.

cpuminer(kawaii) 설치

git clone https://github.com/cryptozeny/cpuminer.git && cd cpuminer/ && git checkout v2.6.0-kawaii && sudo apt-get install -y build-essential libcurl4-openssl-dev automake && ./autogen.sh && ./nomacro.pl && ./configure CFLAGS="-O3" && make

채굴하기: Zq5xs4d2T6HCE7GF1qeiaxr2x77JveytBP는 각자의 비트제니 주소로 바꾼다.

./minerd -o stratum+tcp://163.44.165.174:3032 -u Zq5xs4d2T6HCE7GF1qeiaxr2x77JveytBP

다음과 같이 (kawaii!!!)가 출력되면 성공이다. 하지만 해시파워가 부족하여 실제로 블록을 발견한것은 아니다. 블록을 찾는것은 매우 많은 해시파워가 필요하다.

+ [2018-04-26 06:50:30] accepted: 1/1 (100.00%), 0.88 khash/s (kawaii!!!)

마이닝풀 작동 및 출금 성공

발견된 블럭

Block #1204567
BlockHash 000000017f93289d41020bfebe8a4e466b13f5ec93d8b9d8e17b79737b1d2ca2 

https://insight.bitzeny.jp/tx/bd9e65b4febd607d6ddacf24be841c10acfd3e3e57339ff3b720ae2f113de062

  • ZtuKPEbKgrgS5eocx92t5C3WawaZ3kDUDP 62.5 ZNY 발견된 블럭
  • ZtN5eCDrR9PsjpS4VyxXwMCuHj2PMeKsnD 0.62539624 ZNY 마이닝풀 수수료 1%
  • Zq5xs4d2T6HCE7GF1qeiaxr2x77JveytBP 61.8746 ZNY 채굴자 지급 99%

수수료 1%

$ ~/bitzeny/src/bitzeny-cli getaccountaddress "" && ~/bitzeny/src/bitzeny-cli getbalance
ZszL6w9m8Y3FPaBgbckNHhREh14CnGrw1q
0.62539624

채굴자 지급 99% - 네트워크 전송 수수료

2018-04-26 18:42:45 [Payments]	[bitzeny kawaii network] Sent 61.8746 to 1 miners; txid: bd9e65b4febd607d6ddacf24be841c10acfd3e3e57339ff3b720ae2f113de062

채굴자에게 지급되는 수량은 99 % - 네트워크 전송 수수료: 이것은 마이닝풀에서 채굴자지갑으로 보내는 전송수수료가 포함된다. FEE: 0.00000376 ZNY 그러므로 채굴자가 얻게되는 보상은 99 %에서 약 0.000006016 %을 차감한 98.999993984 % 가 된다. 약 0.000006016 % 이라고 표현한 것은 이것이 네트워크 수수료이기 때문에 변동할수 있다. 현재 2018-04-26 기준 tx fee rate0.00001011 ZNY per kB이며 채굴되는 Newly Generated Coinsblock size372 (bytes)이다.

61.8746 + 0.62539624 = 62.49999624 + 0.00000376 = 62.5

마이닝풀 출력

http://140.82.49.51:8080/stats

서버콘솔 출력

재부팅후 재실행

bitzenyd 재시작 및 60 초zny-nomp 재시작

$ ~/bitzeny/src/bitzenyd -daemon 
데몬이 실행되길 기다린다 시간이 오래 걸릴수 있다.
$ cd ~/zny-nomp && node init.js &

log파일을 남기고 실행하는 방법

로그를 남기는 실행스크립트 만들기: 실행파일 ~/startup-zny-nomp.sh를 만들고 로그는~/zny-nomp.log에 기록된다.

$ cd && echo '#!/bin/bash' >> startup-zny-nomp.sh && echo "node init.js" >> startup-zny-nomp.sh && cat startup-zny-nomp.sh && chmod +x startup-zny-nomp.sh
$ cd && cd ~/zny-nomp && setsid ~/startup-zny-nomp.sh >~/zny-nomp.log 2>&1 < ~/zny-nomp.log &

로그확인

$ tail -f ~/zny-nomp.log

(옵션) 종료

node 종료

$ ps aux | grep node
$ kill <PID번호>

bitzenyd 종료

$ ps aux | grep bitzenyd
$ kill <PID번호>
Clone this wiki locally