func MustNewBatch(opts ...BatchOption) *postage.Batch {
	b := &postage.Batch{
		ID:          MustNewID(),
		Value:       NewBigInt(),
		Start:       rand.Uint64(),  
		BucketDepth: defaultBucketDepth,
		Depth:       defaultDepth,
		Immutable:   true,
	}
	for _, opt := range opts {
		opt(b)
	}
	if b.Owner == nil {
		b.Owner = MustNewAddress()
	}
	return b
}
MustNewBatch will create a new test batch. Fields that are not supplied will
be filled with random data. Panics on errors.
package testing
import (
	"bytes"
	crand "crypto/rand"
	"io"
	"math/big"
	"math/rand"
	"testing"
	"github.com/ethsana/sana/pkg/postage"
)
const (
	defaultBucketDepth = 12
	defaultDepth       = 16
)
type BatchOption func(c *postage.Batch)
func MustNewID() []byte {
	id := make([]byte, 32)
	_, err := io.ReadFull(crand.Reader, id)
	if err != nil {
		panic(err)
	}
	return id
}
func MustNewAddress() []byte {
	addr := make([]byte, 20)
	_, err := io.ReadFull(crand.Reader, addr)
	if err != nil {
		panic(err)
	}
	return addr
}
func NewBigInt() *big.Int {
	return (new(big.Int)).SetUint64(rand.Uint64())  
}