Circles UBI has a local sybil resistance property, but it publicly exposes the trust graph among people. We specified and started an implementation with Noir to build community shielded contracts that hide the trust graph. Fungibility and sybil resistance in Circles is achieved through a "path transfer" over the trust connections of the graph. To ensure integrity while shielding the trust graph we needed to solve several problems, briefly highlighted in the github readme.
Our shielded community contract required recursion within Aztec Noir, but we struggled with converting advanced types back into Field elements for the verification proof.
Discussion