Description
There's something I don't understand about the workflow to blind an asset issuance. tx_elements_input_init
takes issuance_amount
and issuance_amount_rangeproof
as arguments, but how do we compute those data?
If I understand correctly, issuance_amount
should be the value commitment to the amount of issued assets, and issuance_amount_rangeproof
is the corresponding rangeproof.
At first I just took the value commitment and rangeproof for the newly issued asset output and put it also in the input, it didn't work and now I think I understand why, but now how should I create the right value commitment and rangeproof for the input ?
To compute a value commitment, I need the amount issued (so far so good), a value blinding factor (vbf) and a generator (I need an asset blinding factor for this one).
In a normal input, I'll take the vbf and abf from the previous transaction, but since an issuance doesn't spend a previous output, does it mean I can just take random 32 bytes for those ?
Then to compute the rangeproof, I'll need a blinding pubkey that again I'm supposed to take from the prevout, so can I just compute an ephemeral key pair and take the pubkey ?
Here's the relevant part of my code so far (I edited some parts since it's a bit long, maybe there are some inconsistencies because of that), I can produce a transaction that I can sign but I'll get a 16: bad-txns-in-ne-out
error in elements with testmempoolaccept
, and I guess that's because my value commitments is broken but I can't see how to correct it.