In my ongoing pursuit to understand the best technologies available I am attempting to internalize the design behind Nxt. Here is what I think I understand and what I think the benefits are:
Every minute a block is supposed to be produced, the address who gets to produce that block can be calculated deterministically. If they don't produce a block, within the minute allotted then that address is removed from the candidate pool for 24 hours. And everyone moves on to the next person in line to produce a block.
Every block has a deterministic timestamp.
Your wallet must be online and unlocked to participate in forging.
There is a slight bias toward accounts with larger balances finding results more often than many accounts which sum to the same balance.
There exists financial incentive for people to pool their funds in one account which will then forge blocks and pay rewards because people's computers are not always online. Such a pool already exists.
In theory there should be 1 block per minute, but sometimes an address is chosen that doesn't produce a block.
Potential Attacks:
- some nodes could refuse to relay a block that was forged as it was supposed to.
- someone could dramatically slow the block production rate by having a large number of accounts and not mining with them... If the penalty period is only 24 hours then having a large number of accounts makes the penalty affect only a small portion of your power instead of ALL of your power. I suspect it could quickly get to the point at scale where most blocks are not produced and the block production rate falls to perhaps 20% or less the intended rate. After all, to produce a block your funds must be unlocked and your computer on.
- their suggestion that nodes know who to send transactions to is a problem, especially if that person is malicious.
- Denial of Service Attack... assuming only a small percentage of the users are forging then a large owner could start forging and simply stop including transactions.
- Assuming someone has a large enough balance, how do you determine which chain is legitimate and which is a fraud? Suppose there are two chains, one being produced by the attacker and one being produced by everyone else. If the attacker has 51% of the forging power, then he can produce a chain with more blocks in it than the master chain as he will simply pretend he didn't see anyone else producing blocks. Everyone else on the network then has to choose....
- How can someone pick up a new chain with no outside reference and identify it as the best chain? Most blocks? Percent of chain forging?
Benefits of this system:
- no mining required at all. Simply sign when it is your turn.
So the big question is how is it better or worse than TaPOS.
Better:
- no mining at all, you know who is randomly selected to produce a block.
Worse:
- no incentive to include transactions except for fees.. attacker may make more by performing DOS for certain transactions.
- 100% certainty on who gets to produce a block... this is bad for markets when they also have freedom to exclude transactions without penalty. If I was a market manipulator I would acquire a large enough stake so that I could frequently win the right to produce a block.
- miner can produce block that pays no fees and burden the rest of the network.
My conclusion is that their approach limits the security of the network by limiting the participants that contribute to forging/securing the network. With TaPOS everyone automatically contributes to securing the network and 100% of the shares are used. With Nxt only a fraction of the shareholders secure the network.
Things we have: deterministic mandatory transaction fees targeting a maximum average bandwidth/storage requirement. Those that include transactions of others are more likely to produce blocks than those that do not. Minimize mining rewards and maximize dividends.
I think that is all.... if someone can convince me to adopt a feature of Nxt in one of our future chains I will pay them a 100 PTS bounty.