挖了110个BTC,可惜不值钱

最近在VPS上搭建unomp矿池(https://github.com/UNOMP/unified-node-open-mining-portal),主要参考的文档是官网上的README,遇坑无数,以后有机会再专门写一篇。在最后一步测试矿工与矿池之间能否正常完成挖矿工作时,需要了解一些stratum这个协议的细节。

当前的主流挖矿协议是stratum,以前还有GBT(getblocktemplate)、getwork、getwork with rollntime extension等几种协议,它们都过时了,见bitcointalk上这篇贴子(https://bitcointalk.org/index.php?topic=288963.0)的讨论。关于stratum协议的详细介绍,看这篇贴子(https://en.bitcoin.it/wiki/Stratum_mining_protocol)。

我用unomp搭建好矿池之后,不舍得把正在工作的ASIC矿机停下来用于这个测试,先用免费的Cpuminer软件把协议调通。cpuminer在https://sourceforge.net/projects/cpuminer/files 下载,我使用的是win64的2.5.0版本。

这款小软件在2009年比特币诞生的时候还可以挖矿,现在它存在的意义就在于测试矿池协议了。软件包中的minerd需要几个命令行参数,为了清楚地看到通讯协议的详细内容,我只用了一个线程,并打开了调试选项,用户名是钱包的地址,这里的地址是比特币测试网络的地址。

minerd --algo=sha256d --threads=1 --url=stratum+tcp://my_pool_ip_address:3008 --user=myAzQj4bH4mMF2GpoLSY2v4qVquASTpzR4 --pass=x --debug --protocol-dump

Stratum协议的内容比较多,这篇贴子(https://en.bitcoin.it/wiki/Stratum_mining_protocol)里有详细的介绍,这里只是给出我试验时的一些数据实例,有些内容暂时也不理解,需要以后再学习。以下内容中的客户端表示矿工miner,服务器表示矿池pool。

1. 客户端首先向服务器发送subscribe指令

{"id": 1, "method": "mining.subscribe", "params": ["cpuminer/2.5.0"]}

参数中指名矿工软件的名称和版本号。

2. 服务器端返回信息

比特币挖矿实际上就是去寻找随机数nonce,有时所有的随机数都试遍了,仍无法满足目标,就需要用到extra nonce。

{
    "id":1,
    "result":
    [
        [
            ["mining.set_difficulty","deadbeefcafebabe0100000000000000"], //后面是stratum session id
            ["mining.notify","deadbeefcafebabe0100000000000000"]
        ],
        "70000000",  // ExtraNonce1 十六进制
        4   // ExtraNonce2_size  字节
    ],
    "error":null
} 

3. 客户端发送认证信息

用户名是钱包的地址,我这里使用的是比特币测试网络的地址,并没有以1开头。

{
"id": 2, 
"method": "mining.authorize", 
"params": ["myAzQj4bH4mMF2GpoLSY2v4qVquASTpzR4", "x"]
}

4. 服务器返回true,表示用户验证通过

{"id":2,"result":true,"error":null}

5. 服务器端发回难度设置消息

{"id":null,"method":"mining.set_difficulty","params":[8]}

6. 服务器发送通知消息

{
"method":"mining.notify",
"params":[
    "3d",  // 作业ID
    "af8cecebf98...43100000000", //previous block hash
    "010000000100000....0000000", //generation tx part1
    "0d2f6e6f646.....5b36ec88ac00000000", //generation tx part2
    ["6fb6....80cb","d4464...49a5a290", ... ,"68d803...4ec79d161"], // merkle branches 默克尔树分支
    "20000000", // block version
    "1a3fffc0", // nBits encoded network difficulty
    "5a158226",  //nTime,时间戳
    false   // clean jobs,如果是true,则表示其它矿工爆块了,开始新一轮计算
]
}

矿工可能用到了多线程,所以需要job id来区分不用的线程,后面是一堆用于区块生成的信息。

7. 客户端发现一个nonce,提交给服务器

{
"method": "mining.submit", 
"params": [
    "myAzQj4bH4mMF2GpoLSY2v4qVquASTpzR4", //worker name
    "4c", //job id
    "00000000", //extranonce2
    "5a158557", //nTime
    "6ae65681"  //nonce
], 
"id":4
}

8. 服务器返回结果,返回true表示服务器认可客户端的工作

{
"id":4,
"result":true,
"error":null
}

我用ASIC矿机测试了3个小时的通讯协议,在比特币Testnet上挖了60多个新块,总共110个BTC,别以为我发财了,比特币的TestNet测试网络是给软件开发人员使用的,这些币没什么价值,但如果你要进行一些BTC交易的软件测试,手里没有点测试币也是一件挺麻烦的事,毕竟用CPU也得挖上一段时间。

如果哪位编程人员需要,留言区留下比特币测试地址(注意是testnet上的地址,通常是以m开头的),我免费转给你玩玩。

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-12-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏极乐技术社区

一周小程序【资讯教程】更新

轻松一刻 ? 漫画来自于西乔《神秘的程序员们》 官方资讯更新 [新功能]小程序再添新功能,APPx生成工具要火的节奏! 小程序又上线新能力——云监控 最新《20...

1977
来自专栏微信小开发

微信公众平

功能定位 ? 微信公众平台 微信主要价值:在于让企业的服务意识提升,在微信公众平台上,企业可以更好的提供服务,运营方案上面有很多方式,可以是第三方开发者模式;也...

2095
来自专栏企鹅号快讯

微信年度最重磅发布!小游戏突然上线,游戏行业会变天么?

为了帮助用户更便捷地使用小程序,微信在刚刚又更新了3个新功能: 1、微信在主界面新增小程序任务栏功能 2、小程序菜单升级,支持小程序间快速切换 3、开放了小游戏...

1799
来自专栏极乐技术社区

一周小程序【资讯教程Demo】更新

轻松一刻 叹息的进化 ? 微信小程序官方更新 ? 资讯与教程 微信小程序开发之IOS/Android兼容坑 微信小程序登录逻辑整理 苹果取消打赏抽成,微信狂推小...

2069
来自专栏Phoenix的Android之旅

你的手机摄像头可能正在被监控

昨天晚上有用户Post了这么一张图, 他在使用 Telegram 聊天app的过程中没有打开摄像头拍照,但是摄像头却自己弹了出来。

712
来自专栏安智客

《密码模块安全技术要求》解读

今天要讲到的是密码模块安全认证! 中国密码行业标准化技术委员会分别在2014年、2015年制定了GM/T 0028-2014《密码模块安全技术要求》和GM/T ...

4007
来自专栏企鹅号快讯

小程序的常用入口简介

附近的小程序 商家可以设置门店小程序场景展示,附近固定范围内的用户才可以看到商户出现在“附近的小程序”。 搜索小程序 小程序可以模糊搜索也可以精准搜索。小程序后...

2026
来自专栏木子昭的博客

<讲个故事>cookie是什么?

cookie 前几天,去"有间"发廊理发,人很多,理发小哥建议办张会员卡,可以VIP通道免排队,还有充599送100的优惠,适逢月初,还没到吃土的时节,充值60...

3218
来自专栏coder修行路

关于python开发CRM系统

注意本项目是针对培训学校开发简化的CRM CRM简介 CRM全称:customer relationship management 无CRM的痛点 没有CMR的...

2089
来自专栏bboysoul

在自己的网站上嵌入挖矿脚本

说实在的使用谷歌广告赚钱真的是太慢了,一个网站我苦心经营那么长时间得到的回报是0,这就有点过分了,不过最近网页使用js挖矿很流行,我们为什么不使用这个来得到点回...

471

扫描关注云+社区