Abstract: getblocktemplate more wasteful than getwork
As a solo miner, I switched one of my FPGA hosts to bfgminer 2.9.3 in order to mine with getblocktemplate against bitcoind 0.7.1. This particular host has 37 FPGA devices (mixture of bfl singles, cm1's, icarus's) and I notice that bfgminer is sub-optimal: every 2-3 minutes, it does about 20-40 getblocktemplate calls in a row (1 for each FPGA device?). These 20-40 getblocktemplate calls amount to about 3-4MB total. So on average, getblocktemplate generates about 1-2 MB of network traffic per minute.
On the other hand, when mining with getwork, these 37 FPGA devices amount to about 15 Ghash/sec, so it generates about 4 getwork calls per second, or about 600 kB/minute as measured by a packet sniffer.
Bottom line, getblocktemplate as it is implemented in bfgminer causes my host to generate more network traffic than getwork (but fewer RPC calls). I haven't taken the time to read the code yet, but, Luke, isn't there something trivial to optimize to reduce the number of getblocktemplate calls?
bitcoind is not intended for use of slow networks, and doesn't even attempt to minimize traffic. It also does not currently implement long-polling (though next-test has a patch to support it), so the template needs to be refreshed regularly in case of the old one being stale.
As you note, above matters with bitcoind aside, bfgminer does not implement GBT optimally at this time, since it is using code originally built around getwork; cgminer has bypassed the getwork paths for its GBT support, but also intentionally designed the GBT path to use more bandwidth (conman wants to make GBT look bad). Rewriting the pool networking code in bfgminer has been on my todo list for a while (mainly due to other problematic bugs in it), and hopefully I'll get to that before 3.0. But even without it, each template is still able to scale per device, so the problem of ASICs hashing much faster is still dealt with in practice.
As per the discussion we had in #btcfpga not long ago where you already know the truth, yet you still try to spread lies ...
Spreading lies about people I guess is the only way you'll be able to get people to accept your piece of shit, crappy protocol that's worse than the old getwork in it's network usage and certainly no better performance for mining compared to getwork with any single device up to at least a few 100GH/s
What ckolivas did was make sure the GBT piece of shit was getting the same number of work requests as Stratum is receiving.
If that is called "intentionally designed the GBT path to use more bandwidth" then you seriously should not be allowed to go anywhere near the bitcoind software.
You already put botnet support in bitcoind 0.7.x so no doubt I'm not surprised at you telling people to make BTC transaction confirms worse.
You made transaction confirm times worse with your piece of crap pool for 5 months so the pool would make more BTC, so yeah it's not surprising.
Your above statement directly implies that using GBT means you negatively affect transaction confirm times and using Stratum is better for transaction confirm times since you are directly implying that GBT should be doing fewer work requests than Stratum sends the miner.
BTC is about transactions - go read Staoshi's paper if you are so stupid as to not understand that.
If no one confirms transactions, then BTC is dead.
Since you are directly implying that the GBT implementation in your clone miner negatively affects transaction confirm times compared to Stratum, then you are seriously saying that people SHOULD NOT be using it.
Though the argument itself is worse, since you are saying that the GBT protocol requires fewer work requests and thus negatively impacts transaction commit times compared to Stratum, and thus the protocol itself is to blame.