Eris.Encoder
This module provides a streaming encoder that can be used to efficiently encode content piece-wise. The memory used is proportional to the level of the encoded content. The level is related logarithmicly to the size of the content.
val init : convergence_secret:string -> block_size -> t
init ~convergence_secret block_size
returns a new encoder.
feed encoder piece
adds piece
to the encoded content. Returns a list of reference and block pairs that can be emmited.
For every returned (ref, block)
pair it holds that ref = Blake2b-256(block)
. As the hash is computed during encoding it is returned so that storage and transport layers do not have to recompute it.
There is no restriction on the size of piece
. For best performance pieces should be the same size as the block size.
val finalize : t -> (ref * block) list * Read_capability.t
finalize encoder
finishes encoding some content and returns remaing blocks as well as a read capability.