Cam kết véc tơ của bạn không có yếu tố che khuất, nghĩa là nó không che giấu liệu hai cam kết khác nhau có thuộc cùng một danh sách hay không. $a_i$ các thành phần. Tùy thuộc vào tính chất của $a_i$ các thành phần, cũng có thể ép buộc cam kết để xác định các thành phần mà nó đại diện.
Chúng ta có thể dễ dàng khắc phục điều này bằng cách thêm một yếu tố làm mù $b$:
$C = a_0G_0 + a_1G_1 + ... + a_{n-1}G_{n-1} + bH$
Chúng tôi muốn chứng minh rằng mỗi thành phần $a_i$ là một số nguyên dương nhỏ hơn $2^s$.
Để làm điều này, chúng ta tạo và khai báo $(n\cdot s)$ mỗi cam kết có yếu tố mù ngẫu nhiên thống nhất của riêng họ $b_{i,j}$, ở đâu $0\leq i <n$ và $0\leq j <s$. Mỗi cam kết $C_{i,j}$ được tính như $C_{i,j} = (z_{i,j}\cdot 2^j)G_i + b_{i,j}H$, ở đâu $z_{i,j}$ Là $0$ hoặc $1$ và đại diện cho $j$bit của thành phần $a_i$.
Người xác minh có thể tính toán $C'=\sum C_{i,j}$. Chúng ta có thể chứng minh rằng $C$ đại diện cho cùng một danh sách $a_i$ thành phần như $C'$ bằng cách cung cấp chữ ký cho khóa công khai $(C-C')$ trên điểm cơ sở $H$. Khóa riêng cho điểm $(C-C')$ sẽ là giá trị $b-\sum b_{i,j}$.
Bây giờ chúng tôi đã chứng minh hai điều: $C$ là một cam kết đối với cùng một danh sách các thành phần như $C'$, và rằng mỗi thành phần $a_i$ được tạo ra như một danh sách không nhiều hơn $s$ bit (và do đó phải là số nguyên dương).
Tất cả những gì còn lại là chứng minh rằng mỗi cam kết đã tuyên bố $C_{i,j}$ thực sự là một cam kết hoặc $0$ hoặc để $2^jG_i$.
Điều này có thể đạt được với bất kỳ loại chữ ký vòng nào chứng minh khóa riêng cho một trong hai $C_{i,j}$ hoặc $(C_{i,j} - 2^jG_i)$ trên điểm cơ sở $H$ đã được biết đến. Bạn có thể sử dụng tính năng chống đạn hoặc chữ ký vòng Borromean dễ hiểu hơn để đạt được điều này.