Bitcoin Plays Pokémon

Bitcoin Plays Pokémon

As a side project I recently launched ‘Bitcoin Plays…’, a Twitch stream that allows people to collaboratively play retro games, while at the same time donating to charity. As the name tends to suggest, it uses Bitcoin as its medium of payment.

If you wish to get stuck it or just try it out, the Twitch stream link is:

https://www.twitch.tv/bitcoinplays/

For those who want to check where their donations are going to, take a look at this Google spreadsheet:

https://docs.google.com/spreadsheets/d/1v39E57VoOI5u6FbEGqGHWcxT1zhqyb3ye7QcvioYH3o/edit?usp=sharing

Inspiration

I’ve been interested in Bitcoin since I heard of it several years back. Since then, I’ve been curious about some of its possibilities that are more troublesome with traditional payment methods.

Fast micro-payments is one of the features that you really can’t do well with traditional currency transfer methods. Bitcoin Plays Pokémon takes full advantage of this by performs moves near instantly for every Bitcoin payment received.

The idea of automating devices via crypto-currencies also fascinates me. A good example of this kind of idea is the Bucket Splash experiment at http://www.ucontrol.tv/buckets/. By donating to charity addresses shown on the site, you get to trigger water to be tipped from various buckets. You see the result within seconds via a webcam stream.

The Bucket Splash experiment and other Bitcoin powered automation systems, such as the Bitcoin fluid dispenser were strong inspirations for the project.

Software

This project three main pieces of software. These perform the tasks of emulating the game, streaming it to Twitch and controlled the game.

  • Visual Boy Advanced (VBA) – The VBA emulator is used to run the game ROM and is configured to accept input via specially defined keyboard inputs.
  • Open Broadcasting Software Studio – In order to stream to Twitch.tv, the project makes use of OBS Studio. This renders the video content, encoding it and streaming it to Twitch’s servers. At time of writing this, OBS Studio is well known as the best game streaming solution for Linux desktop systems.
  • Bitcoin Plays – The receiving of Bitcoin payments and control of the game is handled via a bespoke piece of software I’ve coded for the task. It makes use of the bitcoinj Java library (used by the Android Bitcoin Wallet, Multibit and others).

The Bitcoin Plays software sets up a new wallet that watches Bitcoin addresses associated with each GameBoy colour control (A, B, Start, Select, Up, Down, Left and Right). Upon receiving a payment, the software immediately makes a virtual key press for that control, causing the emulator to react as if a player was physically playing the game on the keyboard.

Previous iterations of the software were not real time. I initially experimented with a system I’ve now dubbed ‘timed democracy’, which is actually an option still available (but disabled) in the software.

Timed democracy mode would display a countdown of X seconds. This was configurable and I experimented with values between 10 and 30 seconds. During this time period, players could send payments to the various address and the total received in this time period would be displayed next to the name of the control. When the timer hit zero, the control with the most value received in this time period would ‘win’ and be carried out in game.

It turned out this most was not particularly fun. The idea of a move only occurring every 10-30 seconds was not only rather dull, but also impractical if I ever wanted to see players get siginificantly far gameplay wise.

Very early versions of the software didn’t make use of the bitcoinj library. They instead used thread party APIs. I’d experimented with using Electrum’s CLI and several online Blockchain explorer APIs.

The implementation of these required frequent polling of all the controls’ addresses. Not only did this involve additional communications and the complications of parsing the response into appropriate formats, but it also proved to unreliable. Electrum’s servers would occasionally refuse connection, possibly due to too frequent polling requests and the frequent starting of the Electrum CLI process produced quite high load. Third-party API would sometimes not respond, or serve data that was cached by several minutes. None of this was really appropriate for a system that needed to react in seconds.

To get around all these issues, a bespoke watch-only wallet was created using bitcoinj and integrated directed into Bitcoin Plays. This directly connected to the Bitcoin network like any other wallet software, download a thin SPV version of the Bitcoin Blockchain and proceeded to monitor the controls’ address for incoming payments. The relevant control could then be pressed.

This proved to be a much better solution overall. It is much more reliable than using a third-party to handle the Bitcoin network communication and address balance monitoring. For anyone developing any form of automation using Bitcoin (or any crypto-currency for that matter), I would strongly consider whether you need a third-party integration. In cases where reliable immediate reaction to micropayment transactions is required, a direct connection to the Bitcoin network was certainly a must for this project.

Hardware

Currently the Bitcoins Plays software, including the custom wallet application, the emulator and the streaming software all run on a reasonable low specification laptop. It connects via my home gigabyte network to a high speed fibre optic Internet connection, which is used for streaming to Twitch and also for Bitcoin network connectivity.

Charity

All donations are, after a time, sent to charity. There are two main reasons why funds are collected, and not directly sent to charity Bitcoin addresses.

  1. Charities don’t want to deal with microtransactions. Some of the tiny transactions sent by players can actually cause rather large transactions fees when grouping all the outputs together. I felt it best to keep this potential problem away from the charities, and instead wait until a reasonable amount is received before doing single larger payments.
  2. Without special arrangements, it would be difficult to tell if a donation to a charity bitcoin address was just a donations or whether it was specifically aimed at Bitcoin Plays. Without each charity providing a unique bitcoin address solely for the purposes of Bitcoin Plays, this could make controls fire in a seemingly random manner and make collective gameplay almost impossible.

I decided for the purposes of transparency to log details of every charitable donation made from Bitcoin Plays addresses. These details are stored in a Google spreadsheet available at the following URL.

https://docs.google.com/spreadsheets/d/1v39E57VoOI5u6FbEGqGHWcxT1zhqyb3ye7QcvioYH3o/edit?usp=sharing

If you’re got any questions, please contact me via this website or better still, send me a message on Twitter (@DivineOmega).

The inventor of Bitcoin does not matter

Who is Satoshi Nakamoto?

Newsweek recently released an article claiming to have identified the inventor of Bitcoin (known by the alias ‘Satoshi Nakamoto’). Via Internet wide debates, media chases and further interviews, it is almost certain that the person Newsweek outed as the inventor of Bitcoin,  is not who they claim.

Dorian Satoshi Nakamoto
Dorian Satoshi Nakamoto was almost certainly reported incorrectly to be the inventor of Bitcoin by Newsweek

Without a doubt, the mystery around Satoshi Nakamoto’s real identity is part of the intrigue and story of Bitcoin itself. Satoshi’s real identity is a curiousity that no doubt someone will always try to find out. The entire cryptocurrency community could say they are thankfully to Satoshi for his developments in this space, but in the same breath, the community can also say his identity does not matter.

Due to its peer to peer nature, Bitcoin and other similar cryptocurrencies can go on and function fully, without Satoshi being involved at all. In fact, ignoring any new features or bug fixes, Bitcoin does not require constant supervision by developers.  It would just keep going, handling payment and transactions without a problem.

This is in stark contrast to the traditional banking and finance systems, which require constant manual supervision, approvals and management.

Some people have suggested economic reasons for Satoshi’s identity remaining concealed. Many people believe Satoshi holds a large stash of bitcoins from the initial blocks that were mined. If these bitcoins were to ever move, or be sold off, it would be conceivable that this would dramatically change the value of Bitcoin, simple due to the huge quantities involved.

Most people believe Satoshi destroyed his private keys and therefore is not about to spend these bitcoins. This has never been proven, and theoretically can not be, without their owner admitting to it in a signed message.

Personally, I do not believe the movement of these bitcoins would have a long term impact on Bitcoin. The core functionality of the Bitcoin protocol would continue to work, and due to its anti-fragile nature it would likely continue to function for the foreseeable future.Without a significant cryptographic weakness or a massive leap in technology, such as quantum computing, Bitcoin and other cryptocurrencies will keep running, with or without the real Satoshi Nakamoto.

Why accept Bitcoins on your website?

Physical Bitcoins

I recently wrote an article about why you should accept Bitcoin on your website, specifically focusing on the benefits of accepting Bitcoin payments within e-commerce business.

This was published on my employer’s website as an informational blog post and is reproduced below for additional exposure.

You might have heard of Bitcoin in the news. It’s had a great deal of worldwide media attention in recent weeks. But what exactly is Bitcoin and how can it help your business and e-commerce website?

Bitcoin is both a new digital currency and a payment system. It is a secure and very inexpensive method to handle payments online or in person.

Bitcoin offers many advantages to businesses thinking about accepting them on their e-commerce website, such as:

  • Very low transaction fees – Bitcoin transactions are processed in a very quick, efficient and decentralised manner. This means you can send and importantly receive payments over the Bitcoin network for little to no fees, a welcome relief for those familiar with the expensive transaction fees involved in accepting credit/debit card payments.

  • Fraud and chargeback protection – Many businesses have had to deal with fraudsters performing chargebacks on their credit card or PayPal transactions just after their product has been dispatched, causing loss of money and increased man hours required to deal with this kind of chargeback fraud. Payments made with Bitcoin are mathematically irreversible – chargebacks are impossible, which means merchants accepting Bitcoin payments do not have to deal with chargeback fraud at all.

  • Accept payment from anywhere – Banks typically do not do business with some countries, and some countries do not have a typical banking infrastructure. If you’re accepting only credit/debit card payments, you’re limiting your audience. Bitcoin transactions can be made internationally, with the same speed and low fees as domestic transactions. Bitcoin makes no distinction.

  • PCI compliance is unnecessary – Accepting card payments directly on an e-commerce website comes with a whole lot of costly work involved in ensuring and monitoring PCI compliance so your payments are secure and you are allowed to continue accepting such payments. Payments made over the Bitcoin network are secure by their nature and your e-commerce website does not need to deal directly with people’s personal payment details, therefore the burden of compliance is truly not required.

  • Marketing opportunities – Merchants accepting Bitcoin collectively could be considered a type of emerging market. Relative to traditional payment methods, there are not many merchants accepting Bitcoin yet. This means accepting Bitcoins on your e-commerce website can be a great marketing opportunity, and promoting your acceptance can result in a boost to website traffic and conversions.

Bitcoin tax treatment in the UK

HMRC Logo

Only yesterday, articles were posted all over the web about how Britain is beginning to really welcome Bitcoin and other cryptocurrencies. And today, the HM Revenue & Customs has announced their official position on taxing Bitcoin and similar cryptocurrencies.

And the news it good, very good for Bitcoin ethusiasts. For the purposes of taxation, Bitcoin will essentially be treated as any other currency.

The key points that Bitcoiners will be interested in are:

  • Income from mining cryptocurrencies is VAT exempt
  • Charges for arranging transactions in cryptocurrencies is VAT exempt
  • Cryptocurrencies transferred to fiat is VAT exempt
  • VAT is due (as normal) for selling goods/services paid in cryptocurrencies (calculated in GBP at point of transaction)
  • Corporation Tax: no special rules apply, it will be treated as foreign exchange and loan relationships
  • Income Tax: business profits from crypto-currencies taxed as normal income
  • Capital Gains: gains or losses from crypto-currencies allowable as CG for an individual or corporation tax for a business
  • Gambling gains are not taxable although losses cannot be offset against other gains (which is the same as fiat)

Here’s a quote of some of the main details:

  • 1.Income received from Bitcoin mining activities will generally be outside the scope of VAT on the basis that the activity does not constitute an economic activity for VAT purposes because there is an insufficient link between any services provided and any consideration received.

  • 2.Income received by miners for other activities, such as for the provision of services in connection with the verification of specific transactions for which specific charges are made, will be exempt from VAT under Article 135(1)(d) of the EU VAT Directive as falling within the definition of ‘transactions, including negotiation, concerning deposit and current accounts, payments, transfers, debts, cheques and other negotiable instruments.’

  • 3. When Bitcoin is exchanged for Sterling or for foreign currencies, such as Euros or Dollars, no VAT will be due on the value of the Bitcoins themselves.

  • 4. Charges (in whatever form) made over and above the value of the Bitcoin for arranging or carrying out any transactions in Bitcoin will be exempt from VAT under Article 135(1)(d) as outlined at 2 above.

    HM Revenue & Customs

Welcoming Bitcoin in Britain

It seems Britain is reversing a previous decision to treat Bitcoin as a form of voucher. Consequently, they will no longer be requiring the standard 20% tax (VAT) upon their purchase.

The UK’s welcoming approach to Bitcoin contrasts with the approach of other countries, amid concerns about its use for tax evasion and money laundering as well as its notoriety for wide fluctuations in value. More

In a meeting with a group of UK traders last week, HM Revenue & Customs said it would not charge the 20 per cent VAT tax on trades, which entrepreneurs had complained made their businesses globally uncompetitive. HMRC went a step further, saying it would not charge the tax on their margins either.

The ruling sidesteps the thorny question of whether to class Bitcoin as a currency, but effectively treats it as such, and bases its policy on the EU law that exempts payments and transfers of “negotiable instruments” from tax.

Financial Times

This is great news for British entrepreneurs in the cryptocurrency space. It will allow companies to remain competitive with those overseas who were not burdened with this issue.

Although regulatory and taxation clarity is certainly not required for Bitcoin to function, it can provide a useful peace of mind for businesses that are attempting to innovate in the cryptocurrency field. At the moment, many banks in the UK are refusing service to companies and even regular consumers, at the mere mention of Bitcoin or cryptocurrency. Hopefully this news will slowly help to ease the minds of the decision makers at these financial institutions.

A Simple Explanation of Bitcoin

Stack of physical bitcoins

Bitcoin logoBitcoins are basically cash that exists only on the Internet.

You can transfer Bitcoins anywhere in the world, in seconds. For most transactions, this is entirely free and the fees that do exist are tiny (a few pennies, if that).

In fact, Bitcoin is a whole different currency. It’s not dollars, not pounds and not euros, but it does have worth – people are buying Bitcoins all the time. In fact, while I am typing this out, 1 Bitcoin is worth ~ £11.1 (GBP) or $17.39 (USD).

All you need to receive Bitcoins is a Bitcoin address, which is very similar to a bank account number, but you don’t need a bank account to store Bitcoins. They’re stored on your computer, your phone, your tablet or wherever you decide to store your Bitcoins.

This is what a Bitcoin address looks like:

1PnJf9EkdRpA7iQpEfyy5xj79PThocfwv3

As you can see, it is just a random series of numbers and letters, but with that people can send you any number of Bitcoins. You can create as many Bitcoin addresses as you’d like, and its easy to do so in pretty much all the Bitcoin software that is available.

Who needs to know about your Bitcoins though? The answer is no one except you.

Bitcoin’s systems are decentralised in their nature, which means you don’t need a bank account. You can store your Bitcoins entirely yourself if you wish. Alternatively, you can use one of the various online Bitcoin services that let you access your Bitcoins from anywhere.

An online Bitcoin service I’d recommend for beginners or anyone with a passing interest in Bitcoin is Blockchain’s My Wallet service. My Wallet lets you create a Bitcoin wallet, access your Bitcoins from anywhere and even buy Bitcoins via bank transfer.

I hope you’ve found this a useful, simple introduction to Bitcoin. Please feel free to add a comment below with any constructive feedback.

Please also be aware, this article is deliberately simplified and does not fully explore Bitcoin concepts. Some concepts, such as the fact that users do not actually store Bitcoins themselves, only the public/private encryption keys needed to access them, are beyond the scope of this article.

For more detailed information, check out the following links:

Thanks for reading.