Skip to content

Blinding of asset issuance transaction #254

Open
@Sosthene00

Description

@Sosthene00

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions