To me `batch_size` says something more specific than `num`; `num` could be something other than a batch size, and Blobs could store something other than batches (although in practice this rarely happens).

I had been wondering why we never use `required`. I've fixed this and added a check (that gives a more meaningful message than the way things would fail otherwise).