<blockquote>
  <p>Is it possible to create a CT transaction, where the inputs reference UTXOs that are not confidential (just as in Bitcoin now), but creating new outputs that are hiding the value using CT's scheme?</p>
</blockquote>

<p>Yes, you include a dummy blinding factor.</p>

<blockquote>
  <p>What would the network have to do to check that the sum of commitments in the outputs are the same as the sum of clear-text amounts from the inputs? </p>
</blockquote>

<p>With the dummy blinding factor, it would do exactly the same a normal CT tx.</p>

<p>The answer was a lot simpler than you thought.</p>

CC BY-SA 4.0
2019-02-02T13:35:36.490Z
2019-02-02T13:35:36.490Z
Penquin
<p>I was reading about Confidential Transactions (CT) and understand the basic idea behind it. But what if CT must be bootstrapped on an existing Blockchain such as in Bitcoin, where the amounts are for now visible in the outputs? </p>

<p>Is it possible to create a CT transaction, where the inputs reference UTXOs that are <em>not</em> confidential (just as in Bitcoin now), but creating new outputs that are hiding the value using CT's scheme?</p>

<p>What would the network have to do to check that the sum of commitments in the outputs are the same as the sum of clear-text amounts from the inputs? </p>

<p>//Edit: I found some help from the mailing list describing how CT can be implemented as a Soft Fork to Bitcoin: <a href="https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-January/012194.html" rel="nofollow noreferrer">https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-January/012194.html</a></p>

<p>But I am still not sure how the network can make sure that the confidential transaction outputs from "blinding transactions" sum up to the amount that is being stored into the GCTXO.</p>

<p>Similarly when "unblinding", how can the network be sure that the sum of commitments from the confidential inputs is the same as the amount that is being spent from the GCTXO?</p>

<p>//edit2:
The only way I can think of is that the blinding tx also contains a proof using the sum of commitments in the outputs. That sum of commitments corresponds to a value equal to the amounts from the inputs (minus the tx-fee). </p>

<p>More precisely, a CT commitment looks like <code>xG+aH</code>, with <code>G</code> and <code>H</code> being generating points, <code>x</code> a secret key and <code>a</code> being the amount locked with the output. For a proof we sum all commitments from the outputs: <code>C=xG+aH + yG+bH + ... + zG+cH = (x+y+...+z)G + (a+b+...+c)H</code>. A proof can then be provided by subtracting <code>(a+b+...+c)H</code> from <code>C</code> and signing it with the corresponding secret key: <code>C-(a+b+...+c)H=(x+y+...+z)G</code>, where <code>(a+b+...+c)</code> is exactly the amount from the inputs (minus tx fee), and a signature is provided from the public key <code>(x+y+...+z)G</code>, where <code>(x+y+...+z)</code> is the private key. </p>

<p>But from reading the specification I cannot see where such a proof/signature would be provided with the blinding transaction?</p>

<confidential-transactions>
Using confidential transactions with plain-text ouputs
Bjarne Magnussen
# Using confidential transactions with plain-text ouputs

(Asked by: username_0 on 2016-11-15)

I was reading about Confidential Transactions (CT) and understand the basic idea behind it. But what if CT must be bootstrapped on an existing Blockchain such as in Bitcoin, where the amounts are for now visible in the outputs?

Is it possible to create a CT transaction, where the inputs reference UTXOs that are *not* confidential (just as in Bitcoin now), but creating new outputs that are hiding the value using CT's scheme?

What would the network have to do to check that the sum of commitments in the outputs are the same as the sum of clear-text amounts from the inputs?

//Edit: I found some help from the mailing list describing how CT can be implemented as a Soft Fork to Bitcoin: <https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-January/012194.html>

But I am still not sure how the network can make sure that the confidential transaction outputs from "blinding transactions" sum up to the amount that is being stored into the GCTXO.

Similarly when "unblinding", how can the network be sure that the sum of commitments from the confidential inputs is the same as the amount that is being spent from the GCTXO?

//edit2:
The only way I can think of is that the blinding tx also contains a proof using the sum of commitments in the outputs. That sum of commitments corresponds to a value equal to the amounts from the inputs (minus the tx-fee).

More precisely, a CT commitment looks like `xG+aH`, with `G` and `H` being generating points, `x` a secret key and `a` being the amount locked with the output. For a proof we sum all commitments from the outputs: `C=xG+aH + yG+bH + ... + zG+cH = (x+y+...+z)G + (a+b+...+c)H`. A proof can then be provided by subtracting `(a+b+...+c)H` from `C` and signing it with the corresponding secret key: `C-(a+b+...+c)H=(x+y+...+z)G`, where `(a+b+...+c)` is exactly the amount from the inputs (minus tx fee), and a signature is provided from the public key `(x+y+...+z)G`, where `(x+y+...+z)` is the private key.

But from reading the specification I cannot see where such a proof/signature would be provided with the blinding transaction?

**Tags:** confidential-transactions


---

## 1 answers

### Answer by username_1 on 2019-02-02. Score: 1

> Is it possible to create a CT transaction, where the inputs reference UTXOs that are not confidential (just as in Bitcoin now), but creating new outputs that are hiding the value using CT's scheme?

Yes, you include a dummy blinding factor.

> What would the network have to do to check that the sum of commitments in the outputs are the same as the sum of clear-text amounts from the inputs?

With the dummy blinding factor, it would do exactly the same a normal CT tx.

The answer was a lot simpler than you thought.


---

