Imagine a contract that rewards the first user that publish a specific big piece of data into the blockchain. The transaction may cost an appreciable cost if the information size is big. The problem for the publisher is that he must specify a high gas limit that may lose if there is another publisher that sends a transaction at the same moment and miners inserts that transaction before the first's one.
Is there a way to say to the miners to accept only transactions if no other transaction is send to a contract in the same block?
I was also thinking in a contract with two steps:
- The first one to reserve a slot to publish with a deposit
- A second step to actually publish it.
The problems of this strategy is that it will add a publication delay, and fill the blockchain with more transactions. Imagine the case where there are hundreds of possible publishers.