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)
)

