Smart contracts are in many ways like traditional contracts. With a traditional contract, an agreement is made between two parties, and the financial terms of the contract are executed once an event, specified within the contract, occurs. A smart contract operates in the same way, yet instead of requiring a centralized executor to confirm the event took place, and validate a transfer of value, a smart contract is programmed to execute the terms automatically. Because a smart contract exists on a decentralized blockchain, which in itself cannot be tampered with, it operates as an immutable reference to the terms of the agreement. Therefore, in addition to their programmable and automated nature they maintain advantages over traditional contracts. In the event of a disagreement between the parties of a traditional contract, it may require a judge or some other centralized party to confirm a certain event took place, and then order that the terms be executed. This party may be open to corruption, based on a bias towards a party within the contract. With a smart contract, both the terms and the execution are built into the same, impartial program designed around the original agreement. To quote Vitalik Buterin, Co-Founder of Ethereum, which as of 19th February 2018 is the foremost smart contracts platform in existence, “…any contract has its own internal memory containing a code. When an item participates in a transaction, the code gets executed. It may work with data from the memory and create new transactions. Thus one may encode any kind of rules or any sequence of events that have to happen should the rules [be] observed. Programmable contracts managed and protected by blockchain may apply to diverse interactions between parties”. Such interactions can range broadly in terms of real applications. These include decentralized exchanges and prediction markets, to wallets and Decentralized Autonomous Organizations (DAOs), the latter being a method by which funds in the form of cryptocurrency from multiple, globally distributed parties may simultaneously be allocated within in the same smart contract.