elkrem

package
v0.0.0-...-1e35018 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2016 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LeftSha

func LeftSha(in wire.ShaHash) wire.ShaHash

func RightSha

func RightSha(in wire.ShaHash) wire.ShaHash

Types

type ElkremNode

type ElkremNode struct {
	// contains filtered or unexported fields
}

You can calculate h from i but I can't figure out how without taking O(i) ops. Feels like there should be a clever O(h) way. 1 byte, whatever.

type ElkremReceiver

type ElkremReceiver struct {
	// contains filtered or unexported fields
}

func ElkremReceiverFromBytes

func ElkremReceiverFromBytes(b []byte) (ElkremReceiver, error)

func NewElkremReceiver

func NewElkremReceiver(th uint8) ElkremReceiver

Creates an Elkrem Receiver from a tree height

func (*ElkremReceiver) AddNext

func (e *ElkremReceiver) AddNext(sha *wire.ShaHash) error

func (*ElkremReceiver) AtIndex

func (e *ElkremReceiver) AtIndex(w uint64) (*wire.ShaHash, error)

func (*ElkremReceiver) FindPre

func (e *ElkremReceiver) FindPre(
	target [20]byte, timeHint uint32) (*[20]byte, error)

func (*ElkremReceiver) ToBytes

func (e *ElkremReceiver) ToBytes() ([]byte, error)

ToBytes turns the Elkrem Receiver into a bunch of bytes in a slice. first the tree height (1 byte), then number of nodes (1 byte), then a series of 41 byte long serialized nodes, which are 1 byte height, 8 byte index, 32 byte hash.

type ElkremSender

type ElkremSender struct {
	// contains filtered or unexported fields
}

func ElkremSenderFromBytes

func ElkremSenderFromBytes(b []byte) (ElkremSender, error)

ElkremSenderFromBytes turns a 41 byte slice into a sender, picking up at the index where it left off.

func NewElkremSender

func NewElkremSender(th uint8, r wire.ShaHash) ElkremSender

Creates an Elkrem Sender from a root hash and tree height

func (*ElkremSender) AtIndex

func (e *ElkremSender) AtIndex(w uint64) (*wire.ShaHash, error)

w is the wanted index, i is the root index

func (*ElkremSender) Next

func (e *ElkremSender) Next() (*wire.ShaHash, error)

Next() increments the index to the next hash and outputs it

func (*ElkremSender) ToBytes

func (e *ElkremSender) ToBytes() ([]byte, error)

ToBytes turns the Elkrem Sender into a 41 byte slice: first the tree height (1 byte), then 8 byte index of last sent, then the 32 byte root sha hash.

Jump to

Keyboard shortcuts

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