Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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) 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.