兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块.docx

兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块.docx

ID:27470839

大小:167.34 KB

页数:6页

时间:2018-12-04

兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块.docx_第1页
兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块.docx_第2页
兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块.docx_第3页
兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块.docx_第4页
兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块.docx_第5页
资源描述:

《兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、兄弟连Go语言培训open-ethereum-pool以太坊矿池源码分析(8)unlocker模块#open-ethereum-pool以太坊矿池-unlocker模块##unlocker模块配置```json"unlocker":{    "enabled": false,    "poolFee": 1.0,    "poolFeeAddress": "",    "donate": true,    "depth": 120,    "immatureDepth": 20,    "keepTxFees": fa

2、lse,    "interval": "10m",    "daemon": "http://127.0.0.1:8545",    "timeout": "10s"},```##BlockUnlocker定义```gotype BlockUnlocker struct {    config*UnlockerConfig    backend*storage.RedisClient    rpc*rpc.RPCClient    halt bool    lastFail error}```##unlocker流程

3、图##GetCandidates原理```gofunc (r*RedisClient)GetCandidates(maxHeight int64)([]*BlockData, error){    //ZRANGEBYSCOREeth:blocks:candidates0maxHeightWITHSCORES    option:=redis.ZRangeByScore{Min: "0",Max:strconv.FormatInt(maxHeight, 10)}    cmd:=r.client.ZRangeBySco

4、reWithScores(r.formatKey("blocks", "candidates"),option)    if cmd.Err()!= nil {        return nil,cmd.Err()    }    return convertCandidateResults(cmd), nil}func convertCandidateResults(raw*redis.ZSliceCmd)[]*BlockData{    var result[]*BlockData    for _,v:= ra

5、nge raw.Val(){        //"nonce:powHash:mixDigest:timestamp:diff:totalShares"        block:=BlockData{}        block.Height=int64(v.Score)        block.RoundHeight=block.Height        fields:=strings.Split(v.Member.(string), ":")        block.Nonce=fields[0]     

6、   block.PowHash=fields[1]        block.MixDigest=fields[2]        block.Timestamp,_=strconv.ParseInt(fields[3], 10, 64)        block.Difficulty,_=strconv.ParseInt(fields[4], 10, 64)        block.TotalShares,_=strconv.ParseInt(fields[5], 10, 64)        block.can

7、didateKey=v.Member.(string)        result= append(result,&block)    }    return result}```##writeImmatureBlock原理```go//Immature即未成年func (r*RedisClient)writeImmatureBlock(tx*redis.Multi,block*BlockData){    //Redis2.8.xreturns"ERRsourceanddestinationobjectsarethe

8、same"    if block.Height!=block.RoundHeight{        //RENAMEeth:shares:candidates:round&RoundHeight:nonceeth:shares:candidates:round&blockHeight:nonce        tx.Renam

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。