挖矿从入门到精通(四)
入门——挖矿基础知识
上期介绍了POW挖矿的整个逻辑过程,但如今挖矿行业有两大主体:矿池和矿工,两者究竟是何关系?又是通过什么方式合作完成整个挖矿过程的?挑Sir带给你答案!
POW挖矿过程
矿池与矿工之间的通讯协议为基于JSON-RPC 2.0的stratum协议,接下来挑Sir将通过解析一个stratum协议来介绍矿池和矿工如何合作完成挖矿。
stratum协议
准备工作
在矿池与矿工连接之前,矿池需要完成的工作有:
从未确定交易池中选择待打包交易
得出区块结构中的区块大小,区块交易数与交易列表以及区块头中的常量Version,Bits,PrevBlock。
根据待打包交易构造coinbase交易,将coinbase交易进行hex转码并分为 Coinb1,ExtraNonce1,ExtraNonce2,Coinb2。
将其他代打包交易进行预处理,形成merkle_branch,merkle_branch可直接与coinbase交易构造MerkleRoot。
备注:
从未确定交易池中选择交易,通常尽可能多的优先选择手续费高的交易
由于coinbase交易没有输入方,输入字段有可随意修改的区域,故stratum协议将coinbase交易进行分割,将不可修改部分设定为Coinb1和Coinb2,将可修改部分设定为ExtraNonce1,ExtraNonce2,其中ExtraNonce1由矿池加入标记字段,ExtraNonce2交由矿工遍历,以解决Nonce与Time搜索空间小的问题。
形成的merkle_branch在下发给矿工时,与将所有交易全部下发给矿工的方式相比大大减小了传输量。
准备工作可以保证给矿工的任务准确下发,下面解析矿工连接矿池的步骤。
矿机连接
1.矿机发送请求
矿机使用mining.subscribe方法,向矿池提出请求
2. 矿池回应请求
矿池使用mining.notify方法回应请求,返回订阅号,ExtraNonce1,ExtraNonce2_Size,难度。
其中,订阅号作为标记,ExtraNonce1为矿池修改的coinbase可修改字段,ExtraNonce2_Size为交由ExtraNonce2的字节数,难度为矿池根据矿机算力下发,远小于全网难度。
3. 矿机登陆矿池
矿机使用mining.authorize方法登陆矿池。
4.矿池返回登陆结果
矿池使用server.result方法返回登陆成功提示。
5.矿池分配任务
矿池使用mining.notify方法分配任务,返回job_id,PrevBlock,Coinb1,Coinb2,merkle_branch,Time,Bits,Version,clean_jobs。
其中job_id作为标记,PrevBlock,Bits,Version为区块头组成部分,Coinb1,Coinb2为coinbase组成部分,merkle_branch为生成MerkleRoot的必要字段,Clean_jobs为任务停止标示,当当前区块已被爆出,矿池可以将这一项设为ture,矿机将中止任务 。
至此,矿机接收到了构造一个区块头需要的所有信息,在Nonce,Time,ExtraNonce2三个可变量内进行随机取值后构造区块头,进行hash运算并与难度验证,当找到符合条件的一组值时,进行任务提交。
比特币区块结构,点击查看“【挖矿从入门到精通】【入门篇】POW挖矿逻辑过程”
6.矿机提交share
当矿机发现满足下发难度的一组值时,以mining.submit方法进行任务提交,返回用户名,job_id,ExtraNonce2,Time,Nonce。
7.矿池确认任务
当收到任务提交时,矿池将矿机提交的值进行验证,若符合下发难度条件,则返回ture。这时,称矿机提交了一个share。矿池同时会使用矿机提交的值与全网难度条件进行验证。若符合全网难度条件,则广播,矿池成功爆块。
8.难度调整
矿池会随时使用mining.set_difficulty方法调节下发给矿机的难度。
总结一下
矿机向矿池提交share,矿池根据一定时间内提交的share数反推出矿机算力数值,并计算收益。
正是stratum协议保证了矿池与矿机之间任务发放与share提交等信息传输,使矿池与矿工能够低信息传输量,高效率地合作完成整个挖矿过程。但是根据stratum协议,矿池可以自由控制打包的交易和区块版本,矿池权力过大,在这种模式下比特币网络安全性受到威胁。
近期Slush Pool 背后的公司 Braiins 准备发布 Stratum V2,可以有效解决stratum协议的安全性问题,挑Sir将在近期对stratum V2协议进行解析,敬请期待。
挑Sir碎念
《挖矿从入门到精通》专为挖矿小白量身定做,将通过“入门”“实战”“进阶”三大阶段进行系统性专业性数字货币挖矿教学指导。
“入门”掌握核心挖矿知识/资源库,从此不是挖矿小白!
“实战”挑Sir带你免费体验挖矿过程,关注公众号并将文章转发至朋友圈将有机会在“实战”阶段获得挑Sir矿机体验资格!
“进阶”掌握挖矿业内人士核心技能,你也可以成为矿圈大佬!
下期预告:
《挖矿从入门到精通-入门篇》
挖矿行业生态图谱
微信公众号:科学挖矿
免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。