Mining Bitcoins with Pencil and Paper

Right now there are thousands of computers connected to the Internet, dutifully calculating SHA-256 hashes and sending their results to other peers on the Bitcoin network. There’s a tremendous amount of computing power in this network, but [Ken] is doing it with a pencil and paper. Doing the math by hand isn’t exactly hard, but it does take an extraordinary amount of time; [Ken] can calculate about two-thirds of a hash per day.

The SHA-256 hash function used for Bitcoin isn’t really that hard to work out by hand. The problem, though, is that it takes a 64 byte value, sends it through an algorithm, and repeats that sixty-four times. There are a few 32-bit additions, but the rest of the work is just choosing the majority value in a set of three bits, rotating bits, and performing a mod 2.

Completing one round of a SHA-256 hash took [Ken] sixteen minutes and forty-five seconds. There are sixty-four steps in calculating the hash, this means a single hash would take about 18 hours to complete. Since Bitcoin uses a double SHA-256 algorithm, doing the calculations on a complete bitcoin block and submitting them to the network manually would take the better part of two days. If you’re only doing this as your daily 9-5, this is an entire weeks worth of work.

Just for fun, [Ken] tried to figure out how energy-efficient the bitcoin mining rig stored in his skull is. He can’t live on electricity, but donuts are a cheap source of calories, at about $0.23 per 200 kcalories. Assuming a metabolic rate of 1500 kcal/day, this means his energy cost is about 67 quadrillion times that of an ASIC miner.

Video below.

Continue reading “Mining Bitcoins with Pencil and Paper”

Hackaday Links: July 20, 2014


Etch-a-Sketch spray-painted silver with electronics bolted onto the side? Sign us up! This art installation adds one thing that we don’t often see in these types of hacks, eerie audio.

If you’re still mining bitcoin you need to do it faster than anyone else… that’s pretty much how the whole thing works. [Lewin] has been using the Antminer USB ASIC and toyed around with overclocking to 2.2 GH/s (gighashes per second) but to make sure his hardware holds up to the overwork he hacked his own water cooling system for the dongle.

Smart phones are the best bang for your buck on portability and power. Better yet you can get slightly broken ones for a song. If you manage to find an Android device with a broken touch screen but functioning LCD try this trick to add a mouse to it. There must be another life for this in a future hack!

We have a love-hate relationship with this particular crowd-funding campaign. First this hate: It’s basically a 100% clip-art video presentation with an $800,000 ask. Yeah… good luck buddy. On the other hand, this is the type of stuff we actually want to see as crowd funding. The idea is to use modern materials and techniques to build [Nikola Tesla’s] Wardenclyffe Tower, which was designed and built to research wireless energy (both as a means of communication and actual energy transfer). It was never fully functional and ended up being demolished. Wouldn’t it be great if teams of highly skilled and motivated people took grand ideas like this, crossing every theoretical “t” and dotting every theoretical “i”, and then proposed a crowd funding campaign to build a test platform? Oh wait, that sounds very much like a government research grant. Anywhoo… check out the Global Energy Transmission’s campaign.

Never Miss a Thing With This Programmable Vacuum Fluorescent Display Ticker

VFD Ticker

[Coyt] wanted a more convenient way to keep up to date with the ever-changing Bitcoin exchange rates, as well as weather and other useful information. He realized that the vacuum fluorescent display (VFD) he had purchased a couple of years ago would be perfect to display small amounts of information.

[Coyt] discovered that the VFD had a serial interface. The problem was that the VFD was looking for a 12V serial signal but the Raspberry Pi he wanted to use runs at a 3.3V. Upon closer inspection [Coyt] discovered that the VFD actually ran at lower levels as well, but it had a level converter chip installed in front of the main connector. He simply bypassed the level converter and was then able to get the RasPi speaking directly to the VFD.

The brain running this display is a Raspberry Pi. The Pi runs a Python script that pulls down all of the relevant information from the internet and displays it on the VFD. [Coyt] didn’t stop there, though. He knew that having the screen on all of the time would be somewhat of a waste, so he hooked up a PIR sensor to automatically turn on the display only when needed. The PIR sensor can detect motion in the room and will disable the display after a set period of inactivity. Most of this is powered by an LM7805 voltage regulator. While [Coyt] admits a linear regulator is not his ideal solution, it does get the job done. The metal stand acts as a nice heat sink for the regulator.

[Coyt] also wanted his project to have a certain aesthetic. He started by bending a metal plate into a stand for the electronics. He then mounted the VFD on the front of the stand and the RasPi on the back. He also mounted green LEDs between the two plates to light up the edges for a little extra pizzazz. [Coyt] believes he can use the RasPi to PWM the LEDs but this has not yet been implemented. This would allow him to pulse the light for added effect.

Since the whole thing is run by a Python script, it would be trivial to modify it to display other kinds of information. What would you do if you had a motion sensitive automatic ticker?


Sniffing Vending Machine Buses

Sniffing the Multidrop Bus


We’ve talked about a variety of protocols and how to deal with them in the past. Today, [Dan] is working on sniffing vending machine Multidrop Bus. The Multidrop Bus (MDB) protocol is a standard used in vending machines to connect devices such as currency collectors to the host controller.

To connect to the bus, interface hardware is required. [Dan] worked out compliant hardware and connected it to an Arduino. With the device on the bus, [Dan] got to work on an Arduino sketch to parse the MDB data into a human-readable format. With that working, the bus can easily be sniffed over the Arduino’s serial console.

This is just the start of a more involved project. Since this protocol is used to communicate with a vending machine’s currency collector or card reader, being able to communicate it would allow him to implement his own payment methods. The plan is to augment the vending machine he operates at Vancouver Hack Space to accept Bitcoin. We’re looking forward to seeing that project unfold.

Using Bitcoin To Detect Malware


Now that you can actually buy things with bitcoins, it’s become a playground for modern malware authors. [Eric] recently lost about 5 BTC because of some malware he installed and decided to do something about it. He came up with BitcoinVigil, a web service that constantly looks at bitcoin honeypots and alerts you when bitcoins are surreptitiously removed.

The idea behind BitcoinVigil is to set up a Bitcoin wallet with a small amount of coins in it – only about $10 USD worth. When modern, Bitcoin-seeking malware is run on a computer, it looks for this ‘moneypot’ and sends an email out notifying the owner of the coins to stolen money.

[Eric] was at a LAN party a few weeks ago and ‘borrowed’ a friend’s copy of Starcraft 1. Just a few seconds after installing it, he received an alert notifying him about a few stolen bitcoins. This time [Eric] only lost a few microBTC, but better than the thousands of USD he lost before.

Open Bitcoin ATM


If there’s one thing Bitcoins can benefit from, it’s easier accessibility for first-time users. The process can be a bit daunting if you’re new to cryptocurrency, but [mayosmith] is developing an open Bitcoin ATM to help get coins in the hands of the masses. There are already some Bitcoin dispensers out there. The Lamassu is around 5k a pop, and then there’s always the option of low-tech Condom Vending Machine conversions.

[mayosmith’s] build is still in the proof-of-concept phase, but has some powerful functionality underway. The box is made from acrylic with a front plate of 12″x12″ aluminum sheet metal, held on by 2 aluminum angles and some bolts. Slots were carved out of the aluminum sheet for the thermal printer and for bill acceptor—the comments identify it as an Apex 7000. Inside is an Arduino with an SD Shield attached. Dollars inserted into the acceptor trigger the Arduino to spit out a previously-generated QR code for some coins via the thermal printer, though all values are pre-determined at the time of creation and stored sequentially on the SD card. Stick around for a quick video below, and check out the official page for more information:

Continue reading “Open Bitcoin ATM”

Manual Bitcoin Transactions


For something that’s used for such banal transactions like buying drugs and sending the Jamaican bobsled team to the Olympics, cryptocurrencies such as Bitcoin are actually very impressive pieces of software. It’s a very ingenious solution to the Two Generals Problem, and the fact it made a few Bitcoin early adopters very, very rich doesn’t hurt either. [Ken Shirriff] decided to take a look at the Bitcoin protocol by creating a Bitcoin address and transferring a small amount of bitcoin to that address, manually. It’s a great look at how the Bitcoin protocol actually works, and how ingenious this protocol actually is.

[Ken]’s first task was to create a Bitcoin address. This is a 256-bit private key is the basis for the Bitcoin wallet private key (after being encoded as ASCII characters), and as the 512-bit public key (after being sent through an elliptic curve algorithm). The 512-bit public key is then hashed with SHA-256 and RIPEM 160 to generate the 160-bit public key hash and the Bitcoin address.

After creating a bitcoin address and wallet, [Ken] set out on manually creating a transaction. The idea was to buy a few cents (USD) from Coinbase and send them to his manually created address. This involved creating a transaction according to the Bitcoin spec and signing the transaction. Signing each Bitcoin transaction is the key to Bitcoin’s security, and is done with a small bit of code written in the Bitcoin scripting language.

With everything written in Python, [Ken] was ready to send his transaction off into the Bitcoin network. This was done by finding a few peers on the Bitcoin network and sending off a few packets. After a little bit of mining on the network, [Ken]’s transaction went through, confirmed by a deposit into his Bitcoin wallet.

It’s an awesome writeup and impressive achievement to manually send a few Bitcoins from one wallet to another. More impressively, [Ken] provided some amazing insight into how the Bitcoin protocol works, and how much work went into its creation.