write smart contract