Libplanet offers pseudo-random GUID generator on RandomExtensions, but its range seems quite small for general use.
Above generates GUID, which codomain is 16-bytes, but its range is less than 4-bytes, since its domain is int.
GUID is designed to be have 2^128 diversity, but with current implementation, it can cover only 2^32
With estimation with Birthday Problem
(sqrt(-2 * N * log(1 - probability)) where N = 2^32, probability = 0.5, 0.95),
GUID collision can happen with 50% probability with 77,163 samples,
and 95% probability with 160,416 samples, which is quite easy to happen.
We need to generate GUID with larger domain, for example, result hash of SHA-256.
Belows are some candidates.
- Proof of VRF (not merged on main branch yet)
- PreEvaluationHash
- StateRootHash
- BlockHash
Seems like better to choose from above two, but since impossitility of manipulation is not so important for GUID feature, won't be matter so much.
Libplanetoffers pseudo-randomGUIDgenerator on RandomExtensions, but its range seems quite small for general use.Above generates
GUID, which codomain is16-bytes, but its range is less than4-bytes, since its domain isint.GUIDis designed to be have2^128diversity, but with current implementation, it can cover only2^32With estimation with
Birthday Problem(
sqrt(-2 * N * log(1 - probability)) where N = 2^32, probability = 0.5, 0.95),GUIDcollision can happen with 50% probability with 77,163 samples,and 95% probability with 160,416 samples, which is quite easy to happen.
We need to generate
GUIDwith larger domain, for example, result hash ofSHA-256.Belows are some candidates.
Seems like better to choose from above two, but since impossitility of manipulation is not so important for
GUIDfeature, won't be matter so much.