# Block building and reception protocol

When the miner completes the initialization of the capacity space through the plot algorithm, it will receive the proof search task in the network. Once it finds a proof that meets the requirements, it will begin to construct blocks of corresponding height. The process of block construction is as follows.

Step 1: Miners make the following attempts every slot. The miner obtains the local time t, and if t is less than the previous block timestamp, the current slot ends. If t is greater than the previous block’s timestamp, the miner can try different slots starting from the previous timestamp.

Step 2: The miner obtains the challenge parameter c from the previous block and finds the $\left(x,x' \right)$that satisfies $c= \_n sha256\left(string\left('MASS'\right)||doublesha256\left(pk\right)||x||x'\right)$from hashmap table B. The value of $sha256\left(string\left('MASS' \right)||\left(doublesha256\left(pk\right)\right)||x\right)$ and the value of $sha256\left(string\left('MASS'\right)||doublesha256\left(pk\right)||x'\right)$ are flipped each other.

Step 3: After the miner finds the $\left(x,x'\right)$ that satisfies the challenge, it will calculate the quality $\left(quality=hash\left(x,x',height,timestamp,size\right)\right)$and judged whether the quality is higher than the difficulty.

Step 4: If the above conditions are met, the block will be built. If they are not, the current slot will be ended.

Step 5: When generating the block, the miner signs the block hash and creates the proof SIG，completing the block. This is then broadcast to the other nodes.

After receiving the block, the miner must verify the following:

1. Verify that the timestamp of the block is greater than the timestamp of the previous block. If it is, subsequent verifications can be performed. If not, the block is discarded.

2. Use local time to verify the legality of the timestamp. If the timestamp is greater than local time by more than 3 seconds, the block is rejected.

3. Check if the PK is on the blacklist, and if so, reject the block. Miners who mine on multiple forked chains will be blacklisted.

4. Verify the block signature.

5. Verify the capacity proof signature.

6. Verify the proof of capacity.

7. Verify the quality of the proof.

8. Verify the difficulty, the challenge and the transaction root.

9. Verify all transactions.

10. When all the above have been check and timestamp local time is passed, the block can be added to the chain.