Angajamentul dvs. vectorial nu are un factor orbitor, ceea ce înseamnă că nu ascunde dacă două angajamente diferite sunt în aceeași listă de $a_i$ componente. În funcție de natura $a_i$ componente, poate fi, de asemenea, posibilă forța brută a angajamentului de a determina componentele pe care le reprezintă.
Putem rezolva cu ușurință acest lucru adăugând un factor orbitor $b$:
$C = a_0G_0 + a_1G_1 + ... + a_{n-1}G_{n-1} + bH$
Dorim să demonstrăm că fiecare componentă $a_i$ este un număr întreg pozitiv mai mic decât $2^s$.
Pentru a face acest lucru, creăm și declarăm $(n\cdot s)$ angajamente fiecare cu propriul factor de orbire uniform aleatoriu $b_{i,j}$, Unde $0\leq i <n$ și $0\leq j <s$. Fiecare angajament $C_{i,j}$ se calculează ca $C_{i,j} = (z_{i,j}\cdot 2^j)G_i + b_{i,j}H$, Unde $z_{i,j}$ este $0$ sau $1$ și reprezintă $j$al-lea bit al componentului $a_i$.
Un verificator poate calcula $C'=\sum C_{i,j}$. Putem demonstra asta $C$ reprezintă aceeași listă de $a_i$ componente ca $C'$ prin furnizarea unei semnături pentru cheia publică $(C-C')$ pe punctul de bază $H$. Cheia privată a punctului $(C-C')$ va fi valoarea $b-\sum b_{i,j}$.
Acum am demonstrat două lucruri: $C$ este un angajament față de aceeași listă de componente ca $C'$, și că fiecare componentă $a_i$ este creată ca o listă de cel mult $s$ biți (și astfel trebuie să fie un număr întreg pozitiv).
Tot ce rămâne de demonstrat este că fiecare dintre angajamentele declarate $C_{i,j}$ într-adevăr este un angajament fie pentru $0$ sau la $2^jG_i$.
Acest lucru poate fi realizat cu orice fel de semnătură de inel care dovedește cheia privată pentru oricare $C_{i,j}$ sau $(C_{i,j} - 2^jG_i)$ pe punctul de bază $H$ este cunoscut. Puteți folosi antiglonțuri sau semnăturile inelelor Borromee mai simplu de înțeles pentru a realiza acest lucru.