Go语言+区块链教程btcpool矿池源码分析slparse

Connor 以太坊行情 2022-06-26 379 0

  Go语言+区块链教程btcpool矿池源码分析slparse,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落eth挖矿教程。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。

  # btcpool矿池-slparser(share log parser)模块解析

  ## 核心机制总结

  * 支持三种功能:

    * 指定Date和UIDeth挖矿教程,将打印指定日期指定用户的share信息到stdout

      * UID=0时eth挖矿教程,将打印指定日期所有用户的share信息

    * 指定Date但未指定UIDeth挖矿教程,读取指定日期sharelog,统计数据并写入数据库

      * 按Worker、user、pool三个维度统计:Accept1h、Accept1d、score1h、score1d、Reject1h、Reject1d

      * 数据库仅保留最近3个月统计数据

    * 如果Date和UID均未指定eth挖矿教程,将监听文件变化,读取share并统计数据,每15秒写入数据库

      * 同时启动   ## slparser命令使用

  ```shell

  slparser -c slparser.cfg -l log_dir

  slparser -c slparser.cfg -l log_dir2 -d 20160830

  slparser -c slparser.cfg -l log_dir3 -d 20160830 -u puid

  #-c指定slparser配置文件

  #-l指定日志目录

  #-d指定日期

  #-u指定PUID(即userId)

eth挖矿教程

,userId为0时dump all, >0时仅输出指定userId的sharelog   ## slparser.cfg配置文件

  ```shell

  slparser = {

  #指定IP和端口

  ip = "0.0.0.0";

  port = 8081;

  #每间隔15s写库

  flush_db_interval = 15;

  #指定sharelog文件路径

  sharelog = {

  data_dir = "/data/sharelog";

  #数据库配置

eth挖矿教程

,表为table.stats_xxxx   pooldb = {

  host = "";

  port = 3306;

  username = "dbusername";

  password = "dbpassword";

  dbname = "";

  ## slparser流程图

  ## bpool_local_stats_db数据库结构

  [bpool_local_stats_db.txt](bpool_local_stats_db.txt)

  ```c++

  DROP TABLE IF EXISTS `stats_pool_day`;

  CREATE TABLE `stats_pool_day` (

  `day` int(11) NOT NULL,

  `share_accept` bigint(20) NOT NULL DEFAULT '0',

  `share_reject` bigint(20) NOT NULL DEFAULT '0',

  `reject_rate` double NOT NULL DEFAULT '0',

  `score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',

  `earn` bigint(20) NOT NULL DEFAULT '0',

  `lucky` double NOT NULL DEFAULT '0',

  `created_at` timestamp NULL DEFAULT NULL,

  `updated_at` timestamp NULL DEFAULT NULL,

  UNIQUE KEY `day` (`day`)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  DROP TABLE IF EXISTS `stats_pool_hour`;

  CREATE TABLE `stats_pool_hour` (

  `hour` int(11) NOT NULL,

  `share_accept` bigint(20) NOT NULL DEFAULT '0',

  `share_reject` bigint(20) NOT NULL DEFAULT '0',

  `reject_rate` double NOT NULL DEFAULT '0',

  `score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',

  `earn` bigint(20) NOT NULL DEFAULT '0',

  `created_at` timestamp NULL DEFAULT NULL,

  `updated_at` timestamp NULL DEFAULT NULL,

  UNIQUE KEY `hour` (`hour`)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  DROP TABLE IF EXISTS `stats_users_day`;

  CREATE TABLE `stats_users_day` (

  `puid` int(11) NOT NULL,

  `day` int(11) NOT NULL,

  `share_accept` bigint(20) NOT NULL DEFAULT '0',

  `share_reject` bigint(20) NOT NULL DEFAULT '0',

  `reject_rate` double NOT NULL DEFAULT '0',

  `score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',

  `earn` bigint(20) NOT NULL DEFAULT '0',

  `created_at` timestamp NULL DEFAULT NULL,

  `updated_at` timestamp NULL DEFAULT NULL,

  UNIQUE KEY `puid_day` (`puid`,`day`)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  DROP TABLE IF EXISTS `stats_users_hour`;

  CREATE TABLE `stats_users_hour` (

  `puid` int(11) NOT NULL,

  `hour` int(11) NOT NULL,

  `share_accept` bigint(20) NOT NULL DEFAULT '0',

  `share_reject` bigint(20) NOT NULL DEFAULT '0',

  `reject_rate` double NOT NULL DEFAULT '0',

  `score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',

  `earn` bigint(20) NOT NULL DEFAULT '0',

  `created_at` timestamp NULL DEFAULT NULL,

  `updated_at` timestamp NULL DEFAULT NULL,

  UNIQUE KEY `puid_hour` (`puid`,`hour`),

  KEY `hour` (`hour`)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  DROP TABLE IF EXISTS `stats_workers_day`;

  CREATE TABLE `stats_workers_day` (

  `puid` int(11) NOT NULL,

  `worker_id` bigint(20) NOT NULL,

  `day` int(11) NOT NULL,

  `share_accept` bigint(20) NOT NULL DEFAULT '0',

  `share_reject` bigint(20) NOT NULL DEFAULT '0',

  `reject_rate` double NOT NULL DEFAULT '0',

  `score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',

  `earn` bigint(20) NOT NULL DEFAULT '0',

  `created_at` timestamp NULL DEFAULT NULL,

  `updated_at` timestamp NULL DEFAULT NULL,

  UNIQUE KEY `puid_worker_id_day` (`puid`,`worker_id`,`day`),

  KEY `day` (`day`)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  DROP TABLE IF EXISTS `stats_workers_hour`;

  CREATE TABLE `stats_workers_hour` (

  `puid` int(11) NOT NULL,

  `worker_id` bigint(20) NOT NULL,

  `hour` int(11) NOT NULL,

  `share_accept` bigint(20) NOT NULL DEFAULT '0',

  `share_reject` bigint(20) NOT NULL DEFAULT '0',

  `reject_rate` double NOT NULL DEFAULT '0',

  `score` decimal(35,25) NOT NULL DEFAULT '0.0000000000000000000000000',

  `earn` bigint(20) NOT NULL DEFAULT '0',

  `created_at` timestamp NULL DEFAULT NULL,

  `updated_at` timestamp NULL DEFAULT NULL,

  UNIQUE KEY `puid_worker_id_hour` (`puid`,`worker_id`,`hour`),

  KEY `hour` (`hour`)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

评论