Why I Didn’t Get the Graphics Card I Wanted

Several graphics cards connected to a motherboard

A few weeks ago, I bought a new PC with a pretty decent graphics card, the EVGA GTX 1070. I bought that card because I recently tried virtual reality, and I wanted to have a card that could handle VR. I have no immediate plans to buy a VR system, but I like the having the option to moving in that direction if I want.

It was actually quite a struggle to get a good graphics card—the one I really wanted was on back order for over a month before I gave in and went with the EVGA card. That sort of problem is rare in Canada, being unable to get a mass-produced piece of electronics that was released well over a year ago. But I think one of the main causes for the delay was the rise of cryptocurrency mining.

Huh? What’s that?

Bitcoin and Ethereum are the two most widely-known cryptocurrencies. Bitcoin started the cryptocurrency craze in 2009 by becoming the first decentralized digital currency built on top of Satoshi Nakamoto’s innovation of distributed ledgers.

In most financial computer networks—like Visa payments, Interact Payments, or even cheque clearing—transactions are reconciled through a central repository. When a purchase is made through Visa, the merchant scans the card, the transaction is sent through Visa’s network to the issuer to see if the transaction should be approved, and the issuer sends a response back to the merchant.

In such a scenario, the issuer’s database is the central repository. Every transaction goes through that repository. It ensures the buyer has sufficient funds to make the purchase, and hasn’t already spent all their cash on a transaction that happened five minutes ago.

In a distributed ledger, in contrast, there is no central repository. Instead, the data is shared across hundreds of computers that all need to agree about the state of the transactions in the system. What’s more, you need to be able to get the machines to agree on the state of the system even if a minority of the machines are actively trying to cheat the system.

How would one cheat?

Take a simple case where I’m buying a car using a (poorly implemented) distributed ledger. I pay my $40K using a transaction that gets posted to the distributed ledger, and I drive away in my car. But there’s a problem.

The ledger is distributed, so any computer can update the ledger. So, suppose behind the scenes, I have my own computer update the distributed ledger telling the other computers keeping track of the ledger that the $40K transaction never happened.

Essentially, I’m having my malicious computer lie in order remove the record of my the payment. Then I get to keep my money, and get a free car. Woo hoo!

Satoshi’s innovation eliminates this problem by introducing the idea that whatever the majority of the computers on the system thinks is the real state of the system is the real state of the system. When I buy my car, the transaction shouldn’t be considered “finalized”, until a significant number of computers (hundreds) all agree that the transaction has happened. Then, if I try to use some malevolent computers to say my $40K purchase transaction didn’t happen, the network will say, “Um, no. The transaction did happen—the majority of the network saw it, so stop screwing around.”

Thus, the whole distributed ledger network is constantly sharing what they see as the real state of the system with the majority of machines deciding which transactions are real, and which ones aren’t. The network ensures that the agreed upon ledger is consistent, so nobody can spend the same bitcoin twice.

Making the idea actually work

This is a nice idea, but it only actually works if you have a bunch of machines around the world that are constantly trying to synchronize the state of the network. It would be very easy to corrupt the network if there were only 10 machines keeping everything in synch. So, cryptocurrencies often have the concept of miners.

Miners keep the ledger synchronized, but also generate new coins by doing what’s know as a proof-of-work. For cryptocurrencies, the proof-of-work is typically a mathematical problem for which it is very difficult to find an answer, but very easy to verify whether a given answer is correct. Miners look for the solution to the math problem. When they find a solution, they broadcast the answer to the network—keeping the distributed ledger updated at the same time—and in return are rewarded with some newly-created cryptocurrency.

Thus, the miners are the glue that holds the distributed ledger system together, synchronizing the ledger and ensuring a malevolent entity can’t corrupt the system unless they control thousands of computers.

Back to my own woes

I was blaming my inability to get a particular graphics card on cryptocurrency mining, and that’s because the mathematical problem that miners must solve can be run much more efficiently on graphics cards than CPUs—easily ten times faster or more. So, cryptocurrency miners are buying up graphics cards so they can mine cryptocurrencies efficiently.

I think the card that I wanted is in particularly high demand because it’s reputed to use relatively low amounts of electricity and remain relatively cool. In mining, electricity costs money, and heat is bad for computers, causing errors and even melting chips.

Getting something back

Though it has cost me my card, I’m not bitter about the cryptocurrency boom, because the card I have is quite decent still. It has great performance, is quiet, and still remains cool.

And, it can be used to mine cryptocurrencies.

So I’ve been doing that, mining Zcash which I’ve been converting into Ethereum. Counting the cost of electricity, I’ve been making about $1.35 per day… enough to pay for my graphics card in about a year.

One thought on “Why I Didn’t Get the Graphics Card I Wanted

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s