直感的な説明としては、ウォーリーを写真の中で見つけられることを証明するけど、彼の正確な場所は明かさないって感じかな。デジタルウォレットは、ユーザーをそのアイデンティティに直接リンクさせる公開鍵の代わりに、第三者が発行したコミットメントCで動作するファンシーな署名スキームとして解釈できるよ。シンプルな署名スキームは、知識の証明PoK{x : pk = g^x}に基づいていて、Fiat-Shamir変換を通じて非対話型のバリアントに変換されるんだ。メッセージがハッシュに追加される感じ。レンジ証明も似たような仕組みで、最もシンプルな形は1ビットのためのものだよ:PoK{(b,r) : C = g^b * h^r & b(b−1)=0}。これでコミットメントCが{0,1}のビットbを含んでいることが証明できるけど、どの値かは明かさないんだ。任意の範囲は、コミットメントのホモモルフィック特性を使って構築できるよ。nビットの範囲の場合、n個の個別のビット証明が必要になる。バレットプルーフはこれをO(log n)の証明サイズに最適化して、実用的なアプリケーションを可能にするんだ。コミットメントCは信頼できる第三者によって発行されて署名され、その後ユーザーは年齢範囲や位置ゾーン(緯度と経度の範囲から構築されたもの)など、サービスプロバイダーに特定の特性を証明できるよ。大きな課題は、同じコミットメントCを再利用するとトラッキング識別子が作成されて、ユーザーのプライバシーが危うくなることだね。