Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enforce Block Transactions to Have At Least One Input #247

Open
aszepieniec opened this issue Nov 18, 2024 · 0 comments
Open

Enforce Block Transactions to Have At Least One Input #247

aszepieniec opened this issue Nov 18, 2024 · 0 comments
Labels
mainnet issues that must be resolved before launching mainnet

Comments

@aszepieniec
Copy link
Contributor

There should be a rule in Block::is_valid (at first on the host machine only; eventually also in the recursive program) that enforces that a block transaction always has at least one input.

This rule is the counterpart of another rule in RemovalRecordsIntegrity which stipulates that a transaction either has no coinbase or has no input UTXOs. This rule already exists. The two rules together ensure that the miner cannot compose empty blocks, and must include at least one transaction. The motivation for this limitation is to ensure that there is no disadvantage to include transaction in one's blocks.

When there are no transactions in the mempool, how does a composer obtain one to include? He cannot just conjure a dummy transaction because its inputs are not in the mutator set yet. Therefore, we must have a spigot mechanism so that miners can always get some input, even if that input is not currency of any sort.

Incidentally, this spigot could serve the purpose of adding dummy transactions to obfuscate the transaction graph, adding (a little bit of) unobservability to the existing anonymity guarantees.

@aszepieniec aszepieniec added the mainnet issues that must be resolved before launching mainnet label Nov 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mainnet issues that must be resolved before launching mainnet
Projects
None yet
Development

No branches or pull requests

1 participant