func NewMiMC(seed string) hash.Hash {
	d := new(digest)
	params := NewParams(seed)
	d.Params = params
	d.Reset()
	return d
}
NewMiMC returns a MiMCImpl object, pure-go reference implementation
package bls381
import (
	"hash"
	"math/big"
	"github.com/consensys/gurvy/bls381/fr"
	"golang.org/x/crypto/sha3"
)
const mimcNbRounds = 91
const BlockSize = 32
type Params []fr.Element
func NewParams(seed string) Params {
	res := make(Params, mimcNbRounds)
	rnd := sha3.Sum256([]byte(seed))
	value := new(big.Int).SetBytes(rnd[:])
	for i := 0; i < mimcNbRounds; i++ {
		rnd = sha3.Sum256(value.Bytes())
		value.SetBytes(rnd[:])
		res[i].SetBigInt(value)
	}
	return res
}
type digest struct {
	Params Params
	h      fr.Element
	data   []byte  
}