I have a question about step 1 in permission-less algorithm described in paper ''Algorand Agreement - Super Fast and Partition Resilient Byzantine Agreement".
Let us consider that node i runs into the condition 2, step 1 (see above red rectangle) of period p=2 , and i only received 2t+1 next-votes for value v for period p-1. Nothing else for period p-1 was received. And the block of value v wasn’t received yet.
Now, could i send proposal for v anyway, in absence of the block of value v?
Or i just could send proposal after the corresponding block received.
The latter maybe more safety. But enough is the previous safety?
Yes, process i could send a proposal vote for v anyways, even in the absence of the corresponding block. As long as we handle block propagation carefully.
That’s also enough for liveness, since the presence of a quorum of next votes for v implies a majority of honest processes received the block.
If the block reward is got by block producer, the chosen proposer of step 1 would prefer to only run condition 1 of step 1, in which he could get a chance to gain the block reward by proposing himself block. And the proposal could not be rejected by other nodes.
This would incentive node runner to be dishonest. How does algorand solve this problem?