Modelling and Enforcing Access Control Requirements for Smart Contracts