README

chainhash

Build Status ISC License GoDoc

chainhash provides a generic hash type and associated functions that allows the specific hash algorithm to be abstracted.

Installation and Updating

$ go get -u github.com/gcash/bchd/chaincfg/chainhash

License

Package chainhash is licensed under the copyfree ISC License.

Expand ▾ Collapse ▴

Documentation

Overview

    Package chainhash provides abstracted hash functionality.

    This package provides a generic hash type and associated functions that allows the specific hash algorithm to be abstracted.

    Index

    Constants

    View Source
    const HashSize = 32

      HashSize of array used to store hashes. See Hash.

      View Source
      const MaxHashStringSize = HashSize * 2

        MaxHashStringSize is the maximum length of a Hash hash string.

        Variables

        View Source
        var ErrHashStrSize = fmt.Errorf("max hash string length is %v bytes", MaxHashStringSize)

          ErrHashStrSize describes an error that indicates the caller specified a hash string that has too many characters.

          Functions

          func Decode

          func Decode(dst *Hash, src string) error

            Decode decodes the byte-reversed hexadecimal string encoding of a Hash to a destination.

            func DoubleHashB

            func DoubleHashB(b []byte) []byte

              DoubleHashB calculates hash(hash(b)) and returns the resulting bytes.

              func HashB

              func HashB(b []byte) []byte

                HashB calculates hash(b) and returns the resulting bytes.

                Types

                type Hash

                type Hash [HashSize]byte

                  Hash is used in several of the bitcoin messages and common structures. It typically represents the double sha256 of data.

                  func DoubleHashH

                  func DoubleHashH(b []byte) Hash

                    DoubleHashH calculates hash(hash(b)) and returns the resulting bytes as a Hash.

                    func HashH

                    func HashH(b []byte) Hash

                      HashH calculates hash(b) and returns the resulting bytes as a Hash.

                      func NewHash

                      func NewHash(newHash []byte) (*Hash, error)

                        NewHash returns a new Hash from a byte slice. An error is returned if the number of bytes passed in is not HashSize.

                        func NewHashFromStr

                        func NewHashFromStr(hash string) (*Hash, error)

                          NewHashFromStr creates a Hash from a hash string. The string should be the hexadecimal string of a byte-reversed hash, but any missing characters result in zero padding at the end of the Hash.

                          func (*Hash) CloneBytes

                          func (hash *Hash) CloneBytes() []byte

                            CloneBytes returns a copy of the bytes which represent the hash as a byte slice.

                            NOTE: It is generally cheaper to just slice the hash directly thereby reusing the same bytes rather than calling this method.

                            func (*Hash) Compare

                            func (hash *Hash) Compare(target *Hash) int

                              Compare returns 1 if hash > target, -1 if hash < target and 0 if hash == target.

                              func (*Hash) IsEqual

                              func (hash *Hash) IsEqual(target *Hash) bool

                                IsEqual returns true if target is the same as hash.

                                func (*Hash) SetBytes

                                func (hash *Hash) SetBytes(newHash []byte) error

                                  SetBytes sets the bytes which represent the hash. An error is returned if the number of bytes passed in is not HashSize.

                                  func (Hash) String

                                  func (hash Hash) String() string

                                    String returns the Hash as the hexadecimal string of the byte-reversed hash.