Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Hotmoka e Takamaka

Come installare Hotmoka, un framework con cui programmare una rete peer to peer realizzando una Blockchain, ed avere un progetto all'interno dell'IDE
Come installare Hotmoka, un framework con cui programmare una rete peer to peer realizzando una Blockchain, ed avere un progetto all'interno dell'IDE
Link copiato negli appunti

Hotmoka è un framework per programmare una rete peer to peer realizzando una Blockchain. All'interno di questa rete, i contratti intelligenti (Smart Contracts)
sono implementati attraverso il modulo Takamaka (parte integrante del progetto Hotmoka). I jar compilati dei progetti Hotmoka e Takamaka non sono ancora disponibili
in repository pubblici come ad esempio Maven Central, ma è necessario recuperare i progetti dal relativo repository git.

Installazione Hotmoka/Takamaka

Il modo più semplice per ottenere Hotmoka/Takamaka è clonare il progetto ed installarlo sul proprio repository Maven. Sono necessarie almeno le Java JDK versione 11 per la compilazione.

Una volta ottenuto il progetto, da riga di comando è sufficiente spostarsi nella directory hotmoka e lanciare il comando

mvn clean install

Per utilizzare Hotmoka all'interno di un IDE è sufficiente importare il relativo progetto Maven. Ad esempio, nel caso di Eclipse, dal menù scegliere la sequenza "File-Import-Existing Maven Projects" ed importare il parent Maven project contenuto nella directory Hotmoka ottenuta dalla clonazione.

A questo punto è possibile avviare il compile, package e test della libreria Hotmoka/Takamaka con un click sul file pom del parent project scegliendo il target Maven install.

Progetto Hotmoka

Figura 1. Progetto Hotmoka

Un progetto Java su Blockchain

Il nostro primo obiettivo è quello di installare un file jar corrispondente ad un progetto Java in una Blockchain Hotmoka. Utilizzeremo una Blockchain locale con un singolo nodo definita attraverso le API Hotmoka.

In questo articolo andiamo ad implementare il progetto Java utilizzando le API Takamaka. Creiamo un progetto Maven nella directory tutorial di Hotmoka e dal menù di Eclipse selezioniamo "New-Maven project" specificando l'opzione "Create a simple project" con skip della selezione "archetype". Deselezioniamo "Use default Workspace directory" e inseriamo un percorso del tipo ../tutorial/family.

La ragione della scelta di questo tipo di percorso risiede nella semplificazione dell'accesso al file jar prodotto, evitando percorsi assoluti dipendenti dalla localizzazione del proprio Maven repository locale. Nella figura che segue è mostrato un esempio:

Maven project passo 1

Figura 2. Maven project passo 1

Non aggiungiamo il progetto ad alcun working set e nella successiva schermata scegliamo io.hotmoka come Group Id e family come Artifact Id:

Maven project passo 2

Figura 3. Maven project passo 2

Il file pom prodotto dal wizard è minimale, facciamo in modo di completarlo con le dipendenze necessarie:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                        http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>io.hotmoka</groupId>
  <artifactId>family</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </properties>
  <dependencies>
    <dependency>
      <groupId>io.hotmoka</groupId>
      <artifactId>io-takamaka-code</artifactId>
      <version>1.0.0</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>11</release>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

La modifica appena apportata dovrebbe produrre un errore sul progetto family. Per risolvere il problema effettuare un right-click sul nome del progetto scegliendo la sequenza "Maven-Update Project":

Family project

Figura 4. Family project

Si può notare come tra le dipendenze del progetto sia stato specificato il runtime Takamaka, questo è possibile senza che sia prodotto alcun errore in quanto la compilazione precedente di Hotmoka ha prodotto tutti i jar necessari di Takamaka nel repository Maven locale.

Completiamo la configurazione definendo la dipendenza dal modulo io.takamaka.code. Con un right-click sul progetto family scegliere la sequenza "Configure-Create module-info.java".
All'interno del file prodotto inseriamo la dipendenza richiesta:

module family {
	requires io.takamaka.code;
}

Facciamo ora in modo di avere almeno una classe da utilizzare con questo modulo in una blockchain. Definiamo il package io.takamaka.family all'interno del percorso src/main/java e al suo interno la classe:

package io.takamaka.family;
public class Person {
	private final String name;
	private final int day;
	private final int month;
	private final int year;
	public final Person parent1;
	public final Person parent2;
	public Person(String name, int day, int month, int year, Person parent1, Person parent2) {
		this.name = name;
		this.day = day;
		this.month = month;
		this.year = year;
		this.parent1 = parent1;
		this.parent2 = parent2;
	}
	public Person(String name, int day, int month, int year) {
		this(name, day, month, year, null, null);
	}
	@Override
	public String toString() {
		return name + " (" + day + "/" + month + "/" + year + ")";
	}
}

Eseguiamo infine un Maven install sul pom del progetto family per produrre il relativo jar:

Jar progetto family

Figura 5. Jar progetto family

Conclusione

In questo articolo abbiamo visto come installare Hotmoka ed avere un progetto configurato all'interno del nostro IDE di sviluppo, nel successivo articolo vedremo come creare un nodo Blockchain in memoria esplorando le prime API Hotmoka.

Ti consigliamo anche