It’s been a while since the last update, I have been busy and sick but progress is ongoing.
There was a bug that took a long time to track down in the chain sync functions for new nodes joining the network. Now that the issue has been resolved steady progress is happening. It still needs more work but is almost there.
One issue that needs to be sorted out now is what happens when new blocks generated don’t get propagated to the next block creation node. Proof of work block chains like Bitcoin don’t have this issue to such a degree.
The issue is that a node is granted permission to create a block during its time period however if it is not able to send that block out in time for the next block there is no way for the network to know that the block exists and thus the subsequent blocks can’t be hashed against it. The node could broadcast the block years later.
The solution I am looking at now is to allow these laggard blocks to exist however all of the transactions are considered void, the record transaction fees are void and the block reward is half value. In addition any block generated will also receive half block creation reward if they can’t link to the previous block in sequence. In other words if a node creates a new block with missing block numbers previously the reward is halved.
This way miners are incentivized to broadcast blocks asap and to receive the last block with high priority.
This technically also means the Safire network isn’t a chain because it will have occasional late delivered block appendages with records that don’t apply. This also means that records in the chain can’t be considered reliable until the next block is added. Block creation time is frequent though.
Soon I will have to add functionality to detect new received blocks that break the chain. Then when parsing the chain it will have to detect the issue and purge nodes and re request new nodes from the network.
More to come. Once this foundational infrastructure is working beta testers can start using Safire and I will be able to handle edge cases and attack vectors.