Pages:
Author

Topic: Miners that refuse to include transactions are becoming a problem - page 2. (Read 16972 times)

donator
Activity: 980
Merit: 1000
If 'tainted coin tracing' is ever implemented, it would be pretty easy to extend the idea to 'tainted mined coins'.

Mine 75 BTC (50 plus 25 in 'melted, tainted coins') and it'd be considered 33% tainted.


Another big can of worms.
donator
Activity: 1218
Merit: 1079
Gerald Davis
If 'tainted coin tracing' is ever implemented, it would be pretty easy to extend the idea to 'tainted mined coins'.

Mine 75 BTC (50 plus 25 in 'melted, tainted coins') and it'd be considered 33% tainted.


Possibly but I would hope the taint idiots would see the catastrophic damage that would cause.

Thieves don't need to get 100% of the take to be profitable (things like a fence are just a cost of doing "business").

Say i steal 100K BTC from the bank of Bitcoin.
I have the coins melted down for a 10% fee by someone with a lot of hashing power and willingness to maximize that return (105% PPS pools anyone).  To camouflage that I create a large number of tx involving both tainted and untained coins with hefty fees which I broadcast to the network.    They get picked up by dozens of pools and the fees dispersed to thousands of miners.  Likely the taint is spread unevenly between miners adding to the confusion and uncertainty. Some of those miners use those tainted inputs in downstream txs.  Sure I didn't clear the 100K but no business is 100% profit (not even theft).  

What is MtGox going to do then?   Freeze accounts of ten thousands miners simultaneously because they have tainted coins from mining?

In most of the discussions of Bitcoin Police & taint databases the consensus seemed to be that taint couldn't follow tx fees due to the massive overhead and false positives that would create.  My interest in coin melting is to simply to show that coin tainting is beyond stupid,  Mt.Gox actions are beyond stupid.

Taint lists and account freezing undermines the fundamental concept that currency is fungible.Taint lists have a real risk of killing Bitcoin.  More than protocol flaws, more than SHA compromise, more that internal disruptions, more than govt prohibition, more than attacks by conventional financial interests.  Currency must be fungible.  Period.  If it isn't fungible it isn't a currency.

I have two $1 bills in my wallet.  Each has a purchasing power of exactly $1.00000000000000.  It doesn't matter which one I spend I get same amount of goods in return. That fungibility is a major element of the intrinsic value of the dollar.   If Bitcoin can't remain fungible IMHO it will die and will be replaced by an alternative which preserves that essential quality of currencies.
legendary
Activity: 1652
Merit: 2311
Chief Scientist
If 'tainted coin tracing' is ever implemented, it would be pretty easy to extend the idea to 'tainted mined coins'.

Mine 75 BTC (50 plus 25 in 'melted, tainted coins') and it'd be considered 33% tainted.
legendary
Activity: 1358
Merit: 1002
I can see how that might work to undermine blocklists, but selling the private keys works just as well.  Anyway, he might have to wait a long time to mine his one transaction.

There is no need to sell the private key.

transaction fees aren't subject to any taint list so ....

tainted coins in -----> coin melter* ----> untained coins out  Smiley

* coin melter simply makes a tx using tainted coins as the input a new address as the output and send a % to coinbase as a tx fee.

Using enough blocks one could convert all tainted coins into coinbase rewards.  At which point they can be used just like any other coins.

That would be a great business(and probably very profitable) for the one who is brave enough to do it Wink
donator
Activity: 1218
Merit: 1079
Gerald Davis
I can see how that might work to undermine blocklists, but selling the private keys works just as well.  Anyway, he might have to wait a long time to mine his one transaction.

There is no need to sell the private key.

transaction fees aren't subject to any taint list so ....

tainted coins in -----> coin melter* ----> untained coins out  Smiley

* coin melter simply makes a tx using tainted coins as the input a new address as the output and send a % to coinbase as a tx fee.

Using enough blocks one could convert all tainted coins into coinbase rewards.  At which point they can be used just like any other coins.
legendary
Activity: 1708
Merit: 1010
This is correct.  If you create a transaction but don't broadcast it, it doesn't exist.  The same is true for a block.

He wants to mine it himself, not broadcast it to other miners.

I'm guessing it's a transaction with tainted coins as input, and much less (or zero, if that's allowed) output value.  The difference between input value and output value goes to whoever mines the transaction, which D&T wants to be himself.  That way the tainted coins lose their taint (unless the taint calculation takes fees into account, of course).

I can see how that might work to undermine blocklists, but selling the private keys works just as well.  Anyway, he might have to wait a long time to mine his one transaction.
hero member
Activity: 597
Merit: 500
He wants to mine it himself, not broadcast it to other miners.

I'm guessing it's a transaction with tainted coins as input, and much less (or zero, if that's allowed) output value.  The difference between input value and output value goes to whoever mines the transaction, which D&T wants to be himself.  That way the tainted coins lose their taint (unless the taint calculation takes fees into account, of course).

Exact!

You can put all the tainted coins as fee or only a percentage in a transaction to another address you own.

This way you melt the tainted coins with the real transactions fee mined in the block and the block finding reward.
legendary
Activity: 2940
Merit: 1333
This is correct.  If you create a transaction but don't broadcast it, it doesn't exist.  The same is true for a block.

He wants to mine it himself, not broadcast it to other miners.

I'm guessing it's a transaction with tainted coins as input, and much less (or zero, if that's allowed) output value.  The difference between input value and output value goes to whoever mines the transaction, which D&T wants to be himself.  That way the tainted coins lose their taint (unless the taint calculation takes fees into account, of course).
legendary
Activity: 1708
Merit: 1010
It is right there in the quote.  The concept is called "coin melting".  It would render asinine ideas like "tainted coin lists" and "Bitcoin Police" beyond infeasible.  Currency must be fungible.  Having blacklists reduces the fungibility of currency and I see it as a threat to Bitcoin.

Nope, still not following. I'm afraid I don't know what you mean by "memory pool". What does it mean for a tx to be in the memory pool? What does it mean for a coin to be included in the memory pool without being broadcast?

AFAIK a tx not broadcast will not be included in a block, and therefore is effectively not a tx. It sounds to me like you want miners to be able to include arbitrary tx which are neither received nor coinbase into their blocks, the only purpose of which that I'm aware of would be for executing a finney attack with the cooperation of a mining pool.

This is correct.  If you create a transaction but don't broadcast it, it doesn't exist.  The same is true for a block.
full member
Activity: 168
Merit: 100
It is right there in the quote.  The concept is called "coin melting".  It would render asinine ideas like "tainted coin lists" and "Bitcoin Police" beyond infeasible.  Currency must be fungible.  Having blacklists reduces the fungibility of currency and I see it as a threat to Bitcoin.

Nope, still not following. I'm afraid I don't know what you mean by "memory pool". What does it mean for a tx to be in the memory pool? What does it mean for a coin to be included in the memory pool without being broadcast?

AFAIK a tx not broadcast will not be included in a block, and therefore is effectively not a tx. It sounds to me like you want miners to be able to include arbitrary tx which are neither received nor coinbase into their blocks, the only purpose of which that I'm aware of would be for executing a finney attack with the cooperation of a mining pool.
legendary
Activity: 1708
Merit: 1010
Thus if the pool simply creates the smallest possible block and thus can process it as quickly as possible so it can send out these change work details as quickly as possible, then it makes sense to do that (this processing needs to be done repeatedly, for each miner)
What processing do you think the pool has to do per-miner that has anything to do with the size of the block?
It must process the full block to produce the 80 byte header and the Midstate for each miner.


Doesn't have to.  Usually, the pool master does the merkle tree work and just passes the merkle root & the rest of the header to be hashed to the miners, so the miners don't see more with or without transactions.
We're talking about the work the pool master has to do per miner. My point is that it only has to build the merkle tree once. It can then inject a different coinbase transaction in without having to recompute the rest of the tree. (The coinbase is at the tip of the tree.)

That's mostly true, but so what?  I don't understand the point you are trying to make?  The coinbase transaction is the one that all miners must make, and correctly, for their block to be valid at all, whether that is done by a pool master, a lone miner or a botnet.
donator
Activity: 1218
Merit: 1079
Gerald Davis
Since all users are free to edit and/or delete their own posts, there is no way for me to prove absolutely what you said or did not say. That said, I can no longer find the post I was referring to, but that could be simply because I haven't looked far enough. Either way I can't find it on search and I don't feel like looking any further just to prove that you're a communist. Also, I could give a shit less what my post count is or what other people think.

So you lied.  Good enough.

One related question.  Is it possible to have bitcoind create a tx but not broadcast it?  If so is it then part of the memorypool?  If not could bitcoind be modified to make it part of the memorypool?  Essentially I want the ability to include a tx in a block that hasn't been broadcasted (coin melting).

Is there a purpose for doing that besides intentionally destroying coins, or perhaps making a finney attack?

It is right there in the quote.  The concept is called "coin melting".  It would render asinine ideas like "tainted coin lists" and "Bitcoin Police" beyond infeasible.  Currency must be fungible.  Having blacklists reduces the fungibility of currency and I see it as a threat to Bitcoin.
legendary
Activity: 4634
Merit: 1851
Linux since 1997 RedHat 4
Thus if the pool simply creates the smallest possible block and thus can process it as quickly as possible so it can send out these change work details as quickly as possible, then it makes sense to do that (this processing needs to be done repeatedly, for each miner)
What processing do you think the pool has to do per-miner that has anything to do with the size of the block?
It must process the full block to produce the 80 byte header and the Midstate for each miner.


Doesn't have to.  Usually, the pool master does the merkle tree work and just passes the merkle root & the rest of the header to be hashed to the miners, so the miners don't see more with or without transactions.
We're talking about the work the pool master has to do per miner. My point is that it only has to build the merkle tree once. It can then inject a different coinbase transaction in without having to recompute the rest of the tree. (The coinbase is at the tip of the tree.)
OK I'm not correct, but neither are you Smiley

It has to process the complete left side of the tree and the depth of the tree is based on the number of Txn's being included.
It is not a constant.

Edit: also before the tree it has to generate a coinbase txn for each miner and after the tree the midstate for each miner
full member
Activity: 168
Merit: 100
Haplo I demand you back up your LIES with a cite.

Please provide a specific cite where I stated:
a) fees should always remain the same regardless of the market value of BTC
b) miners "deserve" 50 BTC per block in fees
c) how much fees are necessary to regain 50 BTC per block.

You will learn reputation is earned here and with only 49 posts you are starting out as a blatant liar.  I expect that when you can't find evidence to back up your lies you will correct your blatantly false statements about me.  We can disagree on the facts but I won't stand by when some fraking noob start lying to my face.    Regardless of your actions the quote will remain so others can see how little your word is worth.


Quoted for prosperity how little value Haplo's word has:
Case in point: D&T ran out as fast as possible and commissioned fee software, calculating how much he has to charge people in order to regain 50BTC per block after the subsidy is cut down, as though miners "deserve" to be paid 50BTC per block in fees, regardless of the market value of 1BTC, regardless of the value of the service they provide, and regardless of what users are willing to pay (100% exclusion for those paying less than his fee).

Since all users are free to edit and/or delete their own posts, there is no way for me to prove absolutely what you said or did not say. That said, I can no longer find the post I was referring to, but that could be simply because I haven't looked far enough. Either way I can't find it on search and I don't feel like looking any further just to prove that you're a communist. Also, I could give a shit less what my post count is or what other people think.

However, there is something I'm curious about.

One related question.  Is it possible to have bitcoind create a tx but not broadcast it?  If so is it then part of the memorypool?  If not could bitcoind be modified to make it part of the memorypool?  Essentially I want the ability to include a tx in a block that hasn't been broadcasted (coin melting).

Is there a purpose for doing that besides intentionally destroying coins, or perhaps making a finney attack?

There is at least one more obvious and just as important purpose to mining ... securing the block-chain by generating new blocks.
You need both to happen since mining blocks with a million txn's will not help anything if you are not actually generating required difficulty blocks...

So, yeah, being god and saying everyone must do this coz you think it is right, doesn't really work that well in the real world where "science" decides Smiley

Securing tx and including tx are inseparable. Security with no tx and tx with no security are equally useless, since tx are ultimately what is being secured. We would never consider paying miners just to sit around spamming an empty blockchain, since that by itself serves no purpose.

That said, I can see that there may be other technical problems with the minimum inclusion proposal, but since everyone seems to have a different idea of how tx inclusion and mining pools work (which may be true, since there are different software versions), I can't even intelligibly decide whether I'm full of shit or not, however..

(1) If pool owners are purposefully excluding tx because it is inefficient for them in some way, that is entirely their fault, or possibly a shortcoming in the BTC protocol itself; but if that is the case, then shouldn't P2mining be impractical? If distributed mining isn't practical (especially now when there are only ~80tx per block), then how practical is BTC going to be when there are 1000tx+ per block? Otherwise what do we need major pools and pool operators for to begin with?

(2) If a pool owner is excluding tx because they can't keep the blockchain on their machines, we should force blockchain validation a la gmaxwell, assuming that his proposal (or something similar) would in fact solve the problem. I have my doubts.

(3) The monopolist/commons problem may or may not become relevant. A minimum inclusion requirement wouldn't necessarily solve that problem, either. The main problem is that, unlike a free market, only one "seller" gets to sell his product every ~10 minutes or so, no matter what the demand is, so there is an inherent limitation in price matching between buyers and sellers, which biases towards unilateral miner monopoly a bit more than in a "normal" market. If history serves as any reasonable guide, the next step is that monopolists arise (probably the owner of DeepBit, for that matter), then the next thing you know they own the currency and you've got full-on fascism all over again. An external fascist nation with enough resources (ie the USA) could easily produce the same result if they wanted to purposefully destroy the currency.

Some form of proof of stake might mitigate that possibility, but I don't know of any practical way to make that work. BTC combines both technological concerns along with economic concerns, which makes it far more complicated than any other currency, period. Considering it's less than 4 years old, it's not even clear that it will actually work at all at this point, but the sheer number of ways in which it could be attacked from within or without doesn't look very promising. Without tangible benefits over fiat or gold, there's no reason to use it at all. Anyone using BTC right now is really speculating on an experiment, which is fine for personal use, but unacceptable from a business standpoint.

Doesn't have to.  Usually, the pool master does the merkle tree work and just passes the merkle root & the rest of the header to be hashed to the miners, so the miners don't see more with or without transactions.

Makes sense. Then the question is "how consistently could a tx list be kept across different nodes on the network?"

D&T seems to think this would make tx inclusion less efficient (which it might depending on the mechanics of the inclusion quota) however I don't see how that could be the general case. As long as miners are using similar inclusion criteria, their lists should be very similar overall, so it should be possible to reach a reliable agreement over the network.

The way I see it, if a miner is happily accepting charity from their 25-50BTC block reward, paid by all BTC stakeholders and potential stakeholders, then they should happily accept a minimum quota of charity returned to those stakeholders to ensure the reliability and longevity of the network. It doesn't even require that they necessarily accept free tx, just as long as they include enough tx to prove that they're contributing something. The only outlier case is where the next block is found before any new tx are broadcast, which is possible, but there are ways of allowing such blocks to be accepted anyway.
legendary
Activity: 1596
Merit: 1012
Democracy is vulnerable to a 51% attack.
Thus if the pool simply creates the smallest possible block and thus can process it as quickly as possible so it can send out these change work details as quickly as possible, then it makes sense to do that (this processing needs to be done repeatedly, for each miner)
What processing do you think the pool has to do per-miner that has anything to do with the size of the block?
It must process the full block to produce the 80 byte header and the Midstate for each miner.


Doesn't have to.  Usually, the pool master does the merkle tree work and just passes the merkle root & the rest of the header to be hashed to the miners, so the miners don't see more with or without transactions.
We're talking about the work the pool master has to do per miner. My point is that it only has to build the merkle tree once. It can then inject a different coinbase transaction in without having to recompute the rest of the tree. (The coinbase is at the tip of the tree.)
legendary
Activity: 1708
Merit: 1010
Thus if the pool simply creates the smallest possible block and thus can process it as quickly as possible so it can send out these change work details as quickly as possible, then it makes sense to do that (this processing needs to be done repeatedly, for each miner)
What processing do you think the pool has to do per-miner that has anything to do with the size of the block?
It must process the full block to produce the 80 byte header and the Midstate for each miner.


Doesn't have to.  Usually, the pool master does the merkle tree work and just passes the merkle root & the rest of the header to be hashed to the miners, so the miners don't see more with or without transactions.
legendary
Activity: 1596
Merit: 1012
Democracy is vulnerable to a 51% attack.
Thus if the pool simply creates the smallest possible block and thus can process it as quickly as possible so it can send out these change work details as quickly as possible, then it makes sense to do that (this processing needs to be done repeatedly, for each miner)
What processing do you think the pool has to do per-miner that has anything to do with the size of the block?
It must process the full block to produce the 80 byte header and the Midstate for each miner.
No, it doesn't.

Quote
This processing is directly related to the number of txn's in the block - i.e. generation of the merkle root for the blocks merkle tree.
Generating the merkle tress, less the coinbase transaction, need only be done once per block. Adding the coinbase transaction at the tip has constant expense regardless of what else is in the tree.

Quote
The tree root (part of the 80 bytes) is simply the transaction number of the coinbase for a block with no extra txns - thus requires no merkle tree processing
The processing would be done only once anyway, unless you wanted to include newer transactions.

Quote
If you don't understand the merkle tree processing read here for starters:
https://en.bitcoin.it/wiki/Dump_format
Once your merkle tree of transactions is build, adding a coinbase to it has constant cost regardless of the size of the tree.

I think the real reason miners are building blocks with no transactions is because they don't want to have to validate transactions and a block with an invalid transaction would be rejected. I don't think it has anything to do with generating work units.
legendary
Activity: 4634
Merit: 1851
Linux since 1997 RedHat 4
Thus if the pool simply creates the smallest possible block and thus can process it as quickly as possible so it can send out these change work details as quickly as possible, then it makes sense to do that (this processing needs to be done repeatedly, for each miner)
What processing do you think the pool has to do per-miner that has anything to do with the size of the block?
It must process the full block to produce the 80 byte header and the Midstate for each miner.
This processing is directly related to the number of txn's in the block - i.e. generation of the merkle root for the blocks merkle tree.

The tree root (part of the 80 bytes) is simply the transaction number of the coinbase for a block with no extra txns - thus requires no merkle tree processing

If you don't understand the merkle tree processing read here for starters:
https://en.bitcoin.it/wiki/Dump_format
legendary
Activity: 1596
Merit: 1012
Democracy is vulnerable to a 51% attack.
Thus if the pool simply creates the smallest possible block and thus can process it as quickly as possible so it can send out these change work details as quickly as possible, then it makes sense to do that (this processing needs to be done repeatedly, for each miner)
What processing do you think the pool has to do per-miner that has anything to do with the size of the block?
legendary
Activity: 4634
Merit: 1851
Linux since 1997 RedHat 4
There is at least one more obvious and just as important purpose to mining ... securing the block-chain by generating new blocks.
You need both to happen since mining blocks with a million txn's will not help anything if you are not actually generating required difficulty blocks.

OK I guess I need to explain my previous post?

When a block is generated, every standard pool on the internet needs to send a message to every pool miner to start work on the new block and include the details of that work
This needs to get to the miners as quickly as possible to stop them wasting their precious mining resources on work that doesn't secure the block-chain, but rather switch to work that does help secure the block-chain.
Thus if the pool simply creates the smallest possible block and thus can process it as quickly as possible so it can send out these change work details as quickly as possible, then it makes sense to do that (this processing needs to be done repeatedly, for each miner)
As soon as that work is processed and if it is found to not provide a block, each miner will next work on a block header for the same block but that contains the transactions that the pool decided need to be processed.

So there is even a rather simple technical reason for there being blocks that only contain the coinbase txn and no other txn.

So, yeah, being god and saying everyone must do this coz you think it is right, doesn't really work that well in the real world where "science" decides Smiley
Pages:
Jump to: