Right now, the only suggested use-case for the tx_extra_field is for the payment ID. Can we limit the size of the tx_extra_field to a specific size to prevent people from abusing placing a large amount of data here? If so, what should be the limited size, assuming using the payment ID is the only use-case.
I wouldn't do that. The tx_extra field opens some possibilities for unforseen inventions build on Monero. Monero doesn't have such rich scripting language as Bitcoin, but the tx_extra field offers some other possibilities how to make use of the anonymous blockchain in other ways than simple monetary transactions. It may for example interlink monero transactions (which are private yet very secure) to other distributed p2p data..
The larger the tx_extra, the more fee you pay and you still need to be able to fit your transaction into block.
If we could predict all the things tx_extra could be used for then sure, we can do that. But as a thought: what if Monero can no longer hard fork in future due to complexity / politics / etc., and so we decide to stuff a new transaction format into tx_extra? Had we limited tx_extra we'd have a hard time doing that.
Ultimately, too, there's no difference between someone stuffing data into tx_extra and someone stuffing data into output destinations.
Some good answers so far, but I think the keys here are:
- Yes, we could cap the size of tx extra, however this would require a fork (pretty common for Monero so not a big deal)
- Putting a cap is essentially saying "this is spam", but I don't think that's super valid, as other have alluded to. Fees in Monero pay for block space, and so ultimately miners can say "yeah, that's cool" or "no thanks, dude" based on if the person sending a tx with a big extra field pays enough fees.