Skip to content

Latest commit

 

History

History
149 lines (115 loc) · 3.82 KB

README.md

File metadata and controls

149 lines (115 loc) · 3.82 KB

LinkedIn


Logo

A Unified Approach to Distributed Application Development for DLT

Ryan Falzon

Supervised by Prof. Gordon Pace

Co-supervised by Dr Joshua Ellul

Centre for Distributed Ledger Technologies
University of Malta
April 2021
Table of Contents
  1. Built With
  2. Getting Started
  3. Usage
  4. Contact
  5. Acknowledgements

Built With

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Prerequisites

  1. Download .NET Core 3.1 from here.
  2. Download Git from here.

Installation

  1. Clone the repo
    git clone https://github.com/ryanfalzon/DLT-Dissertation
  2. Build the UnifiedModel.SourceGenerator project
    cd Dissertation/src/UnifiedModel/UnifiedModel.SourceGenerator
    dotnet build --output "c:/UnifiedModel/SourceGenerator"
  3. Build the UnifiedModel.Connectors project
    cd Dissertation/src/UnifiedModel/UnifiedModel.Connectors
    dotnet build --output "c:/UnifiedModel/Connectors"
  4. Run the UnifiedModel.SourceGenerator.exe executable
    UnifiedModel.SourceGenerator.exe "UnifiedCode.txt" "OutputDirectory"
  5. Once generated smart contracts are deployed, fill in the Ethereum.json file created in the output directory of step 3
    {
     "PublicKey": "",
     "PrivateKey": "",
     "Contracts": [
       {
         "Name": "",
         "AbiLocation": "",
         "Address": ""
       }
     ]
    }
  6. Copy the contents of the output directory of step 3 to the location where the desktop code will be running

Framewok Usage

This is an example of how the framework can be used to create annotated code to be compiled down to C# and Solidity code for Desktop and Etheruem enviornments.

[XOn(All)]
public class Profile : XModel("SocialNetwork")
{
  ...
}

[XOn(Ethereum)]
public class SocialNetwork
{
  ...
}
  
[XOn("All")]
public class SocialNetwork
{
  public void Register(Profile profile)
  {
    @XOn("Desktop", profile)
    {
      ...
    }

    ~@XOn("Ethereum", profile)
    {
      ...
    }
  }
}

Contact

Ryan Falzon - [email protected]

Acknowledgements

I would like to thank my supervisor Prof. Gordon Pace and co-supervisor Dr. Joshua Ellul for their continual support and guidance throughout this research study. Additionally, I would like to express my gratitude to all lecturers of the Centre of Distributed Ledger Technologies for the knowledge they imparted on throughout their lectures.