Chapter One: The Mysterious TON Village and the Virtual Machine Stack
On a distant land of programming, there lies a mysterious village known as TON, where the inhabitants are peculiar symbols and logics. Within this village, there is an important facility called the Virtual Machine Stack (Stack). This stack is like a tall bamboo tube, into which the villagers – the StackEntries – jump one after another, forming a well-ordered little world.
Chapter Two: Unique StackEntries – The Basic Unit of the Village
Each StackEntry is a unique existence in the village. Some resemble ancient knotted ropes, recording important numbers (t_int); others look like mysterious scrolls, containing complex logics (t_vmcont); and there are also those like colorful stones, representing different data types (t_cell, t_builder, t_slice, etc.). They quietly line up in this bamboo tube, waiting to be summoned.
Chapter Three: The Art of Stack Management – Maintaining Order in the Village
The stack, like a diligent village chief, manages these StackEntries. It allows new StackEntries to join (push) and is responsible for moving them out (pop). It knows the position of each StackEntry and can quickly judge whether the stack is empty (is_empty) or crowded (depth). The stack also knows how to communicate with other villages – such as CellBuilder, CellSlice – it can string the village’s stories (data) into clues (serialization), and can also reconstruct the full picture of the stories from the clues (deserialization).
In the TON village, the stack and StackEntries coexist harmoniously, jointly maintaining the order of this little world. Their stories, though not widely known, play a vital role on the programming continent.
Chapter Four: Collaboration and Complex Structures of StackEntries
Now, let’s delve deeper into the TON village, uncover its secrets, and learn how to live and work within this village. We will approach this as a newcomer, gradually understanding the mysteries of the Virtual Machine Stack (Stack) and StackEntries.
Firstly, we must understand that the Virtual Machine Stack (Stack) is a Last In, First Out (LIFO) data structure. This means that the last element to enter the stack will be the first to be removed. This characteristic is like the bamboo tube in the TON village, where the last bamboo stick placed is always the first to be taken out.
In the TON village, each StackEntry has a unique identity marker – its Type. These types, like the clothing of StackEntries, signify their different responsibilities and capabilities. For example, StackEntries of type t_int are responsible for storing integers, akin to the village accountants accurately recording every transaction; whereas t_cell type StackEntries are like the village library, preserving rich knowledge and information.
In the TON village, the life of StackEntries is not solitary. They can collaborate with other StackEntries to form more complex data structures. For instance, t_tuple type StackEntries, like a family, tightly connects multiple StackEntries to complete more complex tasks together.
Chapter Five: Exploring Deeper into TON Village – Unveiling the Mysteries of the Stack
After getting to know the inhabitants of TON village – the StackEntries, let’s see how the Stack manages these residents. The stack provides a rich set of operations such as push, pop, is_empty, depth, etc., which are like the assistants of the village chief, helping him manage the village.
When we need to add a new StackEntry to the stack, we use the push operation. This operation is like placing a new bamboo stick into the tube, with the new StackEntry placed at the top of the stack. When we need to remove a StackEntry, we use the pop operation. This operation is like taking out the top bamboo stick from the tube, removing the StackEntry and updating the top of the stack to the next StackEntry.
The is_empty operation is used to determine if the stack is empty, like asking the village chief if there are still residents in the village. The depth operation is used to get the depth of the stack, i.e., the number of StackEntries, like asking the village chief how many residents there are in the village.
Moreover, the stack knows how to communicate with other villages – such as CellBuilder, CellSlice. It can string the village’s stories (data) into clues (serialization), and can also reconstruct the full picture of the stories from the clues (deserialization). This capability makes the stack not just a container for storing data but also a bridge for transmitting information.
Chapter Six: Becoming a TON Villager – The Beginning of the Programming Journey
Now that we have a basic understanding of the TON village, it’s time to explore it ourselves. We can create our own Virtual Machine Stack (Stack) by writing code and add various types of StackEntries (StackEntry) to it. Through these operations, we can better understand the functioning of the TON village and gain a deeper insight into the mysteries of the programming world.
During our exploration, we will find that the TON village is far more complex and exciting than we imagined. We will encounter various problems and challenges, but as long as we maintain our curiosity and patience, we can gradually master the secrets of this village and become a true TON villager.
So, let’s embark on this journey together, explore the mysteries of the TON village, and learn how to live and work within it. In this process, we will grow into better programmers and gain a more profound understanding of the programming world.
For more details, please read: TON Blockchain Stack.hpp