Towards seamless .NET blockchain interaction by using Entity Framework

The tool being proposed in this project enables developers to integrate their .NET-based applications with both Ethereum and Entity Framework, while mitigating the complexity of having to deal with different frameworks. This approach is widely implemented and used within IT, such as in IoT (Internet of Things). The two most common methods for achieving this are: macroprogramming [1] and aggregate programming [2].

Before the introduction of Entity Framework, developers had to write all the complexity related to aspects such as database connections, querying, and writing to database tables and their relations etc., manually. Entity Framework made it possible for these tasks to be carried out automatically. It also became possible to develop applications in a more robust and efficient way, even without knowing how to write SQL.

The tool developed through this project seeks to enable developers to interact with the Ethereum blockchain more easily when it comes to aspects of data manipulation. While smart contracts are not the best place for storing and manipulating data, this is just a small piece in a larger puzzle. The project also focused on proposing a solution to enable developers to write .NET code that could get translated into smart contracts [3]. This would also allow developers to merely plug in this tool and use its functionalities.

Since the tool being proposed requires minimal configuration to plug it into the .NET application, once configured, developers could use all services provided within the tool. It would be essential to mention that the tool in question seeks to demonstrate how .NET developers could use a package that enables them to interact with the Ethereum blockchain and the underlying database simultaneously. Furthermore, the package is bound to a specific smart contract (i.e., business logic) and, in this case, to a real estate agency. However, the tool could be further developed in the future such that developers would be able to apply it to any business logic.

The package itself was designed to include two levels of abstraction. Starting from the bottom up, the first level of abstraction consists of two interfaces: on the one hand, an interface that communicates to an SQL database using the Entity Framework library and, on the other hand, the second interface would interact with the Ethereum blockchain by using the Nethereum library. The second layer of abstraction ensures that the external blockchain and database are asynchronous by using both the interfaces described in the first level of abstraction.

The demo .NET web application that was used for demonstrating the usage of the package could enable users to purchase properties with Ether cryptocurrency from a real estate agency. It could also allow users to sell their properties to other users of the application, for an additional fee transferred to the real estate agency for their service.

Figure 1. The general level design of the package and its interactions with both the external tools and the .NET application
Student: Sergiu Ioan Nimat
Course: B.Sc. IT (Hons.) Software Development
Supervisor: Dr Joshua Ellul