How will ringct transactions use non-ringct outputs to use in a ring signature? Is there any trick that gets them to work together with ringct or is it pretty simple and I am missing something?
1 Answer
I'd say it's pretty straightforward. In the normal situation where input and output are both Pedersen Commitments, i.e.,
C_i = x_i G + a_i H
D_j = y_j G + b_j H
, the network confirms the consistency of the CT by checking
\sum_i C_i = \sum_j D_j + f H
where f
is the fee. When converting non-RingCT outputs to RingCT outputs, you simply treat non-RingCT outputs just like the fee; i.e., the masks x_i
are omitted and the network checks the following:
\sum_i a_i H = \sum_j D_j + f H
Put differently, the sender randomly picks the new masks y_j
such that
\sum_j y_j = 0