Hi folks, just sharing a simple idea for incentivizing zaddr use.
Keep two counters in the state of the chain, n_s and n_t (n “shielded” and n “total”). n_s tracks the number of shielded coins, n_t tracks the number of zec that went in minus the number of zec that went out. In the current implementation, those number are supposed to be the same, but that doesn’t have to be the case.
When coins are being shielded, increase n_s, when they are being unshielded, decrease n_s. This is easy, it lets you track the total number of shielded coins.
Now, at every block symbolically assign some amount b to the pool of shielded coin. b can be inflationary, it can be taken from the block reward, it can come from gifts, it just has to come from somewhere.
Each time b zec are “assigned” to the shielded pool, increase n_t by b but do not increase n_s. Each time coins are being shielded, also increase n_t.
When c coins are unshielded to a taddr, credit it ot with c zec but with c \times n_t / n_s zec. Decrease n_s by c and decrease n_t by c \times n_t / n_s.
This is rather easy to do and incentivize keeping coins shielded over time. The downside is that one shielded zec is now worth more than a non shielded zec, and the ratio between the two (n_t / n_s) changes over time.