Bitcoin ATM settings for hot wallets and exchange integrations

In the previous article we covered exchange and counterparty risks of operating a bitcoin ATM and two general ways to do it: sell bitcoins from your hot wallet, or do mirror deals via bitcoin exchange.

In this post we look at what system settings are supported by main bitcoin ATM providers, namely: Lamassu, General Bytes and Bitaccess. Other large supplier of bitcoin ATMs — Genesis Coin was reached but didn’t provide details about their setup options.

Lamassu

lamassu

Lamassu bitcoin ATM has an open source code. This allowed different developers to take the code and build software upon it. E.g. Dash implementation is done by external party, Ethereum was also implemented by external party first and later on Lamassu added their own version of ETH official support.

Based on information provided by Neal Conner (Customer Service Manager) Lamassu bitcoin machines support the following settings currently:

Wallets support:

Current hot wallet options include Bitcoin Classic or Core, geth, BitGo, Snapcard, and Coinapult.

Exchanges integration:

Direct exchange modules are available for Bitstamp, Coinfloor, Coinapult, Coinbase, and Snapcard. Through a third-party service run by Lamassu operators, Bitnik Reload, operators can use their BitGo hot wallet and API to link to one of over a couple dozen exchanges (listed here: https://goo.gl/RFrq5o).

Upon each bill is inserted at the machine, the exchange linkage will issue a market order for the same amount of outgoing bitcoin. Every so often, the operator will shuffle the purchased bitcoins over from the exchange to replenish their hot wallet.
Lamassu flow circle
This has the effect of an immediate transaction for the customer, as well as greater security for the operator, as only he or she will hold the private keys to their hot wallet. Additionally, this helps avoid being considered a money transmitter in some jurisdictions, as only two parties are involved, instead of a third if bitcoins were sent directly from an exchange.
Various screenshots are available how to set major wallets and exchanges using Lamassu software.
Current integration allows to send BTC only to operator’s hot wallet as an intermediary, not directly to customers’ addresses, so a hot wallet is required. It used to be the case with a few exchanges that you could place an order and withdraw to an address via their API, however Lamassu avoids that since involving that third party directly could make some operators a money transmitter.

Network of machines support:

When bitcoin ATM operator runs a network of machines having a separate wallet associated with every machine becomes quite expensive as you need to freeze a lot of BTC liquidity there, same applies to integration with exchanges, it is better to have one account used for all machines.
According to Neal with Lamassu machines the process is the following: each machine paired to the same backend will use the same wallet. Most wallet options use change addresses for privacy, so none will use a single sending address.
Transaction logs from Lamassu’s backend will distinguish from which machine a transaction emanated, even though they are using the same wallet. An operator to use separate wallets would spin up another backend instance (DigitalOcean VPS droplet) and pair machines to that.
There are some limitations reported by operators, when several machines use the same backend. Here are they and answers from representative of the company:
Q: You cannot set different pricing for different machines.
A: Correct. Independent commission rates will be included in a backend currently in development.
Q: You cannot have any 2-way machines on the same server as a 1-way machine.
A: Correct. Also planned for the next backend.
Q:  You cannot track how much cash each machine has in its vault.
A: A spreadsheet of individual bill insertions per machine is available through the ‘lamassu-bills-log’ command. If you know when you emptied the cashbox last, you can have a count of the number of bills / fiat amount inserted since then.
Q: You can not track if one machine is online or offline.
A: a) You can tell machine status currently by seeing which machine’s fingerprints are pinging the server in its logs: http://support.lamassu.is/support/solutions/articles/1000099867 The individual machines’ fingerprints are shown with the ‘ssu-name’ command.
  b) SMS and email notifications for online / offline status are now available in alpha: https://gist.github.com/naconner/a49727f8e9820f63ca9fa723ca6b1299
According to Neal maintaining multiple machines on the same backend is necessarily more difficult, as the information (logs / counts / status) is distinguished per machine. To apply separate settings for now would require separate backends. Each VPS droplet is $10/mo from DigitalOcean and setup and installation for subsequent droplets go more quickly, so the overhead in maintaining separate backends is relatively low.
Addressing the issue that separate liquidity is required Neal mentions that same BitGo wallet can be used on multiple servers, for example.
While using bitcoind, default configuration would necessitate separate wallets, though some operators have connected multiple servers to an outside, dedicated bitcoind instance (thus one wallet).
All servers may be linked to the same exchange trading account.

General Bytes

General Bytes basic look
General Bytes is a Czech Republic based company that is present for a long time on bitcoin ATM market. General Bytes provides the cheapest one-way bitcoin machine (BATM2) out of widely used models. In the product line they also have a two-way model (BATM3).
We reached Karel Kyovsky (owner) to describe settings available at General Bytes machines.

Wallets support:

If you wish to connect ATM to a hot wallet this is the list of supported hot wallets:

  • Bitcoin Core/bitcoind
  • BitCore
  • Block.io
  • Coin.cz (private key only)
  • Coinbase.com
  • Uphold.com

However price feed may come from any of the following list:

  • BitcoinAverage
  • Bitfinex.com
  • Bitflyer.jp
  • Bitstamp.net
  • BTC-e
  • Coinbase.com
  • Coinfloor.co.uk
  • Coinmate.io
  • Cointrader.net
  • Digitalx.com
  • ItBit.com
  • Kraken.com
  • Poloniex.com
  • QuadrigaCX.com
  • TheRockTrading.com
  • Uphold.com

It is important to note that only a Bitcoin ATM server has access to wallet or exchange. ATM itself can talk only to a server. Customers can choose to either run their own server instance (own hardware or in a cloud, e.g. digitalocean.com) and in this case General Bytes doesn’t have access to it, or operator may choose to connect his machines to the server instance run by General Bytes, in this case a fee of 0.5% from turnover is paid to General Bytes for running such a server for operator.

Speaking about Bitnik reload solution, which requires to use the same address, at least Block.io and Coin.cz support one address and are officially supported by General Bytes. However, the General Bytes software provides a full integration on its own and can function without external solutions.

How to set a wallet? If an external solution wallet is used — operator just provides API key in the settings of machine. Same API key can be assigned to different machines, that is how they start using the same wallet.

In case of bitcoind operator provides parameters in the following format: protocol:rpcusername:rpcpassword:hostname:port. For example: https:operatorname:mysecretgold:127.0.0.1:8332. Operator can operate bitcoind instance on the same machine where the ATM server is run or on a separate machine based on which IP you provide in parameters.

Exchanges integration:

The following bitcoin exchanges are supported natively via settings of machines:

  • Bitfinex.com
  • Bitflyer.jp
  • Bitstamp.net
  • Coinbase.com
  • Coinfloor.co.uk
  • Coinmate.io
  • Cointrader.net
  • Digitalx.com
  • ItBit.com
  • Kraken.com
  • Poloniex.com
  • QuadrigaCX.com
  • TheRockTrading.com

By choosing different buy or sell exchange strategy ATM operator determines how particular ATM obtains, distributes or stores bitcoins.

Buy strategies supported by General Bytes machines:

General Bytes Buy Strategies

Karel recommends customers to go with exchange strategy 3. Which is to hold fiat on the exchange and rebuy bitcoins on demand. Customer gets bitcoins from hot wallet buffer in 2 seconds and operator is exposed to volatility risk of BTC only to btc amount that he holds in a buffer hot wallet.

Speaking about strategy 1, when funds are sent from exchange to customer address directly is still allowed by many exchanges, while some don’t. E.g. the following exchanges allow such transfers: Bitstamp, Bitfinex, QuadrigaCX, while Kraken for example does not. Mostly it is a security measure (Kraken allows withdrawals only to bitcoin addresses from addressbook managed via web only). Well, it is important to say that although this feature is supported by General Bytes, it is not recommended as operators might fall under a money transmitter license requirement in this case in some jurisdictions.

Sell strategies supported by General Bytes machines:

General Bytes Sell Strategies

Integration with exchanges is as simple as just providing API key in settings:

General Bytes exchange key

General Bytes have part of their software code open sourced as well, which allows to develop custom solutions upon it to some extent.

Network of machines support:

Multiple terminals can be configured to use same hot wallet or exchange – that is recommended practice as it significantly lowers maintenance costs.

You can have each machine connected to a different server but of course in practice you have your one server and multiple your machines connected to it. On server you can set for each machine a different wallet (by providing different API keys set etc) but in practice you operate one hot wallet and you set on the server in a terminal settings to use the same hot wallet (API key) so all of the machines use the same hot wallet. It simplifies operator’s cashflow/ BTC management.

Bitaccess

BitAccess ATM

Bitaccess is a Canadian company manufacturing bitcoin ATMs from the very beginning of bitcoin ATM market existence. We approached Andre Deminiac (Director of Operations) to find details of which settings Bitaccess machines support.

Wallets support:

In order to run a Bitaccess bitcoin ATM operator needs to use in-house developed Bitaccess wallet. It is originally developed own wallet platform specifically for use on Bitaccess bitcoin ATMs because there wasn’t a third-party wallet solution capable of handling Bitcoin ATM-style traffic at the time, and company have continued to build on it since. The result is a fully featured (HD/multisig capable) enterprise wallet specifically made for high-velocity applications (eg. bitcoin ATMs) and exclusive to Bitaccess platform. The wallet is partially cloud-based and uses Bitaccess infrustructure, so operators cannot run their own software/services.

Address reuse is possible with this wallet, which means on the buy side Bitnik solution could be used for restocking BTC balance.

Exchanges integration:

Bitaccess software supports major exchanges. Current list would roughly be Bitfinex, Bitstamp, Canadian Bitcoins, Coinapult, Coinsetter, Expresscoin, Kraken, QuadrigaCX, SFOX, Snapcard, Bitpay (price only), BitcoinAverage (price only). New exchanges are added when needed.

If a BTM isn’t using an exchange to trade, it will still get a live price from an available price source; either an exchange or a price aggregator like BitcoinAverage or Bitpay. The operator chooses the source, and it can again be converted to the local currency if needed.

The machines can pull in a live currency exchange rate just like it does with Bitcoin prices (for conversion https://openexchangerates.org is used behind the scenes and cannot be changed by operator via settings), and use that rate to convert prices on the fly where needed. So, for example, if you have a machine accepting KZT notes but connected to Bitstamp trading in USD, the BTM is pulling a BTC price in USD and converting it to KZT to display on-screen/use for accounting. Then the BTM can accept 10,000 KZT from a customer and send them the bitcoin for that equivalent. Then on the backend it calculates that’s worth 29 USD, executes a trade at Bitstamp for 29 USD to BTC, and withdraws that BTC back to the hot wallet to replenish what it sent to the customer.

Later taking the KZT from the machine and getting it back into Bitstamp as USD would be up to the operator and depend on how they have their business set up. It doesn’t factor into Bitaccess side of things at all, the exchange account just has to remain stocked.

A machine can only use one exchange at a time, but exchange availability is rarely an issue. If the operator wishes to maintain a backup exchange and switch over if needed, operators can do so.  The switch would be done manually. But exchanges experiencing significant downtime (enough to switch) is rare enough, so this is a non-issue, in that it can easily be handled on a case-by-case basis.

Network of machines support:

Multiple BTMs owned by the same operator can share a hot wallet, so they all pull from the same float and there’s only one balance to monitor. The wallet can scale to accommodate as many machines as someone might wish to operate.

Leave a Reply

Your email address will not be published. Required fields are marked *