understanding tokenomics for developers