It is often easier to make decisions in our daily lives when the factors influencing them remain constant. This ensures predictability, which is desirable but rarely achievable in the real world. In the blockchain world, having this guarantee of consistent results is crucial to maintaining the system’s stability. In this article, we will explore determinism and its importance in the context of blockchain.

## What is Determinism

Determinism is the property of an algorithm that guarantees the same output for the same input, consistently, regardless of how many times it is executed. To better understand this concept, let’s consider a classroom scenario. For example, a teacher writes the problem “What is 5 + 3?” on the board for students to solve. Every student who correctly follows the steps will arrive at the same answer, 8. No matter how many times the teacher asks this question, or how many different students solve it, the answer will always be the same, as long as they follow the rules of arithmetic.

**Arithmetic operations on Floating point numbers vs Integers**

Arithmetic is a branch of mathematics that focuses on numbers and the operations that can be performed on them. These operations include addition, subtraction, multiplication, and division. For example, five plus two can be written as 5 + 2. Mathematics also involves various types of numbers, each serving different purposes. Examples include natural numbers, whole numbers, integers, and real numbers.

Floating point numbers are a way to represent real numbers (any number except complex numbers). They are ideal for representing very small, very large numbers or numbers that require precision beyond the capacity of integers. Precision in this context refers to how accurately numbers are represented, and it plays an interesting role in computing.

However, computers have limitations when storing floating point numbers, which results in approximations rather than exact representations. This means that computers store a number that is close to, but not exactly equal to, the actual number, often through rounding. This approximation can lead to rounding errors, especially when working with very small or very large numbers. These errors can arise due to various factors, including differences in hardware, operating systems, or how compilers optimize floating point operations.

Integers, on the other hand, are defined as the set of all positive and negative whole numbers, including zero. A real-life example of integer use is when describing the temperature of a given location. Arithmetic operations on integers are typically accurate and consistent across systems, making them ideal for use in systems requiring high precision and reliability, such as blockchain. The main difference between floating point numbers and integers is that integers are stored exactly as they are, without any need for approximation.

## Example

Taking π (pi), which is approximately represented as 3.14159265358979, storing it in a computer can be done in two ways: using single precision (32 bits) or double precision (64 bits). Comparatively, double precision provides greater accuracy than single precision but requires more memory.

Single precision can store around seven to eight decimal places, so π would be stored as 3.1415927. In contrast, double precision allows for about fifteen to sixteen decimal places, storing π as 3.141592653589793. Although the variation between single and double precision may seem small, these differences can become problematic in scenarios where absolute certainty is critical.

## Significance of Determinism in Blockchain

Blockchain networks rely on consensus building to maintain the integrity and trustworthiness of the system. This process involves nodes (participants) in the network agreeing on the validity and order of transactions. In a decentralized environment, achieving consensus requires deterministic algorithms to ensure that nodes consistently reach the same conclusions and to prevent issues like chain forks.

As mentioned earlier, using floating point operations in blockchain networks can undermine this consistency. Arithmetic operations on floating point numbers can produce slight variations in results due to factors such as hardware and software differences. Since nodes in a blockchain network typically operate on diverse systems with varying configurations, these discrepancies can lead to disagreements during consensus building.

To avoid such conflicts, it is recommended to use integer arithmetic whenever possible. Unlike floating point operations, integers are precise and straightforward, reducing the likelihood of inconsistencies between nodes.

## Conclusion

In blockchain networks, achieving consensus is fundamental to ensuring the system’s security and reliability. Determinism plays an important role in this process, allowing nodes to arrive at consistent results, which is essential for preventing conflicts such as chain forks.

The use of floating point arithmetic, however, introduces potential inconsistencies due to hardware and software variations across different nodes. This highlights the importance of using integer arithmetic wherever possible, as it ensures precision and uniformity. For a more technical version of this article, please visit DECENOMTY – TechTalk.