v0.0.1 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Jan 25, 2016 License: GPL-3.0 Imports: 19 Imported by: 9


Build Status Windows Build Status


For details on this project, please see the Ethereum wiki:

Coding Style for C++ code:

Follow the same exact style as in cpp-ethereum

Coding Style for C code:

The main thing above all is code consistency.

  • Tabs for indentation. A tab is 4 spaces
  • Try to stick to the K&R, especially for the C code.
  • Keep the line lengths reasonable. No hard limit on 80 characters but don't go further than 110. Some people work with multiple buffers next to each other. Make them like you :)




This section is empty.


View Source
var DefaultDir = defaultDir()


func GetSeedHash

func GetSeedHash(blockNum uint64) ([]byte, error)

func MakeDAG

func MakeDAG(blockNum uint64, dir string) error

MakeDAG pre-generates a DAG file for the given block number in the given directory. If dir is the empty string, the default directory is used.


type Ethash

type Ethash struct {

Ethash combines block verification with Light and nonce searching with Full into a single proof of work.

func New

func New() *Ethash

New creates an instance of the proof of work. A single instance of Light is shared across all instances created with New.

func NewForTesting

func NewForTesting() (*Ethash, error)

NewForTesting creates a proof of work for use in unit tests. It uses a smaller DAG and cache size to keep test times low. DAG files are stored in a temporary directory.

Nonces found by a testing instance are not verifiable with a regular-size cache.

type Full

type Full struct {
	Dir string // use this to specify a non-default DAG directory
	// contains filtered or unexported fields

Full implements the Search half of the proof of work.

func (*Full) GetHashrate

func (pow *Full) GetHashrate() int64

func (*Full) Search

func (pow *Full) Search(block pow.Block, stop <-chan struct{}, index int) (nonce uint64, mixDigest []byte)

func (*Full) Turbo

func (pow *Full) Turbo(on bool)

type Light

type Light struct {
	// contains filtered or unexported fields

Light implements the Verify half of the proof of work. It uses a small in-memory cache to verify the nonces found by Full.

func (*Light) Verify

func (l *Light) Verify(block pow.Block) bool

Verify checks whether the block's nonce is valid.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL