param secret param value param serial param randomness_coin param randomness_value constant generator_coin constant generator_value_commit_value constant generator_value_commit_random private (public_u, public_v) = jj_mul(secret, generator_coin) public coin = mimc_hash(public_u, public_v, value, serial, randomness_coin) private value_digits = unpack(value) rangeproof_assert(value, value_digits) public value_commit = jj_add( jj_mul(value, generator_value_commit_value), jj_mul(randomness_value, generator_value_commit_random) )