Writing Smart Contracts for Fungible Tokens