You've got a point. What about a flat rate of about 10c for every transaction above $10? Would that seem more "new world thinking"? what about 1c?
Better but
a) once again you have no idea the value of the tx. Only the sum of the output (which includes the change)
b) the metric that determines cost if the size of tx in kb not the value of the tx.
x cents per kb (rounded up so all tx are considered at least 1 kb) would be more logical. Still I doubt anyone would be willing to pay for it but at least your pricing metric is possible to enforce and matches the critical resources (the size of the tx).
So I guess now we're getting back on track as this is the exact reason I opened this thread in the first place;
My question is: How can I know in advance what amounts and/or addresses does a transaction have in it if the transaction is already signed?
What are my options to understand the incoming signed transaction and evaluate whether I want to push it to the network or not?
Signing isn't encrypting. If it was well no node would be able to parse the tx.
In psuedo code it works like this. Node creates a tx. Node takes a hash of the tx. Node signs the hash w/ private key = signature. The signature it appended to the "plain text" tx.
Address A pays Address B 1 BTC from public key A1
Hash of tx: fkljf8a8FSlp2WGfd29ED
Hash signed w/ private key a1 = signature c892njkn2kqhjkherqkjh
Processing node takes the signature and signs it the public key (this is why public key not just the public address is in the tx) and that will produce the hash. Processing node hashes the original tx and compares it to the decoded hash. If they match then processing node knows the tx was originally signed by the holder of the private key.
Hash of Tx -> Signed w/ private key -> Signature
Signature -> Signed w/ public key -> Hash of Tx
I would imagine it would work something like this
a) user submits signed tx by API or web form
b) parse the tx
c) verify the signature (sign the signature w/ public key, hash the original tx, both values should match)
d) verify the tx is valid (bitcoin protocol rules)
e) verify the tx meets your fee requirements (which should only be a flat fee or fee per kb)
f) broadcast tx to the network