An even larger extension to this would be to have the sub-chain made up of single transactions.
The subchain is really just the main chain with only one tx instead of many, right?
I was thinking that transactions would specify the hash of the previous transaction or an easy header.
In this case the sub-chain is made up of full blocks, easy blocks (otherwise valid full block headers that have lower POW) and transactions.
If you assign every nth block to be a full block, you have the problem that the standard deviation of the expected arrival time of the full block is now much lower.
It isn't every nth block, it is every nth block on average. Effectively, the sub-chain is merge mined.
1. When the generated bitcoin value of the full tx block is approximately that of the 1 tx blocks (as would be the case currently), then there is little disincentive for miners to mine the 1 tx blocks. However you have the problem that since all blocks are part of the main chain, the solving full tx block is still more likely to be an orphan race, which will encourage fewer tx to be included in the block.
There is no bitcoin generated by anything other than full blocks. Otherwise, it is a change that isn't backwards compatible.
The transactions will have a tx fee though. The higher your fee the more likely others will build on your tx.
Solution: Mandate a minimum block size. However, then each tx block is more likely to be an orphan than a 1tx block. If electricity costs are high, then it may be the case that some hashes will have a negative expected value, so you're discentivising (is that a word?) tx block creation.
Miners don't mine the tx chain. That would effectively be paid for by tx fees.
It is in the best interests of merchants/customers to add their tx to the longest chain, since that will inherently have the highest fees. Some merchants might decide not to build on zero fee transactions.
As I said there is a trade-off. You can make full blocks worth more than easy headers. Similarly, easy headers would be worth more than transactions.
2. When the value of full tx block is much greater than that of the 1 tx blocks then there is incentive not to mine the 1tx blocks.
Right, but they are paid by the tx fee.
Solutions:
a. Make the probability of any block to be a full tx block be p.
The easy blocks work that way.
If p does not vary, then there is no disincentive to mine the 1tx blocks but the time between full tx blocks is back to being exponentially distributed.
Right, I don't really see how you could get it to work otherwise.
If p varies, then you have a trade off between the variation of the expected value of a hash and the distribution of the times between blocks. However any variation in the expected value of a hash will invite abuse.
If the easy headers are valid main blocks, except with lower difficulty, then the variance can't be fixed anyway.
I think a good summary is:
1. If that if you make the expected value of a block vary (either by reward or the likelihood of it being orphaned), and
Probably the orphaned thing would be the only option that is backward compatible.
2. Electricity costs are significant so that shutting down your mining device is more rewarding than mining, then
Another option would be cooling. For example, the server room could be cooled at a constant rate, so on average a certain amount of electricity is used. However, you can burst a lot of extra heating.
So you need to make each block equal in size and reward to each other block. This means that if you want a simple and provably fair system, you can't have sub chains - each block in the chain must be equal in value and similar in size to every other block in the chain or hashes will not have equal expected values of generated bitcoin.
I might still not be fully understanding what you meant, but if I have then I'm pretty sure my conclusions are solid.
I think the problem is that the thread is discussing different objectives. I don't think main block variance is that important.
The sub-chain was mainly to allow transaction ordering to be guaranteed, even before the next easy block, in order to protect against double spends.
Having a transaction chain locks that down pretty quickly. A transaction could optionally specify a previous transactions and is only valid if all transactions in the transaction chain back to the previous main block are included, except those that are invalid for some reason. No checking would be performed except hashes.
In fact, with that system, easy blocks could almost be dropped entirely. Your client keeps track of the transaction chain and keeps trying to submit the transactions with a different previous link until it wins. That still requires large bandwidth per client though, as the tx rate increases.
Maybe the merchant submits to a provider that keeps up with the block chain. The provider doesn't have to check chain authenticity, they just need to check hash links.