## 2 Stairway to Integration
### State of the Art  
Most of approaches trying to bridge MAS and blockchain technologies (BCT) are of the \"agent-vs-blockchain\" kind--that is, they put a MAS and a blockchain side by side, letting agents exploit blockchain services upon need, in an opportunistic way [7]. We argue that these approaches do not truly integrate agents and blockchain on the technological level, as simply the MAS exploits the blockchain as it would use any other software library. In fact, there the agents are essentially treated like any other off-chain entities, such as blockchain clients, whose interaction with the blockchain is limited to issuing transactions and deploying/invoking smart contracts--as they would do with any other service.  
A more interesting family of approaches is what we call \"agent-to-blockchain\"--that is, efforts striving to put elements of agent-oriented models and technologies directly into the blockchain. For instance, adopting agent programming languages for implementing smart contracts would be an integration effort belonging to this category, as well as empowering smart contracts' computational model (usually, object-oriented) with features defining agent-orientation (e.g., pro-activeness) [19].  
Then, another family of approaches is possible, \"blockchain-to-agent\", which would include integration approaches trying to inject into agents concepts and techniques belonging to the BCT realm. For instance, an agent-programming platform can be proposed, where agents are programmed with a smart contract language and their interactions are enabled and regulated by the transactions mechanism of a BCT.  
Amongst the mentioned approaches, some naturally see agents as off-chain entities, while others try to fit them on-chain. In agent-vs-blockchain approaches, agents are always off-chain entities exploiting blockchain services upon need. In agent-to-blockchain approaches, agents are always on-chain entities that become part of the blockchain, either as smart contracts, or nodes. In blockchain-to-agent approaches, the on-/off-chain distinction loses meaning.  
Orthogonal to the aforementioned dimensions, instead, is the dimension of computation that the integration targets: pure, \"algorithmic\" computation, or the interaction space. Existing literature targets both dimensions. Many approaches develop along the computational dimension, as they aim at using the blockchain to store data in a secure and traceable way, so as to make agents manipulating such data accountable for their actions [3; 4; 6]; others target the interaction dimension, as they exploit the blockchain transaction mechanism, often together with smart contracts, to validate and regulate interactions amongst agents [30]. Nevertheless, we emphasize that the whole spectrum of the interaction dimension is not fully considered. In existing approaches, interaction is always intended as occurring between off-chain entities (be them agents or not), whereas the possibility of using agent-oriented abstractions to mediate on-chain entity interactions (such as smart contract reciprocal invocations or node communication protocols) is left unexplored.  
In next section we focus on \"agent-to-blockchain\" approaches, while leaving \"blockchain-to-agents\" as a future work.