This is for known to the distributor accounts where they set balances. For airdropping shielded assets to shielded ZEC, you’d have to have users doxx themselves to you under this model, yet they could use a distinct address to claim the funds, therefore not doxxing themselves to the public.
If ZSAs use the same value commitment basepoint, this would be trivial so long as you apply a fixed multiplier to all accounts and have the ability to post new commitments into the tree as part of the mint function without doxxing them (which breaks supply auditability). For a Pedersen commitment aG + bH, where a is amount, b is blinding factor (easier to explain, I know another project uses b for amount and I’d have to check Zcash’s preferred ordering stylization), any multiplier x can be applied to create axG + bxH. Since the user knows the randomness and amount of their output, they’ll know the new randomness and amount as well, enabling spendability.
I believe ZSAs are using DIFFERENT basepoints though. While I’d expect the randomness basepoint to be the same (different amount basepoint, distinct randomness basepoint should enable transfers without revealing the sent asset, even allowing for TXs sending multiple assets in the same TX), this creates the issue where we’re now doing axG on one side and a2G2 which… is gibberish. These commitments are verified by proving you know the blinding factor behind sum(inputs) - sum(outputs). If the amounts are the same, they’ll cancel out, making that all that’s left. axG - a2G2 though? Those aren’t the same. It’s not even a known value. It’s some value, sure. No one knows what it is though because the relationship between G and G2 is unknown.
You can trivially convert this to work, albeit with an insufficient 2^64 searchable space. If you require the blinding factors to be the same, and reveal them, you need a DLEq proof for axG and a2G2 (where a DLEq proof says ax == a2 given their representations against G/G2). This is just brute forceable as it’s not 2^256.
There probably is some blindable DLEq proof available, and I spent the past hour drafting one for the hell of it. I think it works, yet I don’t care to post it at this time until I check in with a couple people. This means for the existing commitment set, if you can insert new commitments without revealing their amounts, you can do 100 AIR to 1 ZEC, so long as you can actually create a full Zcash output out of this (and not just the value commitment, which… almost certainly won’t be feasible without at least getting a proof a certain address owns a certain output commitment).
Then there’s always going to be circuits available, with the distinction they’d have to be in Zcash consensus somehow, and temporary/selective de-anons. The latter is how this will practically be accomplished.
Then the final comment is ZSAs are not a full featured DeFi platform and even actions as simple as airdrops likely are not feasible without reverting to transparency.
Sorry for having poor notation, to any fellow devs who read this. I meant to do a very basic explanation non-devs may have a chance at understanding, not submit a paper
EDIT: This is a really late addition, sorry. I never saw the previous post, just saw it now, and assumed it was new (not seeing it’s dated March). Sorry about that…