Defining a decentralized application