当前位置: 首页 > news >正文

区块链入门教程btcpool矿池源码分析环境搭建

# btcpool矿池-测试环境搭建及使用cgminer测试

本文档基于Ubuntu 16.04 LTS, 64 Bits。
![](https://s1.51cto.com/images/blog/201810/29/7555485d8d22fccbea56d0fcf44c6960.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
## 安装Bitcoind+ZMQ

```shell
#Dependencies
apt-get -y install build-essential libtool autotools-dev automake autoconf pkg-config bsdmainutils python3
apt-get -y install libssl-dev libboost-all-dev libevent-dev
apt-get -y install libdb-dev libdb++-dev
apt-get -y install libminiupnpc-dev libzmq3-dev
apt-get -y install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev

#To Build
wget https://github.com/bitcoin/bitcoin/archive/v0.15.1.tar.gz
tar -zxvf bitcoin-0.15.1.tar.gz
cd bitcoin-0.15.1/
./autogen.sh
./configure --with-incompatible-bdb --prefix=/work/bitcoin
make
make install

#start/stop service
cd /work/bitcoin/bin/
./bitcoind --daemon -testnet -zmqpubhashtx=tcp://0.0.0.0:18331 -zmqpubhashblock=tcp://0.0.0.0:18331
#./bitcoin-cli -testnet stop

安装ZooKeeper

#Install ZooKeeper
apt-get install -y zookeeper zookeeper-bin zookeeperd

#mkdir for data
mkdir -p /work/zookeeper
mkdir /work/zookeeper/version-2
touch /work/zookeeper/myid
chown -R zookeeper:zookeeper /work/zookeeper

#set machine id
echo 1 > /work/zookeeper/myid

#edit config file
vim /etc/zookeeper/conf/zoo.cfg

initLimit=5
syncLimit=2
clientPort=2181
clientPortAddress=127.0.0.1
dataDir=/work/zookeeper
#伪分布式
server.1=127.0.0.1:2888:3888

#start/stop service
service zookeeper restart
#service zookeeper start/stop/restart/status

安装Kafka

#install depends
apt-get install -y default-jre

#install Kafka
mkdir /root/source
cd /root/source
wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.11.0.2/kafka_2.11-0.11.0.2.tgz
mkdir -p /work/kafka
cd /work/kafka
tar -zxf /root/source/kafka_2.11-0.11.0.2.tgz --strip 1

#edit conf
vim /work/kafka/config/server.properties

broker.id=1
offsets.topic.replication.factor=1
message.max.bytes=20000000
replica.fetch.max.bytes=30000000
log.dirs=/work/kafka-logs
listeners=PLAINTEXT://127.0.0.1:9092
#伪分布式
zookeeper.connect=127.0.0.1:2181

#start server
cd /work/kafka
nohup /work/kafka/bin/kafka-server-start.sh /work/kafka/config/server.properties > /dev/null 2>&1 &

安装BTCPool

#Build
cd /work
wget https://raw.githubusercontent.com/btccom/btcpool/master/install/install_btcpool.sh
bash ./install_btcpool.sh

如下内容为install_btcpool.sh展开:

CPUS=`lscpu | grep '^CPU(s):' | awk '{print $2}'`

apt-get update
apt-get install -y build-essential autotools-dev libtool autoconf automake pkg-config cmake
apt-get install -y openssl libssl-dev libcurl4-openssl-dev libconfig++-dev libboost-all-dev libmysqlclient-dev libgmp-dev libzookeeper-mt-dev

# zmq-v4.1.5
mkdir -p /root/source && cd /root/source
wget https://github.com/zeromq/zeromq4-1/releases/download/v4.1.5/zeromq-4.1.5.tar.gz
tar zxvf zeromq-4.1.5.tar.gz
cd zeromq-4.1.5
./autogen.sh && ./configure && make -j $CPUS
make check && make install && ldconfig

# glog-v0.3.4
mkdir -p /root/source && cd /root/source
wget https://github.com/google/glog/archive/v0.3.4.tar.gz
tar zxvf v0.3.4.tar.gz
cd glog-0.3.4
./configure && make -j $CPUS && make install

# librdkafka-v0.9.1
apt-get install -y zlib1g zlib1g-dev
mkdir -p /root/source && cd /root/source
wget https://github.com/edenhill/librdkafka/archive/0.9.1.tar.gz
tar zxvf 0.9.1.tar.gz
cd librdkafka-0.9.1
./configure && make -j $CPUS && make install

# libevent-2.0.22-stable
mkdir -p /root/source && cd /root/source
wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure
make -j $CPUS
make install

# btcpool
mkdir -p /work && cd /work
git clone https://github.com/btccom/btcpool.git
cd /work/btcpool
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j $CPUS

启动BTCPool及cgminer测试btcpool

启动gbtmaker

#配置gbtmaker
cd /work/btcpool/build/
mkdir run_gbtmaker
cd run_gbtmaker/
ln -s ../gbtmaker
cp /work/btcpool/src/gbtmaker/gbtmaker.cfg ./
vim gbtmaker.cfg

gbtmaker = {
  rpcinterval = 5;
  is_check_zmq = true;
};
bitcoind = {
  zmq_addr = "tcp://127.0.0.1:18331";
  rpc_addr    = "http://127.0.0.1:18332";
  rpc_userpwd = "bitcoinrpc:xxxx";
};
kafka = {
  brokers = "127.0.0.1:9092";
};

#启动gbtmaker
cd /work/btcpool/build/run_gbtmaker/
mkdir log_gbtmaker
./gbtmaker -c ./gbtmaker.cfg -l ./log_gbtmaker &
tail -f log_gbtmaker/gbtmaker.INFO

启动jobmaker

#配置jobmaker
cd /work/btcpool/build/
mkdir run_jobmaker
cd run_jobmaker/
ln -s ../jobmaker
cp /work/btcpool/src/jobmaker/jobmaker.cfg ./
vim jobmaker.cfg

testnet = true;
jobmaker = {
  stratum_job_interval = 20;
  gbt_life_time = 90;
  empty_gbt_life_time = 15;
  file_last_job_time = "/work/btcpool/build/run_jobmaker/jobmaker_lastjobtime.txt";
  block_version = 0;
};
kafka = {
  brokers = "127.0.0.1:9092";
};
zookeeper = {
  brokers = "127.0.0.1:2181";
};
pool = {
  payout_address = "mi9vpXBWJ31WGpRU7n7VJQG4PvTndHBoCN";
  coinbase_info = "region1/Project BTCPool/";
};

#启动jobmaker
cd /work/btcpool/build/run_jobmaker/
mkdir log_jobmaker
./jobmaker -c ./jobmaker.cfg -l ./log_jobmaker &
tail -f log_jobmaker/jobmaker.INFO

启动sserver

#配置sserver
cd /work/btcpool/build/
mkdir run_sserver
cd run_sserver/
ln -s ../sserver
cp /work/btcpool/src/sserver/sserver.cfg ./
vim ./sserver.cfg

testnet = true;
kafka = {
  brokers = "127.0.0.1:9092";
};
sserver = {
  ip = "0.0.0.0";
  port = 3333;
  id = 1;
  file_last_notify_time = "/work/btcpool/build/run_sserver/sserver_lastnotifytime.txt";
  enable_simulator = false;
  enable_submit_invalid_block = false;
  share_avg_seconds = 10;
};
users = {
  list_id_api_url = "http://index.qubtc.com/apidemo.php";
};

#启动sserver
cd /work/btcpool/build/run_sserver/
mkdir log_sserver
./sserver -c ./sserver.cfg -l ./log_sserver &
tail -f log_sserver/sserver.INFO

cgminer测试btcpool

#安装cgminer
cd /work/
apt-get -y install build-essential autoconf automake libtool pkg-config libcurl3-dev libudev-dev
apt-get -y install libusb-1.0-0-dev
git clone https://github.com/ckolivas/cgminer.git
cd cgminer
sh autogen.sh
./configure --enable-cpumining --disable-opencl
make

#cgminer测试
./cgminer --cpu-threads 3 -o stratum+tcp://127.0.0.1:3333 -u jack -p x

./cgminer --cpu-threads 3 --url 127.0.0.1:3333 --userpass jack:x
#./cgminer -o stratum+tcp://127.0.0.1:3333 -u jack -p x --debug --protocol-dump
#--debug,调试模式
#--protocol-dump,协议输出

启动blkmaker

#安装MySQL
待补充

#配置blkmaker
cd /work/btcpool/build/
mkdir run_blkmaker
cd run_blkmaker/
ln -s ../blkmaker
cp /work/btcpool/src/blkmaker/blkmaker.cfg ./
vim blkmaker.cfg

bitcoinds = (
{
  rpc_addr    = "http://127.0.0.1:18332";
  rpc_userpwd = "bitcoinrpc:xxxx";
}
);
kafka = {
  brokers = "127.0.0.1:9092";
};
pooldb = {
  host = "localhost";
  port = 3306;
  username = "develop";
  password = "iZ2ze3r0li2kgfvjkvs2xeZ";
  dbname = "bpool_local_db";
};

#启动blkmaker
cd /work/btcpool/build/run_blkmaker/
mkdir log_blkmaker
./blkmaker -c ./blkmaker.cfg -l ./log_blkmaker &
tail -f log_blkmaker/blkmaker.INFO

转载于:https://blog.51cto.com/14041296/2310188

相关文章:

  • 镁客网每周硬科技领域投融资汇总(10.21-10.27),AI芯片创企Syntiant获英特尔等头部企业投资...
  • zabbix介绍
  • 如何做需求分析
  • Netty Channel源码分析
  • VPC配置案例
  • 使用CefSharp的一些需要注意的点
  • Kibana配置logstash,报表一体化
  • 读程序员,你焦虑吗有感。
  • 利用github和git命令,将本地项目共享到服务器上——第二章
  • SQL/My sql
  • 微信小程序点击图片放大预览
  • activit5升到flowable后的全局设置的修改
  • Facebook智能bug修复神器:让程序员少掉几根头发
  • Android-来填写一个验证码吧!(二)
  • webpack的使用
  • Create React App 使用
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • ubuntu 下nginx安装 并支持https协议
  • 分布式任务队列Celery
  • 关于 Cirru Editor 存储格式
  • 前端存储 - localStorage
  • 十年未变!安全,谁之责?(下)
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一个SAP顾问在美国的这些年
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 仓管云——企业云erp功能有哪些?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #include
  • #NOIP 2014# day.1 T2 联合权值
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (论文阅读11/100)Fast R-CNN
  • (转)Linq学习笔记
  • ./configure、make、make install 命令
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET 中的轻量级线程安全
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET文档生成工具ADB使用图文教程
  • .NET序列化 serializable,反序列化
  • .sh 的运行
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [CSS]中子元素在父元素中居中
  • [Django 0-1] Core.Checks 模块
  • [Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
  • [HTTP]HTTP协议的状态码
  • [LeetCode] Binary Tree Preorder Traversal 二叉树的先序遍历
  • [loj#115] 无源汇有上下界可行流 网络流
  • [MZ test.16]P2 math 乘方e
  • [office] excel2003进行可视性加密的方法 #媒体#其他#知识分享
  • [Python] scikit-learn之mean_squared_error函数(Mean Squared Error(MSE))介绍和使用案例
  • [SpringBoot] SpringBoot JDBC访问数据库