Spacemesh is a decentralized platform based on a novel blockmesh, rather than blockchain, structure. Under the hood, Spacemesh uses a novel Proof of Space protocol, structured by a mesh (layered directed acyclic graph).
Users who want to run the Spacemesh protocol need to set aside some of their disk space. Spacemesh, like other blockchain systems, requires users to prove that a scarce resource is committed to the system. This is needed to ensure the security of the system. In Spacemesh, this resource is disk space, something that millions of people around the world have access to on their home PCs, which means that joining Spacemesh can be basically costless for the home user. Using disk space makes the Spacemesh protocol ASIC-resistant and consumes significantly less energy compared to blockchain systems based on Proof of Work.
Dive in to Spacemesh by clicking the numbered components in the navigation panel. If you would like to know more, you can always dive into the protocol paper, our github (which includes a local Testnet where you can see everything being described here in action) or the FAQ page – or simply ask your question directly on twitter, gitter, or discord.
Spacemesh uses a mesh structure, as opposed to a one-dimensional chain. The mesh is divided into layers, which are sets of blocks. As long as all blocks follow the protocol rules, they will be included in the ledger. This means that block producers are no longer “racing” to create the next block, thus removing the associated perverse incentives in block submission (such as those leading to “selfish mining” attacks). By using a mesh, instead of a chain, Spacemesh can process a significant number of transactions within a given time frame. It also allows Smeshers to receive rewards much more frequently as compared to block producers in a traditional blockchain.
A layer is a set of blocks published at the same time. Layers occur at fixed time intervals, e.g. 5 minutes. Immediately as every layer is published, its blocks are processed by the Smeshers, and their validity status is determined using the Hare consensus protocol.
Blocks contain lists of transactions to be added to the ledger and additional data to achieve consensus. Technically, each block belongs to a single layer, and the Smesher that creates it knows the correct time to publish it. Blocks explicitly state which blocks in previous layers they extend, an action called voting.
Each block votes for the blocks in previous layers that it (or, more accurately, the Smesher that generated it) considers ‘valid’. If a block gets enough votes, it is included in the ledger. Blocks vote according to the Hare and the Tortoise consensus protocols.
A Smesher is a participant in the network. Smeshers get to create and submit blocks of transactions to be added to the ledger. They also participate in the Hare consensus protocol. Smeshers play a critical role in ensuring the stability of the network. To become a Smesher, one needs to run the Spacemesh App and allocate disk space for a designated period of time. Smeshers are incentivized for their efforts via transaction fees and by receipt of a ‘Smeshing reward’ for creating blocks.
Non-interactive Proof of Space Time (in short, NiPoST) is a proof, given by a Smesher, that the committed disk space was used for the Spacemesh protocol over the designated period of time. The proof is self-contained (requires no interaction with the proving Smesher). It combines the PoSTand PoET algorithms. Each Smesher needs to publish a NiPoST in order to become eligible to Smesh blocks, and keep on publishing NiPoSTs to maintain their eligibility.
PoST (Proof of Space Time) is a sub-protocol of NiPoST. It is the algorithm that proves that the committed disk space was used for the Spacemesh protocol. The algorithm first generates unique data that occupies that committed disk space. Once this initialization phase is completed, each execution of the PoST algorithm provides a proof for the existence of the data (that the data was not erased). The Smesher executes PoST after each full execution of the PoET algorithm.
PoET (Proof of Elapsed Time) is a sub-protocol of NiPoST. It is the algorithm that measures time. Elapsed time is measured by iterating a sequential work cycle that takes a set amount of time to execute. The algorithm provides a proof that it has worked sequentially for a predetermined number of cycles, and thus proves that the period of time determined by its parameters has elapsed during its entire execution. PoET is not run locally by the Smesher; users query communal PoET servers. As a result, the entire network may need only a small number of PoET servers.
The Hare is a Byzantine-fault-tolerant consensus protocol that is used in order to get agreement about which of the blocks in a given layer should be considered valid, and thus voted for, by all Smeshers. The Spacemesh protocol guarantees that blocks that are published on time will be considered valid.
The Tortoise is a vote-counting protocol that is used in order to finalize block validity. For each block, the Tortoise constantly tallies all the votes both for and against it. Once a confirmation threshold is passed, it announces whether the block is valid or invalid. Ideally, the validity results of the Hare and the Tortoise should be in agreement with one another. However, the Tortoise guarantees that Smeshers will reach consensus, even if the Hare protocol fails (such a failure is extremely unlikely, but over a long-enough time period even very low probability events may eventually occur). Thus, even though the Tortoise is slower than the Hare, it ensures that consensus is reached on the entire history of the ledger.
The ledger is the ongoing, official recorded history of transactions. The ledger is updated one layer at a time: once there is an agreement about the validity of all of the blocks in a layer, the transactions from all of the valid blocks are added to the ledger.
Source + https://spacemesh.io/overview/?page=intro