> It seems as if they are saying that we use the commitment to zero to sign the ring with the inputs as message. Not quite, it does *use* it, but it is not the actual signing key. It says: > Signing *m* with *k<sup>o</sup>* proves you are the owner/recipient of the amount committed to in *C<sup>a</sup>*. Verifiers can be confident that transaction authors are spending their own funds. And further up says: > With this observation made we can see the utility of *zG*. All commitment terms in *R* return some EC point, and the *π<sup>th</sup>* such term is *zG*. This allows us to create an MLSAG signature (Section3.3) on *R*. Moving to your next question: > Each input needs the private key associated with it's one-time-pubkey/address in order to unlock it. So does each input have a ring signature with the private key corresponding to the one-time-public key needed to unlock our input? Yes. > Then maybe the commitment to zero is used to sign the whole transaction? No. I think where you are getting lost is the distinction between proving ownership of inputs being spent and proving that the output amounts balance out the input amounts. The former is the job of the MLSAG signature(s), the latter is the job of the Pedersen commitments *and* the Range proofs (the commitments hide the amounts and prove the inputs minus outputs balance out, the range proof proves that each amount in an output commitment is within a range, in this case positive, which prevents creating money out of thin air). The commitment to zero is used in the construction of the MLSAG signature, it is *not* the signing key itself.