When you saying 0 fee, you should explain how system know which transaction should be processed first! This is a main purpose of fees and blocks are limited in size!
How do they order the blocks (agree on previous and next block) if it is async/parallel?