As an Amazon Associate I earn money from qualifying purchases.

Monday, February 17, 2014

Quick GPU Price/Performance Update

If you're still chasing the dream of building rigs with R9 290X or even R9 290, you might want to reconsider as the pricing right now is way out of line with the performance being offered. Here's the short rundown of the currently shipping AMD GPUs, their prices, and their expected performance. All of these are linked via my Amazon Affiliate account, so if you're shopping there I'd appreciate you sticking with my links! I know they're not always the least expensive option, but if you have Amazon Prime you can potentially get free shipping as a bonus (if you can find an appropriate GPU in stock, that is).
GPU Price Performance KH/$
R9 290X $799 900KH/s 1.126
R9 290 $640 800KH/s 1.25
R9 280X $430 700KH/s 1.628
HD 7970 $450 700KH/s 1.556
HD 7950 $444 600KH/s 1.351
R9 270X $250 440KH/s 1.76
HD 7870 $220 425KH/s 1.932
HD 7850 $196 380KH/s 1.939
R9 270 $236 400KH/s 1.695
Now hopefully it's clear that those performance estimates are a rough ballpark of what you can expect, so don't complain if you only get 850KH out of an R9 290X -- and I've seen a few people pulling close to 1000KH with a 290X, though I'm not quite sure why/how (they were MSI cards, if that helps). In some cases, you can expect to slightly beat a few of the figures. The main point is that in terms of performance per dollar, right now the best options appear to be the old (basically discontinued) HD 7850 and HD 7870 cards, and if you can't find those in stock than the R9 270X and R9 270 are the next best choice, with the R9 280X coming in fifth overall. The R9 290 and 290X are so overpriced right now that they're not even remotely worth considering in my book.

Of course you have to factor in the cost of the rest of the system -- if I just copy an old post from last month,  with a bit of tweaking, here's what you'd need -- and keep in mind that with these lower power/performance GPUs, I'm not as hesitant to try going with five or even six GPUs in a rig (though the risers do get expensive). Get two PSUs, six GPUs, and six risers if you want six GPUs, or stick with a single PSU and three risers to keep it simple:
ComponentDescriptionPrice
MotherboardGigabyte GA-990FXA-UD3/UD5 AM3+$137-$175
ProcessorAMD FX-8320 Vishera$159
MemoryCrucial Ballistix Sport 4GBx2 DDR3-1600$80
Power SupplyRosewill Capstone 750W 80 Plus Gold$100 each
Storage2.5" 60GB Kingston V3 SSD$50
Risersx16 to x16 and/or x1 to x16 powered$20 each
Case?Build it out of wood or PVC pipes!$40
Total Cost$626-$824
It's still by no means an inexpensive system, but total cost we're looking at roughly $1286 for a system built with HD 7870 GPUs that would do 1275KH -- and that CPU is still available to mine something like Darkcoin. Bumping up to a six-way rig would increase the price to $2144 (plus tax and shipping as appropriate), for around 2550KH. If you were to try for similar performance with R9 290X, three GPUs would cost $2400 just on their own! It might be more efficient in terms of space to go with R9 290/290X, but for price/performance it's better to take a step or two down from the top dogs.

Everything You Wanted to Know about Scrypt-Jane

I've talked a bit about a few scrypt-jane based coins previously -- specifically I've mentioned Microcoin, but there are several others. I've also talked about the alternative Proof of Work (PoW) algorithm used in Vertcoin, "Scrypt Adaptive N-Factor". Put simply, I like the VTC algorithm a lot more, but I've never really discussed why. So, this is as good a time as any to broach that subject.

Fundamentally, the difference between scrypt-jane and VTC's Adaptive-N-Factor PoW algorithms is pretty simple. VTC basically went with hand-picked dates for when to move on to various higher N-Factors, while most coins using scrypt-jane have a formula that decides when it's time to move up the difficulty ladder. In fact, VTC actually adjusted it's rollout schedule in a hard-fork of the blockchain after the first couple of weeks, at the same time they introduced KGW.

But I'm getting ahead of myself. First, I suppose I ought to quickly cover what N-Factor is used for. N-Factor represents the amount of data that a thread works on, with the N in N-Factor being the power of two  (minus 1) that's used. Standard scrypt uses and N-Factor of 9 (I think? Correct me if I'm wrong and I'll fix the table!). Here's the quick list of RAM requirements (poached from the VTC announcement thread):
N-Factor N (2N+1) Memory
9 1024 128KB
10 2048 256KB
11 4096 512KB
12 8192 1MB
13 16384 2MB
14 32768 4MB
15 65536 8MB
16 131072 16MB
17 262144 32MB
18 524288 64MB
19 1048576 128MB
20 2097152 256MB
21 4194304 512MB
22 8388608 1GB
23 16777216 2GB
24 33554432 4GB
As you can imagine, running the scrypt algorithm with N-Factor of 20 would require a huge chunk of RAM even on a CPU with eight threads -- 1GB just for the basic memory footprint. On a GPU like the R9 290X that has 2816 shader cores and 4GB RAM, any N-Factor above 13 is going to present some real problems. Now, let's get back to VTC's Adaptive-N vs. scrypt-jane.

With Vertcoin, the rollout of the above N-Factors has been set such that we start at N-Factor 11, we'll move to N=12 February 25, 2016; N=13 comes in September 30, 2017, and so on. The reasoning is that right now, scrypt ASICs are just starting to show up, and they're all built for N=10; to make a new ASIC for N=11 will require a solid 6-12 months at least -- assuming you can find a company that thinks it's even worth doing, considering N=12 will supplant N=11 -- and it would require a lot of RAM. And in the meantime, those with GPUs can still do a decent job of mining.

Truth be told, scrypt-jane doesn't actually define any schedule -- it's just a flexible implementation of scrypt that can be tweaked as desired. It supports several mixing and hashing functions, with scrypt being used with a varying N-Factor. In general, scrypt-jane implementations have set a minimum N-Factor of 4 and a maximum N-Factor of 30. That's fine, but the problem is how coins are scaling the N-Factor. Here's what happens with YACoin, YBCoin, Ultracoin, and Microcoin to name several that I've checked:
  1. Calculate the number of seconds since the launch of the coin.
  2. Look at that number in binary, and basically find how many significant binary digits are used, but don't count the three most significant digits.
  3. With those three most significant binary digits, do a logical AND operation with 0b11 (or in other words, look at the two least significant bits).
  4. Using the numbers from steps two and three: NFactor = ([BinSigDigits - 3] * 170 + [{ThreeMostSigBinDigits & 0b11} * 25] - 2320) / 100
  5. The result is converted to an integer and limited to values between 4 and 30, inclusive.
That's one of those formulas that just doesn't seem too sensible to me, and the code unfortunately doesn't shed any light on why these numbers were selected. Why 170, 25, 2320, and 100? As my computer science instructor used to call such numbers: GOK (God Only Knows). This is why we have constants defined in code, so that you can give a short comment on what the number is used for. Bad coding practices unfortunately are par for the course in the cryptocurrency world. So what does this formula actually mean? Well, it means the N-Factors will be changed on the following time schedule:
N-Factor Seconds Since Launch Days at N-Factor
4 0-524287 6.07
5 524288-786431 3.04
6 786432-1048575 3.0
7 1048576-1835007 9.1
8 1835008-2097151 3.1
9 2097152-4194303 24.2
10 4194304-5242879 12.2
11 5242880-8388607 36.4
12 8388608-12582911 49
13 12582912-16777215 48
14 16777216-33554431 194
15 33554432-41943039 97
16 41943040-67108863 292
17 67108864-100663295 388
18 100663296-134217727 388
19 134217728-234881023 1166
20 234881024-268435455 388
21 268435456-536870911 3107
22 536870912-805306367 3107
23 805306368-1073741823 3107
24 1073741824-1879048191 9320
25 1879048192-2147483647 3107
26 2147483648-4294967295 24855
27 4294967296-5368709119 12428
28 5368709120-8589934591 37283
29 8589934592-12884901887 49710
30 12884901888+ (Indefinitely)
Personally... I think that's a stupid set of N-Factor progressions. There, I said it: the standard scrypt-jane implementation has non-sensible spacing between some of the N-Factors. Take the first 48.5 days when we're below N-Factor 10 as a prime example; what purpose does it serve to use such low N-Factors? Well, early on the GPU mining speed in scrypt-jane will be much higher compared to CPU mining, whereas once you hit N-Factors of 9 and above it starts to slow down. At that point, we're still only looking at 15-50 days between some pretty severe adjustments in hash rates from 10-13, which just creates a bit of chaos. Then round about N-Factor 14, we reach the point where CPUs become roughly as fast as GPUs, give or take -- we've actually got a real example of this, as YACoin is already at N-Factor 14 -- and then we start to slow down on the N-Factor changes.

So here's the question: is a coin that's predominantly limited to CPU mining a good thing? While I'm happy to mine such coins when it makes sense from a profitability standpoint, I generally assume that any good coin that sticks around long enough will end up with a GPU miner port, unless it's simply impractical to make one. But if the algorithm is simply not portable to GPUs for whatever reason, I don't inherently think that it's a bad thing. My problem with scrypt-jane is that it sort of goes the opposite route: it starts out by opening the floodgates for GPUs, but then after six months or so (194 days), we reach N-Factors where GPU mining becomes quite slow. That will result in most if not all GPUs leaving to go to "greener pastures", which is sort of the opposite of what you want to happen.

The typical progression is usually the opposite. We start with a CPU-only coin (BTC started this way, and so did LTC, QRK, and now DRK). After the coin/algorithm gains some momentum, smart people figure out a way to use GPUs to speed up the work. More time passes and if the coin(s) using the PoW algorithm remains viable, maybe people even try to make an FPGA or ASIC for the core algorithms. If you want to stop this sort of progression, well, honestly you can't truly stop it -- all you can do is make it more difficult. Remember that scrypt was originally created to be a CPU-only PoW, but that failed. Quark and X11 have now been ported to GPUs with varying degrees of success. Considering GPUs are becoming more like CPUs, at some point in the future it's not a stretch to assume that if something can't be mined (effectively) with a GPU, it probably can't be mined with a CPU either.

Wrapping up, I wanted to quickly look at the most common scrypt-jane coins and check on hash rates profitability -- for CPUs as well as GPUs. This is obviously just a snapshot in time, but going with the four coins mentioned earlier (which are similar in most respects in terms of PoW implementation, though the block reward schedules vary), here's what we have (as best as I can tell -- again, correct me if I'm wrong as it's a bit tricky to find the current N-Factor for most of these coins):
Coin N-Factor CPU Perf.
(i7-4770K)
GPU Perf.
(HD 7970)
Difficulty BTC Rate BTC/Day
(CPU / GPU)
Microcoin 10 ? 450 2.319 0.00000003 ? / 0.0134
Ultracoin 11 ? 235 6.828 0.00034 ? / 0.0118
YACoin 14 0.97K 1.4K 0.0167 0.000031 0.00184 / 0.00258
YBCoin 14 0.97K 1.4K 0.119 0.0037 0.00191 / 0.002^8
So it's worth pointing out that the start times for the various coins determine when the N-Factor changes; Microcoin has a start time of 1389028879 (06 Jan 2014 17:21:19 GMT) while Ultracoin has a start time of 1388361600 (30 Dec 2013 00:00:00 GMT), so UTC is currently one N-Factor ahead of MRC. As for YAC and YBC, other than their reward structures they're both close enough in start times that they're on N-Factor 14. Also, I couldn't find a CPU miner that didn't hard-code the start time so I couldn't test CPU rates on MRC and YAC (yet -- if you have a binary for Windows, let me know).

The short summary: YAC and YBC are mostly not worth your CPU/GPU time, while for the time being MRC and UTC are doing okay. MRC will have a lot of coins, and the current exchange rate fluctuates around 2-4 satoshis, so you can see pretty large swings in value over the course of a single day. If you want to dump a bunch of MRC, you'll probably get 2 satoshi whereas being patient can get you 3 or 4 satoshi.

The big problem with mining any of these is that the scaling N-Factor happens so early that if you're not in before N-Factor 12 or so, you've missed the boat for GPUs. Which means if you are in early enough, holding the coins for the first 100-150 days or so (until we reach N-Factors of 12) isn't a bad idea. Check back in a couple months and I'll let you know how that strategy worked out for me!

Wrapping this up, sorry if I'm pissing any anybody's favorite pool, but I call it as I see it. There have been plenty of questionable coins released in the past year, and while early adopters have often made out with big winnings, johnny-come-lately is often left wasting their time and energy on a dead-end coin. Plus, I had some people ask about Ultracoin in particular (since it's relatively new), and this post is a result of my looking into that topic. What's really sad is the state of many of the coin releases, with poorly documented code that was clearly just cloned from another coin and tweaked as little as possible. Anyway, we'll see which coins are still around in another year and being actively mined; until then, happy (scrypt-jane?) mining!

Donations welcome
MRC: 1Ctnz6cHcMYiF9fz2pyd6orFuo1mDhKdWj
BTC: 153qS9Ze32hnV3fwirZLWNka4wBAowc21E
LTC: LfCLyykrNFftzpdWejR73hf478ZtBzQ9jE
VTC: VaYNYUUi3amUTKQAQSs9EM4xJyNRyqnoUG
UTC: Uj1rnV4fZBPAngTj7xcYHrRcxKkadRiqGo
YAC: Y1xTeeJFnwawaCPVHcvhH23w5oDGy1VRgC
YBC: Yg6wWEd2fcMyMcxbQ3eGg3dXo5aYs878pt

Friday, February 14, 2014

Taking the DOGE for a Walk

A couple of things have happened in the past few days. First, in anticipation of the block reward halving, the price of DOGE shot up quite a bit -- from around 0.0000016 BTC/Doge to a current 0.0000025 BTC/DOGE (and a high of as much as 0.0000029 or so). If you were mining and holding DOGE for the past month or two, right now you're sitting on a pretty healthy balance and you could trade it all in for some good BTC gains. But now that the block reward has been cut in half and the price didn't double, the result is that mining DOGE is no longer looking so attractive -- especially when you look at other scrypt-based coins.

Right now the difficulty and exchange rate of LTC (2674, 0.0252) means mining LTC will net you about 0.0095 BTC per day, whereas mining DOGE will net you around 0.0105 BC per day. So yes, DOGE is still beating LTC, but only barely. Looking at scrypt coins in general, the top contenders right now for your hashing power are (depending on the time of day) Noblecoin, Lottocoin, Smartcoin, Anoncoin, and Klondikecoin. Others occasionally show up as well at the top of the profitability charts, but looking at the 14-day averages at Coinwarz, I'd recommend sticking with coins that are clearly above LTC during that time span (so 110% or more). Of course, if you're looking to trade for BTC, you shouldn't be mining any of those scrypt coins!

I keep mentioning alternative Proof of Work coins simply because right now, they make the most sense for GPU mining. There's really no other way to put it. The best scrypt-based coins are still profitable, but coins using something other than SHA-256 or vanilla scrypt seem to be the better option. It's not that these coins are inherently better, mind you, but that they're at least different enough to create some buzz, which in turn creates value. And if the buzz fades, so does the value, perhaps with some large coin holders sticking around to prop up the value of their millions of coins. If I were holding millions of DOGE right now, I'd probably be singing a different tune, but I've never viewed DOGE as more than a one-trick-pony and so I've moved on to greener pastures. Maybe I'll be back, but not just yet.

The other interesting thing to happen is that BTC has continued its rollercoaster performance since the start of the downward trend that apparently was sparked buy Russia declaring Bitcoins illegal (or something like that). What's truly awesome is that Russia declared Bitcoins illegal apparently because "it could finance terrorism." Maybe the US and all of the Middle East should do the same? "Ain't nobody gonna finance these here terrorists unless they do it with hard currency, dadgummit!" Anyway, if you're trying to day-trade BTC, the past few days were likely either great or terrible -- depending on whether you managed to properly "buy low, sell high" or if you ended up playing the fool and using the "buy high, sell low" strategy.

I'm bad at predicting where BTC values will go -- or any stock or cryptocurrency for that matter -- so I'm sticking with mining as best as I can! Good luck to you all. I've got a separate post to put together as well as to "what to mine", but before that I want to get into a separate topic. Stay tuned....

Wednesday, February 12, 2014

How to Calculate Coins per Day for Any Cryptocurrency

By this point in time, it's probably pretty obvious that I like numbers. Some people hate/hated taking math classes in school, wondering, "What's the point!?" Ironically, I was the opposite: I hated all those English and history classes... and now I basically write for a living. Side note: kids, stay in school, work hard, and don't think the world owes you anything! Instead, go out there and make something happen. I digress....

So if you follow all the cryptocurrency stuff (which you must or why would you be reading my blog?), you're certainly familiar with Coinwarz and Coinchoose, and maybe you even try to decide what to mine based off of their charts. There are a couple major problems with that approach unfortunately: first, tons of other people (and multi-pools) are basically doing the same thing; second, you're inherently limited in what coins you can mine as neither pool comes close to listing every current cryptocurrency.

Take Vertcoin, Microcoin, Darkcoin, and Maxcoin as four prominent examples. Whether or not you believe any of those coins have merit, the fact is that they don't use scrypt or SHA-256 algorithms and are not listed on any of the major "which coins should I mine?" sites. So how can you determine the approximate profitability of those coins? More importantly, how can you determine the profitability for pretty much any cryptocurrency? Well, there's a way, and short of someone modifying a core aspect of the code to change things up it's not too difficult. Ready for this? The number of coins per day you can expect to mine with a given hash rate can be expressed with the following equation:
Now I know what you're thinking: "Thanks, that's just what I always wanted: equations and formulas to help with my mining operation!" Actually, some of you might be happy to have that equation, but now that you have it, what do you do with it? See, the problem is that denominator on the bottom -- yes, I'm throwing out math terms here. The numerator is on top, and that's easy enough to come up with the inputs, but now do you create the denominator on the bottom? The trick is to understand how computers work, and what the big long string of 0's and F's really means.

Computers work in binary digits -- zeroes and ones -- so when we talk about the number 100, a computer doesn't represent it as two digits; instead, it would use seven digits, called bits, and 100 would be represented as 1100100 -- or to help people know that we're talking about a binary number, we would write 0b1100100. Of course, writing out just zeroes and ones like that isn't always super useful, and so we have hexadecimal notation, with "digits" of 0..9 and A..F.

Any programmer already knows where I'm going, but the short summary is that hexadecimal allows you to use one character to represent four binary digits (bits). The denominator within the denominator is in hex notation, 0x00000000FFFF.... If you count the number of characters in that string, there are 64 (eight zeroes, four F's, and then 52 more zeroes). In binary, that big long hex number would be even longer: 32 zeroes, sixteen ones, and then 208 more zeroes. The problem now is finding a way to deal with those big numbers.

If you pull up the Windows calculator as an example, we can calculate 2256, and it gives us: 1.1579208923731619542357098500869e+77. As you might expect, there's a loss in precision with that "e+77" part. The second number is a bit more difficult to deal with. 0x0000000FFFF.... ends up being the same as sixteen ones followed by 208 zeroes in binary, which is the same as:
2208 + 2209 + 2210 + ... + 2222 + 2223, or if you prefer it's: 2224 - 2207 - 1 (I thnk?). There's still a loss of precision however, as the result is 2.6959740979080974643911745715872e+67 (so we're missing about 37 digits worth of precision). Just running that calculation in the Windows calculator, however, we can make a substitution and the result becomes (the number is a bit off, but it's okay):
That's actually "close enough" given that the difficulty and hashrate aren't exactly stable on any coin, but we can actually be a lot more precise. You see, 2256 is actually the same as 0x1000... with 64 zeroes after the one. So we can get a more accurate number by recognizing that 0x1[64 zeroes] / 0x00000000FFFF[52 zeroes] is the same as 0x1000000000000 / 0x00000000FFFF, and those are easy enough to calculate. It ends up being 248 / 65535, which is 4295032833 -- so my above estimate is off by 0.00076% -- nothing to worry about, but I just wanted to be "100% accurate".

But enough talk. You probably don't want to create your own Excel spreadsheet, and I don't have the inclination to try and write a web application that will pull down the information for an arbitrary coin. If you want an estimate on the number of coins -- of any cryptocurrency! -- however, I can help. If all goes well, the form below should do what you need; it's messy but still potentially useful. I personally like having something like this because it's usually very easy to find out the current difficulty and block reward for any cryptocurrency, but sometimes determining things like network hash rate is not so simple. Note that I didn't try to account for electricity costs, mining pool fees, or exchange fees.

Cryptocoin Mining Calculator

Hash Rate
Difficulty
Block Reward
BTC Rate
BTC Price (USD)
Coins per Day (Month) 0
BTC per Day (Month) 0
USD per Day (Month) 0


Fun facts for current profitability (determined using my awesome calculator):
DRK (X11 PoW for CPU mining) will generate about $3.75 with a Core i7 CPU
MAX (SHA-3 kekkac PoW) will generated about $5.95 per day with a Radeon 7950
MRC (scrypt-jane alternative PoW) will generate about $7.70 per day with a Radeon 7950
VTC (adaptive-n-factor PoW) will generate about $7.30 per day with a Radeon 7950

Donations as always are welcome:
BTC: 153qS9Ze32hnV3fwirZLWNka4wBAowc21E
DOGE: DD9iTWf8diPkvKdB8roPJepTyp6BGVQtct
DRK: Xd3EaCJg6G8ZnGuKkpvwyRMwyHzbaRDnob
LTC: LfCLyykrNFftzpdWejR73hf478ZtBzQ9jE
MAX: mf5DXTLiZFCnJC2x13MXSyigyUjmBnrwjG
MRC: 1Ctnz6cHcMYiF9fz2pyd6orFuo1mDhKdWj
VTC: VaNuRCj73JVAwR1YMnt8CXaqoiPgykiMTk

Thursday, February 6, 2014

What Makes a Good Cryptocurrency, Part 1: Slow and Steady

I’ve discussed some of these thoughts before, but I wanted to get into this a bit more. Vertcoin is a great example of how to make a useful new cryptocurrency, and the reasons for its current success are due in a large part to the design. Fundamentally, I think any good cryptocurrency needs to have the following:
  1. It needs to do something new relative to what is already out there.
  2. It needs to launch in a “fair” manner.
  3. Difficulty adjustments should happen sooner rather than later.
  4. It needs to be designed with the future in mind.
I’m sure there are other things that I could put on the list, but I'm going to focus on point number four right now. There's an old saying: "slow and steady wins the race", which we're all familiar with from the story of the tortoise and the hare. While the latest meme cryptocurrencies may catch fire for a short time, I don’t think they’re a strong basis for a lasting currency. And DOGE, I hate to call you out like that, but long-term I don’t think your prospects are all that bright (similar to your silly Doge face – such wow and all that). A primary reason is that the coins get paid out in a short amount of time and we reach the point where the block rewards largely disappear.

Of course, "short" is all relative, but to me a coin should be designed such that it will still have a reason for mining (i.e. securing the network) in five, ten, twenty, etc. years. If as an example you have a new currency with one million total coins and they'll all be mined in six months, what will keep miners going with securing the network past that point? If transaction fees of 0.1 coins per transaction were mandatory, and if there are on average 10 transactions every block, that would mean even if you're doing a block every 30 seconds, you're still only giving out 2880 coins per day. So the people that mined the initial 1 million coins of this hypothetical currency did so at let's just say a steady rate of 5555 coins per day, and if you had a minimum guaranteed transaction fee of one coin, it perhaps wouldn't be so bad...but that's not really what we have on most coins.

The reality is that transaction fees are far, far lower than 1 coin on most of the major cryptocurrencies. Take Bitcoin as an example -- it's one of the most heavily used coins, and yet looking at the past 20 or so blocks, the biggest block I could find was this one. That has 826 transactions and only 0.21444776 BTC in total fees. If we were depending wholly on transaction fees, all of the power going into the Bitcoin network would only amount to on average something like 0.05 BTC every ten minutes, paid for by those conducting transactions.

Right now, the 25 BTC block reward means there's a bounty of around $20,000 that will go to some lucky miner (or pool) on average every ten minutes. The total network hash rate of Bitcoin has now reached a pretty staggering 19,720,113 GHash/sec. Let's assume for a second that every system participating in Bitcoin hashing is as efficient as the latest and greatest 28nm ASICs. That would mean world-wide, Bitcoin is sucking down around 11,503,400 Watts of power. At a relatively inexpensive $0.10 per kWh, that means in a day Bitcoin consumes $27608.16 worth of power -- not too bad, as the current block reward will pay that in just over 10 minutes. (Realistically, most ASICs are far less efficient so the power cost is probably twice that -- so 30 minutes to pay for all the power use of BTC.)

But what happens in the future, like say in 2030 when the block reward of Bitcoin will probably be at the 0.78125 BTC mark? Most likely we'll be seeing a lot more transactions on the Bitcoin network, so instead of 0.05 in average fees per block, maybe we get to the point where the average transaction fees per block amount to 0.5 BTC (which is probably a bit of a stretch). At that point, we're looking at perhaps 1.25 BTC every ten minutes, and the power use of the BTC network may not actually drop much (and more likely it will increase). What happens then?

1.25 BTC per block right now is still more than enough to cover the cost of power -- in fact, 11.5 MW of power costs something like $200 per block, so at current prices we would only need 0.25 BTC per block for those securing the network to break even. If BTC is worth ten times as much in twenty years (which is either optimistic or horribly pessimistic), an average block reward of 1 BTC with transaction fees will be enough to power a while lot of hashing, so the network stays secure and BTC can continue to succeed. It was designed with this sort of scenario in mind, which is why things should continue to function well. But that's for Bitcoin; what about other cryptocurrencies? Time to pick on DOGE for a minute.

The total number of blocks before the block reward drops to 10K + transaction fees is around 756,250 blocks -- or in just 525 days from the time DOGE first started. Looking at the past day of blocks, here's one of the largest; with a total of 617 transactions, there were just over 575 DOGE paid in transaction fees. Right now the total network hash rate of DOGE is around 86 GHash, but it's happening almost entirely with GPUs. Assuming everyone is using the most efficient GPU possible, so an R9 290X hashing at 900KHash and drawing 350W, that means the DOGE network is drawing about 34,000,000W (and in reality it might be 50-100% more than that due to less efficient GPUs). With an average of 500,000 DOGE produced every minute, that's 720 million DOGE per day, with a value of roughly $1,000,000. Meanwhile, the power cost for the DOGE network is around $81,600 per day, so clearly DOGE is more than paying for the power use. But what happens when the block reward drops to 10K + transaction fees?

With the largest block of the past few hours generating 575 DOGE, it's probably a safe bet that best-case we're looking at 1000 DOGE or less per block in transaction fees. That means 15,840,000 DOGE per day, so to break even on power costs of $81,600 per day DOGE will need to be worth at least $0.0052 per DOGE, or in BTC terms it would need to trade at around 0.0000064 BTC per DOGE. That's only about four times as much as the current value of DOGE, so we can certainly hit that level, but again that's just to break even. If other coins are generating a substantial profit, why would people stick with DOGE just to break even on their power costs? I'd say bare minimum it would need to consistently generate twice as much revenue for those mining (securing the network) as it costs in power, and perhaps 2-3 times the return would be better. Will we see DOGE trading at 0.0000192 BTC/DOGE? Possibly, but more likely a new meme will supplant DOGE before then.

Put another way: if you believe DOGE will manage to maintain current hash rates for the next two years, you'd be a fool to sell any of your DOGE at the current prices. All the "DOGE millionaires" (currently around $1300 worth of DOGE) would be looking at the equivalent of $10,000 or more if that happens. A nearly 10-fold return on your investment in under two years is "pie in the sky" sort of thinking in terms of investments, but yet cryptocurrencies are all beating that mark -- often by a large margin.

As usual, this is a bit long, but when you start thinking in terms like this it should help you to start seeing why coins that pay out most/all of their block rewards in a short amount of time are a bad idea. They start out looking pretty interesting and might garner some headlines and make waves, but a couple years from now I expect Litecoin will still be chugging along -- the little engine that could -- while most/all of the meme coins are going to end up fading away. And really, it's better that way in my book, as if I'm talking to friends or investors and trying to get them to understand that cryptocurrencies can succeed, the "success" of a joke coin like DOGE doesn't help at all.

Now if you'll pardon me, I'm going to go create the All Your Base Are Belong To Us (AYBABTU) coin. Does that sound old and stupid to you? Well, that's what today's memes will be in another decade. All memes die, and the meme currencies will die with them.

Getting back to the main topic, what I'm saying is that you need to build a cryptocurrency that will pay out block rewards long enough to reach the point where the transaction fees can actually sustain the network. Or you can be like DOGE and go with a deflationary approach and always have 10K DOGE per block minimums, forever. But that's what got us into the mess we're in with fiat right now, isn't it? As far as a long-term payout, there are plenty of ways to do that -- Bitcoin, Litecoin, and Vertcoin cut the block reward in half every 4 years or so while other coins might drop linearly over time. Coins that pay out too quickly on the other hand (DOGE, QRK, FZ, etc.) are very likely to reach the point where there's no profit in mining/securing the network. If that happens, the coin(s) will die. You've been warned -- don't get caught holding the bag for a poorly designed cryptocurrency.

EDIT: Note that I missed the fact that DOGE has a 10K minimum reward, apparently forever. I don't really like that as a solution either, if you can't tell. I've updated the text to reflect this with new calculations. Thanks to several readers for pointing out my errors!

Wednesday, February 5, 2014

What to Do with Your CPU? Join the Dark Side!

I posted back in December about the fun of playing with some of the alternate cryptocurrencies, and since then things have gone a bit crazy. Hashco.ws, Middlecoin, and the other multi-coin pools do a reasonable job at adopting any of the coins that look like they have some staying power. For example, LEAF got picked up by Hashco.ws, but if you were into LEAF a day or two before HC arrived, you could have made out with a whole lot of LEAF -- or BTC after trade. Early on, LEAF was earning about 0.05 BTC per MHash, so 10 MHash would have pulled in 0.5 BTC in a single day -- and if you waited to trade a few days, instead of 0.5 BTC you could have more than doubled that amount!

Anyway, I don't want to get too sidetracked. One of the big searches I've had is for an alternative to all the scrypt cryptocurrencies -- because once ASICs really start to come online, they all will see ramping difficulties in short order. It's what I like about Vertcoin (and potentially Microcoin, though I don't like the MRC block reward rate much), but those are still GPU-mined coins. I have a bunch of PCs with CPUs sitting mostly idle, or at least I did back in December, and since Quark was a dead end I was looking for something similar.

Frozen was my short-term solution, and I made about 5 BTC in trades during December and January by mining FZ. Yeah, think about that for a moment: 5 BTC in less than two months, without buying any additional hardware. Right now however FZ is stagnating, and with good reason: it's on the downward spiral into being mined out, and the glory days of 50 FZ blocks every 30 seconds have become 9.8 FZ rewards -- and at the same time, the network hash rate for FZ has jumped from 500 KHash to a high of around 5000 KHash before dropping back to 1500 KHash.

Today, you can still make money on Frozen, but it's not that much -- a Core i7 can run at perhaps 800 KHash/sec on the Quark algorithm, yielding around 18 FZ per day (and dropping). The exchange rate is 0.00013 BTC per FZ, give or take, so that's around 0.0023 BTC per day, or $1.87, with a power draw of around 90W for the CPU, so $0.20-$0.40 in power costs means it's a net gain. But what about other coins that use Quark, or maybe even something better?

Well, Fairquark is currently out of the running, as 800KHash would net you 32 FRQ per day, but they're only worth 0.0000004 BTC at present, so unless the value rises about 20X, FZ is a better option for CPU mining. Dimecoin is pretty much a waste as well, with a heavy premine combined with a huge bonus on the first 1024 blocks. But there's another option, which I think has far more potential than any of the Quark-derived coins. Enter Darkcoin, aka DRK.

Formerly called Xcoin, Darkcoin has as a goal the idea of truly anonymous transactions. That's fine and all, but more interesting is that DRK uses a new Proof of Work algorithm: X11. Similar to Quark's six rounds of hashing based on nine different algorithms, X11 instead goes with eleven different hashing functions. That means there are currently zero GPU miners available (unlike the rather iffy smelter.exe you can use with the quark algorithm), though I suppose if DRK continues to trend up someone is bound to create a GPU miner.

Right now, a single Core i7 CPU will hash at around 250KHash on X11, which will net you about 112 DRK per day (and dropping with the rising difficulty). The exchange rate meanwhile is doing okay right now, but it could trend up fast in the near future. If you sell at the current 0.00003 BTC per DRK, you're still going to make more than any other CPU-mining coin I can find, about 40% more than Frozen. $2.70 per day for a Core i7 desktop means $2.50 per day of profit after power costs, and $75 per month extra. That pales in comparison to some of the other cryptocurrencies, but at the same time, if you have the CPUs, why not use them?

There's only one (potentially major) problem with coins that can be effectively mined with CPUs: the dreaded botnet. Unfortunately, it's a real problem and something no one has really managed to address. Imagine this: instead of a virus that creates popups on your PC when you're infected, what if you were to install and run a CPU miner? Not only are you not paying for power, but all transactions go onto a mostly anonymous network. I think this is much of what keeps Quark alive these days, and probably most of the other coins where CPU mining still makes some sense. The real solution is for people to stop downloading and running malicious software, but that's not going to happen I suppose.

In the meantime, you can be like me and come join the DRK side! :-)

DRK: Xd3EaCJg6G8ZnGuKkpvwyRMwyHzbaRDnob
BTC:  153qS9Ze32hnV3fwirZLWNka4wBAowc21E
LTC:  LfCLyykrNFftzpdWejR73hf478ZtBzQ9jE
VTC:  VaNuRCj73JVAwR1YMnt8CXaqoiPgykiMTk
DOGE: DD9iTWf8diPkvKdB8roPJepTyp6BGVQtct

Tuesday, February 4, 2014

Vertcoin: Potentially More Valuable than BTC or LTC?

It seems every new cryptocurrency that someone creates these days ends up with people taking sides. It's either a "scam coin / pump and dump" or it's the greatest thing since sliced bread. Now, there are a few ways to make a coin very undesirable -- premining a large chunk of coins before releasing a cryptocurrency to the mining community would be one, and I'd also steer clear (long-term at least) of any coin that distributes a large percentage of the total coins in a short amount of time. Looking at Vertcoin, this is what makes it worth potentially more than even Litecoin -- and long-term it could even surpass Bitcoin (assuming it remains ASIC-proof).

1) It's more resistant to ASICs
2) It has KGW so it's resistant to pools and/or large fluctuations in the number of miners
3) There was no premine or other silliness on the launch
4) It pays out slow and steady over a very long period of time.

Why shouldn't Vertcoin succeed where so many others have failed (other than the name and logo)? At present we are not even at block 30K, which means there are fewer than 1,500,000 VTC in existence. Sure, the first week or two things went a bit too fast, but now we've leveled off and for the foreseeable future we'll generate blocks every 2.5 minutes. We are 810,000 blocks away from the reward halving, and KGW means we really won't hit the halving much earlier than expected. That means 33,750 hours -- or 1406.25 days, or 3.85 years -- from now, we will have mined half of all VTC. By mining slow and steady (as opposed to, say, DOGE, which will be mined out in about 525 days since launch), we avoid the potential for a massive pump and dump.

As to the lack of a premine, even BTC had one -- Satoshi mined it with a small group of friends for about a year before it really hit the public. Wouldn't it have been nice to be one of select few (some say around 20) people mining BTC that first year? 2.6 million BTC went out to a choice few; so much for the "currency of the people" -- and no significant giveaways ever happened, at least not to a point where anywhere near 2 million BTC was distributed among the masses. BTC was also a proof of concept, and the long difficulty adjustment times were at least in part a way for early miners to get even more coins... but probably two weeks just sounded "reasonable" at the time. We now know better. The new standard is KGW, and any new coin that doesn't implement KGW (or have some other way of dealing with potential coin hopping) isn't going to last.

Getting back to Vertcoin, the current network hash rate is around 2.7 GHash/sec, but since VTC is roughly twice as hard to mine (on a GPU) as normal scrypt, that's like a 5.4 GHash/sec coin. Compared to other coins, LTC is at around 100 GHash/sec and DOGE is at 78.5 GHash/sec; most other scrypt coins are in single digit GHash at best, which means VTC has already passed many of them. And that's hardly a surprise, as we've gone vertical in the last day.

We're now seeing VTC trade at 0.008 BTC, or already about one third the price of LTC. Some will call this a bubble, and perhaps it is, but I like to think this is VTC assuming it's rightful place as the number three cryptocurrency in the very near future. When the scrypt ASICs begin to arrive en masse, we'll see even more people start to look at VTC -- as well as any other non-scrypt coins. I'm sure we'll see VTC clones as well, but I'm not sure what they can offer that will be "better" than VTC. Faster transaction times? Maybe. More coins in less time? See points #3 and #4 above. They'll be a flash in the pan at best, but VTC is here to stay.

VTC:  VaNuRCj73JVAwR1YMnt8CXaqoiPgykiMTk
BTC:  153qS9Ze32hnV3fwirZLWNka4wBAowc21E
LTC:  LfCLyykrNFftzpdWejR73hf478ZtBzQ9jE
DOGE: DD9iTWf8diPkvKdB8roPJepTyp6BGVQtct

Vertcoin Settings, Optimal Thread Concurrency, and HW Errors

Not surprisingly, given the current prices [which I predicted about ten days ago!] people are starting to pull their hair out when trying to tune their configuration files to work with Vertcoin (VTC). In fact, I have been one of those people, so naturally I decided it would be best to adapt my previous work to get things running with the new version of cgminer.exe. This round, I have two different versions of the batch file to run, one for Radeon R9 290 and R9 290X, and one for earlier GPUs.

You can download my test scripts from Dropbox.

The key items to change before running are all in the two following files. Note that I'm using the custom version of cgminer found here, as opposed to the slightly different version of cgminer named vertminer found here. I don't know if there's really much of a difference, but I started tuning on the first version (linked from Vertcoin.com) before hearing about Vertminer (linked from Vertcoin.org -- go figure). It sounds like some people are getting fewer HW errors with Vertminer, but at least initially I lost about 50 KHash on my 3x7950 rig so I'm staying with the first miner for now. Anyway, the main files to look at are:
thread-concurrency-test.bat
thread-concurrency-test-r9version.bat
As you can hopefully guess, the r9version is for R9 290/290X (it's not necessary on R9 270/280X as those are basically just rebranded 7000-series hardware); technically this version should work for any GPU, but I've found it can be a bit... flaky. Basically every few restarts of cgminer.exe, one or more GPUs will stop working properly and you'll need to reboot the PC. So hopefully we can get a fixed EXE for R9 systems sooner rather than later (and if you have such an EXE, please email me).

Here's the short list of settings to change, and below I'll have some recommendations based on running these scripts on my own hardware. All of the settings below are for both versions, except "roundtime" which comes from the non-R9 version, and "shares" which comes from the non-R9 batch file:
Starting thread concurrency. Note that if file "CURRENTTC.TXT" exists, that will override this value!
set threadconcurrency=6000

GPU engine and core clock(s). If you want to set different clocks, use commas with quotation marks around the set (e.g. gpuclock="1000,975,950" for three GPUs)
set gpuclock=900
set memclock=1450


GPU fan speed range (can use multiple sets with quotes as above if needed)
set gpufan=50-95

GPU voltage tends to only work on older GPUs (5000 and 6000 series, and some 7000)
set gpuvolt=1.071

PowerTune setting can specify for multiple GPUs with quotes; only supported on 6000 and newer GPUs.
set gpupowertune=10

Intensity setting for mining
set intensity=18

Number of GPU threads
set gputhreads=1

Number of shares to mine on each TC setting before moving on. If you have a high share difficulty, lower values may be useful.
set shares=60

How much to increment thread concurrency each round -- for Vertcoin mining, I've found steps of as small as 1 to be potentially useful!
set threadincrement=4

Number of seconds to mine on each round.
set roundtime=300

Number of GPUs being used -- the output includes performance from each GPU on a separate line, hence the need for this setting.
set numgpus=3
The instructions for using the batch files are pretty simple: extract the above files into your cgminer-vertcoin folder, then edit the appropriate batch file and change the above settings as appropriate. In general, that means you should tweaks the GPU clocks, the starting thread concurrency, and potentially the intensity and gputhreads settings. The number of shares and/or roundtime can be adjusted; I'd generally recommend increasing these values rather than going any lower, as the more time you spend hashing at each TC the better the overall estimate will be.

There are just a few disclaimers before I wrap up. First, I take no responsibility if any of these files mess up your PC or kill your GPU. They should be safe, but you never know. Second, the R9 version seems to be a bit less stable, and it seems to cause the GPU drivers to crash, especially in multi-GPU systems. You might have better luck than I did, of course. Finally, every system is different, so what works really well on one PC may not work well at all on another -- and I've found in general that it's very difficult to find a setting where you get optimal hash rates without getting any HW errors; mostly, I just try to keep HW errors below 1%.

Donations as always are (very!) welcome. I'd appreciate just an hour or so of your mining time if you don't mine, or you can donate to any of the following addresses:

VTC:  VaNuRCj73JVAwR1YMnt8CXaqoiPgykiMTk
BTC:  153qS9Ze32hnV3fwirZLWNka4wBAowc21E
LTC:  LfCLyykrNFftzpdWejR73hf478ZtBzQ9jE
DOGE: DD9iTWf8diPkvKdB8roPJepTyp6BGVQtct

Here are settings that I have found to be stable with the noted hash rates. I'm still trying to nail down optimal settings on many of the systems, as well as finding something that works well for R9 290/290X. I'll update my list as appropriate.

Radeon HD 7970 (R9 280X) (using vertminer.exe):
GPU clock: 1050-1140
RAM clock: 1500-1800
Thread Concurrency: 8192
GPU Threads: 1
Intensity: 13
Hash Rate: 290-320 KHash/sec

Radeon HD 7950:
GPU clock: 950-1000
RAM clock: 1425-1500
Thread Concurrency: 16040
GPU Threads: 1
Intensity: 19
Hash Rate: 270-290 KHash/sec

Radeon HD 6970:
GPU clock: 925
RAM clock: 1400
Thread Concurrency: 8000
GPU Threads: 1
Intensity: 18
Hash Rate: 230-250 KHash/sec

Radeon HD 6950:
GPU clock: 875
RAM clock: 1250
Thread Concurrency: 6000
GPU Threads: 1
Intensity: 18
Hash Rate: 210-230 KHash/sec

Radeon HD 5870:
GPU clock: 925
RAM clock: 1150
Thread Concurrency: 5688
GPU Threads: 1
Intensity: 18
Hash Rate: 200-220 KHash/sec

Radeon HD 5850:
GPU clock: 850-900
RAM clock: 1050-1100
Thread Concurrency: 5120
GPU Threads: 1
Intensity: 18
Hash Rate: 170-190 KHash/sec

Again, donations are very much appreciated. And if you have some other coin you'd prefer to send, let me know!

VTC:  VaNuRCj73JVAwR1YMnt8CXaqoiPgykiMTk
BTC:  153qS9Ze32hnV3fwirZLWNka4wBAowc21E
LTC:  LfCLyykrNFftzpdWejR73hf478ZtBzQ9jE
DOGE: DD9iTWf8diPkvKdB8roPJepTyp6BGVQtct