func (self *debugApi) SeedHash(req *shared.Request) (interface{}, error) { args := new(BlockNumArg) if err := self.codec.Decode(req.Params, &args); err != nil { return nil, shared.NewDecodeParamError(err.Error()) } if hash, err := ethash.GetSeedHash(uint64(args.BlockNumber)); err == nil { return fmt.Sprintf("0x%x", hash), nil } else { return nil, err } }
func (a *RemoteAgent) GetWork() [3]string { var res [3]string if a.work != nil { a.currentWork = a.work res[0] = a.work.HashNoNonce().Hex() seedHash, _ := ethash.GetSeedHash(a.currentWork.NumberU64()) res[1] = common.BytesToHash(seedHash).Hex() // Calculate the "target" to be returned to the external miner n := big.NewInt(1) n.Lsh(n, 255) n.Div(n, a.work.Difficulty()) n.Lsh(n, 1) res[2] = common.BytesToHash(n.Bytes()).Hex() } return res }
func (a *RemoteAgent) GetWork() ([3]string, error) { a.mu.Lock() defer a.mu.Unlock() var res [3]string if a.currentWork != nil { block := a.currentWork.Block res[0] = block.HashNoNonce().Hex() seedHash, _ := ethash.GetSeedHash(block.NumberU64()) res[1] = common.BytesToHash(seedHash).Hex() // Calculate the "target" to be returned to the external miner n := big.NewInt(1) n.Lsh(n, 255) n.Div(n, block.Difficulty()) n.Lsh(n, 1) res[2] = common.BytesToHash(n.Bytes()).Hex() a.work[block.HashNoNonce()] = a.currentWork return res, nil } return res, errors.New("No work available yet, don't panic.") }
// dagFiles(epoch) returns the two alternative DAG filenames (not a path) // 1) <revision>-<hex(seedhash[8])> 2) full-R<revision>-<hex(seedhash[8])> func dagFiles(epoch uint64) (string, string) { seedHash, _ := ethash.GetSeedHash(epoch * epochLength) dag := fmt.Sprintf("full-R%d-%x", ethashRevision, seedHash[:8]) return dag, "full-R" + dag }