In the code, there is this:
enum RangeProofType { RangeProofBorromean, RangeProofBulletproof, RangeProofMultiOutputBulletproof, RangeProofPaddedBulletproof };
[source]
I believe:
RangeProofBorromean is to prove a value is within a range, using Borromean.
RangeProofBulletproof is to prove one value is within a range
RangeProofMultiOutputBulletproof is to prove multiple values are within a range
RangeProofPaddedBulletproof is to prove multiple values are within a range, but the number of values needs to be padded.
My confusion is why are all of these distinctions needed? If I call bulletproofProve([]values) Proof
and then just pad inside of the prove function if I need to, then this would account for all possibilities, unless I'm missing something