## 3 Blockchain
### Ethereum and Smart Contracts  
Ethereum is a project platform that was created in 2013 by [PERSON]. Essentially, the idea behind the Ethereum protocol is that all peers of a network are interconnected. Blockchain technology not only allows one to store transactional data but also to store and facilitate programs, as well as execute them, enabling any application to be decentralized [19]. The article of [PERSON], the founder of Ethereum, referred to the meaning of decentralization and presented the three different levels of the (de)centralization:  
1. Logical (de)centralization;
2. Political (de)centralization;
3. Architectural (de)centralization [18].  
Even today, many applications use the certification access mechanism which does not provide full visibility to the peers of the network. In order to address the aforementioned problem, in applications such as product supply chains, an environment that facilitates \"smart contracts\" is a promising approach. The term \"smart contract\" was firstly used by [PERSON] in 1997. His main vision for smart contracts was the creation of a distributed ledger to store contracts. A contract is a set of rules or clauses that parties have agreed upon the governing relationship between them. Smart contracts are just like contracts in the real world, with the difference that they are completely digital. They are small script programs that are used and stored in blockchains, featuring a tamper-proof logic code into them. Smart contracts inherit some important attributes; they are immutable and distributed because of their storage inside the blockchain. Being immutable ensures that no one can tamper with the code of the contract, while being distributed secures the validation of smart contracts' output from everyone on the network. Smart contracts have been used in many types of blockchain applications such as in supply chains and in the health sector.  
When a block (or transaction) is scanned and sourced through a completely digitized way, then the specific transaction is confirmed and the block is appended at the chain. After the execution of the contract, a certificate is issued, where a variety of information related to the blockchain transactions can be retrieved. Finally, every client in the network retains a copy of the smart contract and, as a result, each node has the following:  
1. History of all smart contracts;
2. History of all transactions;
3. Current state of all smart contracts [20; 21].  
Ethereum was specifically created and designed for smart contracts support. There are many examples of programming languages that allow software coding within the blockchain. A widely used tool for this purpose is Ethereum's Solidity programming language, a Turing-complete language. Solidity defines and determines a sequence of specific rules that dictate how a program operates and executes [19].  
Table 1 provides an overview of the utilization of smart contracts in different agriculture traceability systems where blockchain technology is applied. As may be observed, the majority of current research  
results adopts the smart contract technology on the Ethereum blockchain in order to implement various types of transactions (such as transactions between farmers, suppliers and distributors).