How does a range proof bound lower at 0 and not -1? From the confidential transactions article:


  C' = C - 1H Then I provide a ring signature over {C, C’}.
  
  If C was a commitment to 1 then I do not know its discrete log, but C’
  becomes a commitment to 0 and I do know its discrete log (just the
  blinding factor). If C was a commitment to 0 I know its discrete log,
  and I don’t for C’. If it was a commitment to any other amount, none
  of the result will be zero and I won’t be able to sign.


What if C and C' are commitments to 0 and -1? Then if I can sign, that means the ring signature is a proof is over {0,-1}. I'm probably missing something, so please tell me, why can't the amount be -1 in this proof?
What if C and C' are commitments to 0 and -1? Then if I can sign, that means the ring signature is a proof is over {0,-1}.


To create a signature, the public key must be a known multiple of G. That multiple is known as the private key. When a point has a nonzero H term in it, no signature with that point as public key can be created. In order to write rG+vH as a multiple k of G, k = r + v*(G/H). H is constructed in such a way that nobody knows the ratio between G and H. As a result, rG+vH can only be a known multiple of G when v = 0.

As a result, you can only sign for public keys that are points which are commitments to the value 0.

A ring signature means you're picking multiple points as public key, and signing for 1 of them, without revealing which one.

So if C is a commitment to 0, and thus C' a commitment to -1, you absolutely can create a ring signature with {C, C'} as public keys. But it's due to the presence of C there.


  I'm probably missing something, so please tell me, why can't the amount be -1 in this proof?


There is no 'value' in the proof. There is a choice of two values. The signer only proves he can sign for one of them, and verifiers cannot know which one he meant.