Abbiamo visto come realizzare una Blockchain con HotMoka che faccia uso di un nodo in memoria. Si tratta di una tipologia di nodo utile per attività di sperimentazione. Ora proseguiamo con l'utilizzo di una MemoryBlockchain mostrando come sia possibile installare un'applicazione Takamaka tramite le API HotMoka.
Ancora una MemoryBlockchain
Il primo step è creare una Blockchain in memoria e richiedere poi la creazione di un account. Utilizziamo quindi una macchina virtuale Linux dovendo richiamare le API moka
da riga di comando. Da terminale eseguiamo quindi il seguente comando per la creazione di un nodo Blockchain:
./moka init-memory 100000000000000000000000 --open-unsigned-faucet --takamaka-code modules/explicit/io-takamaka-code-1.0.0.jar
e successivamente i comandi per la ceeazione di un account:
./moka faucet 5000000000000000
./moka create-account 50000000000 --payer faucet --url localhost:8080
Il codice account prodotto perchè sarà utilizzato nel codice Java. Nel nostro caso, come mostrato nell'immagine, il codice account è il seguente:
1049b887421e7f3f91dec79d8e46d62fab4141bcf48504d626aa0fbd6f3a706c#0
Il file .keys
così prodotto va posizionato nella directory Tutorial
per poter essere rilevato dal codice Java.
Configurazione del progetto runs
Il progetto Takamaka mostrerà la procedura di connessione remota alla MemoryBlockchain al fine di installare il file family-0.0.1-SNAPSHOT.jar
del progetto family
introdotto in precedenza. Iniziamo con il creare una directory runs
nella directory Tutorial
del progetto HotMoka.
Dopo tale operazione proseguiamo creiamo un progetto maven in questa cartella.
Nel caso Eclipse nella prima schermata di creazione facciamo in modo di scegliere le opzioni cosi come suggerite in figura:
Avremo quindi il progetto Runs nella directory Tutorial
. Nella successiva e ultima schermata inseriamo io.hotmoka
come Group Id e runs
come Artifact Id:
Editiamo il contenuto di pom.xml
includendo le dipendenze necessarie per il progetto:
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.hotmoka</groupId>
<artifactId>runs</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>
<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>
<dependencies>
<dependency>
<groupId>io.hotmoka</groupId>
<artifactId>io-hotmoka-remote</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>io.hotmoka</groupId>
<artifactId>io-hotmoka-views</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>io.hotmoka</groupId>
<artifactId>io-hotmoka-memory</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>io.hotmoka</groupId>
<artifactId>io-hotmoka-views</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>io.hotmoka</groupId>
<artifactId>io-hotmoka-service</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
Per completare la configurazione definiamo all'interno di src/main/java
il file module-info-java
con il seguente contenuto:
module Blockchain {
requires io.hotmoka.beans;
requires io.hotmoka.nodes;
requires io.hotmoka.views;
requires io.hotmoka.remote;
requires io.hotmoka.crypto;
requires io.hotmoka.memory;
requires io.hotmoka.service;
}