Documentation
Learn about Hotmoka and Mokamint

Hotmoka and Mokamint are two software products with deep theoretical backgrounds. They are the implementation of theoretical results stemming from scientific research. The subsequent references are either technical tutorials or research papers that can be used to program or to understand the underpinnings of the technology.

A Tutorial on Programming Hotmoka

This tutorial presents the way Hotmoka can be used for writing, deploying and interacting with smart contracts written in a deterministic subset of Java. It shows how to interact with Hotmoka nodes to send transactions and get their result. It presents such material in a step-by-step approach, as actual exercises that can be followed by the reader.

A Java Framework for Smart Contracts

This article is the original paper that presents the theory behind the use of a subset of Java as a language for writing smart contracts. It discusses how Java objects are kept in the storage of the blockchain, deserialized in memory before a transaction runs and serialized back to storage at the end of the transaction.

Enforcing Determinism of Java Smart Contracts

This article describes how determinism can be enforced for a subset of Java. The issue is important, since non-deterministic programs would make it impossible to reach consensus in blockchain. It might seem surprising, but Java can be non-deterministic in many and expected ways.

Fungible and non-Fungible Tokens with Snapshots in Java

This article presents an non-trivial smart contract in Java, for the implementation of tokens and NFT holders with snapshots. The latter is a powerful feature of a data structure, that allows one to freeze its current state as an immutable data structure. It is very handy for writing dApps, that often need to access a consistent snapshot of the state of the objects, along a sequence of transactions.

On the Use of Generic Types for Smart Contracts

This article considers a difficult topic in the development of smart contracts that use generic types. namely, this powerful feature, not available in other programming languages for smart contracts, must be used with care if we want to preserve type safeness.

A Formalization of Signum’s Consensus

This article formalizes the theory underlying the proof of space algorithm of Mokamint, inspired by that of another blockchain, called Signum. It shows how the algorithm works and why it is free from some traditional attacks to the network. Moreover, it proposes improvements that have been implemented in Mokamint.

Hotmoka

A blockchain application layer with smart contracts in Java

Mokamint

A generic blockchain consensus engine based on proof of space

Connect

Copyright 2025. Hotmoka. All rights reserved.

Copyright 2025. Hotmoka. All rights reserved.

bt_bb_section_top_section_coverage_image