{"id":1683,"date":"2014-01-17T14:32:53","date_gmt":"2014-01-17T06:32:53","guid":{"rendered":"https:\/\/gergely.imreh.net\/blog\/?p=1683"},"modified":"2014-01-17T14:32:53","modified_gmt":"2014-01-17T06:32:53","slug":"bitcoin-vending-machine-prototype","status":"publish","type":"post","link":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/","title":{"rendered":"Bitcoin vending machine prototype"},"content":{"rendered":"<p>Since <a title=\"Two day dive into Bitcoin\" href=\"https:\/\/gergely.imreh.net\/blog\/2013\/11\/two-day-dive-into-bitcoin\/\">my last exploration of bitcoin<\/a>, there are a lot of things happening in that topic, and the geekiness of it (among other things) didn&#8217;t let me go. There were a lot of talks about one more more Bitcoin ATMs (like <a title=\"Lamassu homepage\" href=\"https:\/\/lamassu.is\/\">Lamassu<\/a>) coming here to Taiwan, but all of them are months in the future. I thought maybe it could be interesting to build my own &#8211; let&#8217;s call it &#8211; vending machine, for fiat-to-bitcoin transactions.<\/p>\n<p>There were other people making similar effort, for example the <a title=\"Open Bitcoin ATM\" href=\"http:\/\/www.youtube.com\/watch?v=A4KvAgJx4GU\">Open Bitcoin ATM<\/a>, but I felt they fall a bit short and unlikely that I can get the same parts over here.<\/p>\n<h2>Preparation<\/h2>\n<p>For a vending machine like this to work, there&#8217;s really only one piece of equipment is needed, the bill acceptor. I have looked around on <a title=\"eBay\" href=\"http:\/\/ebay.com\/\">eBay<\/a>, and <a title=\"Alibaba\" href=\"http:\/\/alibaba.com\/\">Alibaba<\/a> for a Taiwan Dollar (TWD) bill acceptor, but there&#8217;s little to none to be found. Looks like I still got lucky that one of the big vending machine manufacturers, <a title=\"ICT homepage\" href=\"http:\/\/www.ictgroup.com.tw\/\">International Currency Technologies<\/a> (ICT) is actually local (less than 1 hour on public transport from here, maybe?).<\/p>\n<p>Looking around their side, they have plenty of <a title=\"Bill acceptors from ICT\" href=\"http:\/\/www.ictgroup.com.tw\/index.php?option=com_content&amp;view=article&amp;id=280&amp;Itemid=60\">bill acceptors<\/a> (many but not all can do TWD). They don&#8217;t have any local distributor, so I got in touch with their sales directly. The first guy didn&#8217;t speak any English, but somehow after a handful of emails I got to guy with pretty good English (which is unfortunately not as common as I&#8217;d like it to be). A few weeks (yes, weeks) of emailing, and some nudging phone calls I got some useful information out of them.<\/p>\n<p>I asked, what do I need if I want to use a bill acceptor for &#8220;a digital goods vending machine&#8221;, and maybe a thermal printer (that&#8217;s cool, wanted to use one for a long time)? They had some advice which parts do I need, and how much would they cost.\u00a0Their recommendation:<\/p>\n<ul>\n<li><a title=\"XBA\" href=\"http:\/\/www.ictgroup.com.tw\/index.php?option=com_content&amp;view=article&amp;id=480&amp;catid=35&amp;Itemid=325\">XBA<\/a>, the most advanced bill acceptor [US$340]<\/li>\n<li>GP-58IV thermal printer (an advanced, not yet announced version of <a title=\"GP-58III page\" href=\"http:\/\/www.ictgroup.com.tw\/index.php?option=com_content&amp;view=article&amp;id=448&amp;catid=39&amp;Itemid=63\">GP-58III<\/a>) [US$150]<\/li>\n<li>a payment system board to make it easier to use them together and with an external control board (no mention of it on the website) [US$140]<\/li>\n<\/ul>\n<p>It does add up quite a bit before any housing, brains, and display &#8211; definitely more than the Open Bitcoin ATM&#8217;s supposed $165 tag. But it looked like it does worth it, I went ahead and ordered it (+5% VAT, since I&#8217;m not a company).<\/p>\n<figure id=\"attachment_1684\" aria-describedby=\"caption-attachment-1684\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1684\" alt=\"Parts laid out on the table\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2014\/01\/btcvendparts.jpg\" width=\"500\" height=\"375\" \/><figcaption id=\"caption-attachment-1684\" class=\"wp-caption-text\">Vending machine parts: bill acceptor, control board, thermal printer.<\/figcaption><\/figure>\n<p>The parts arrived quite quickly (as a reference, 3 days ago), within less than a week of the order, because they were in stock. Unpacking is fun, though soon it was obvious that not everything is smoothly on track.<\/p>\n<p>The guides attached were barely scratching the surface, contained no information on how to make the units work with the computer (i.e. no protocol, no nothing), maximum referring to some software that I didn&#8217;t have access to, and would run on Windows anyways as opposed to my Linux system.<\/p>\n<p>Asking and re-asking a bunch of questions to the sales guy made it clear:<\/p>\n<ul>\n<li>the thermal printer does not need the payment system board, and indeed it cannot even talk to the printer (though an attached documentation says the opposite).\u00a0Need a &#8220;main&#8221; board to print to it.<\/li>\n<li>the thermal printer on the order was 12V supply and RS232 connection, while mine is 9V and USB, and apparently the former does not even exist. \u00a0It uses wallplug instead of shared power like the bill acceptor and the payment system board.<\/li>\n<li>the payment system board cannot control the bill acceptor with the current RS232 cable, because its single RS232 connector is for the external &#8220;main&#8221; board that I should make. If I plug in the bill acceptor in there, the payment system has to be stand-alone<\/li>\n<li>the bill acceptor comes with a power plug which is type <a title=\"172340-1 Product Details\" href=\"http:\/\/www.te.com\/catalog\/pn\/en\/172340-1\">172340-1<\/a>, that none of the local computer part stores know, so I cannot (easily) supply power to it. They will send me another adaptor cable to improve on this.<\/li>\n<\/ul>\n<p>Based on all this it seems like that even if they knew my use-case correctly, the actual parts I got do not fit together the way they represented it, and there&#8217;s plenty of confusion about the specs. I really didn&#8217;t need the payment system board, for example&#8230;<\/p>\n<p>All in all, my contact was quite helpful, and pretty quick to reply, though it is still quite painful first encounter with system integration, and there&#8217;s a lot more to fix with the hardware, though was good enough to start.<\/p>\n<h2><span style=\"line-height: 1.5em;\">Assembly<\/span><\/h2>\n<p>There was a lot more querying in the emails about related documentation. Got the\u00a0<a title=\"Documentation of the ICT-104 protocol\" href=\"http:\/\/www.slideshare.net\/imrehg\/ict104v140116-ict104-u-protocol\">description of the ICT-104 protocol<\/a>\u00a0to communicate with the bill acceptor (it&#8217;s not too bad). Got the windows printer driver for the thermal printer, though managed to use it without that (and installing Windows): it turns out that the printer implements the <a title=\"ESC\/POS reference documentation\" href=\"http:\/\/files.support.epson.com\/pdf\/general\/escp2ref.pdf\">Epson ESC\/POS protocol<\/a>, for which there&#8217;s already a python library, the <a title=\"python-escpos on Google Code\" href=\"https:\/\/code.google.com\/p\/python-escpos\/\">python-escpos<\/a>. It seems to be pretty dead, but good enough for initial testing.<span style=\"line-height: 1.5em;\">\u00a0<\/span><\/p>\n<figure id=\"attachment_1685\" aria-describedby=\"caption-attachment-1685\" style=\"width: 500px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1685\" alt=\"Thermal printer test print showing a Dallas Clayton poem, Good\/Bad\" src=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2014\/01\/thermalprinter.jpg\" width=\"500\" height=\"375\" \/><figcaption id=\"caption-attachment-1685\" class=\"wp-caption-text\">Thermal printer test print<\/figcaption><\/figure>\n<p>The test prints are &#8220;okay&#8221;: the text is fine (32 char\/line), barcode and qr code should be usable but there seems to be some communication problem that breaks images (like the space shuttle on the above picture), that needs to be debugged (seems like not all gifs are created equal, for example, some are more reliable). Oh, I used Dallas Clayton&#8217;s poem, &#8220;<a title=\"Good\/Bad\" href=\"http:\/\/www.theworldsbestever.com\/2011\/03\/25\/the-greatest-writer-alive-25\/\">Good\/Bad<\/a>&#8221; for the testing.<\/p>\n<p>Played with the bill acceptor as well, using some pins and a bench power supply (set to 12V, the bill acceptor eats max ~0.6V when the motor is running), and hoped that I don&#8217;t blow the circuit&#8230; So far so good.<\/p>\n<p>The vending machine flow is something like this:<\/p>\n<ol>\n<li>turn on<\/li>\n<li>read receive address of customer<\/li>\n<li>accept payment<\/li>\n<li>calculate outgoing bitcoin<\/li>\n<li>send payment<\/li>\n<li>print receipt<\/li>\n<\/ol>\n<p>I was doing the printer testing in Python, and RS232 is pretty easy in Python, so just cobbled together a command line vending machine interface in Python.<\/p>\n<p>Turn on, communicate with the bill acceptor, display some initial information that I know that it&#8217;s going well.<\/p>\n<p>Start running <a title=\"zbar\" href=\"http:\/\/zbar.sourceforge.net\/\">zbar<\/a> in the background to read qr codes from the computer&#8217;s webcam. Using the console to exchange information, didn&#8217;t have time to fix up the <a title=\"zbar on PyPi\" href=\"https:\/\/pypi.python.org\/pypi\/zbar\">python-zbar<\/a> integration, though it should work as the <a title=\"Electrum homepage\" href=\"http:\/\/electrum.org\/\">Electrum<\/a> bitcoin client uses it as well.<\/p>\n<p>After an address is read, read the notes of the bill acceptor, and update the sum of received pay. This is listening on the RS232 line for specific codes, and replying to tell the bill acceptor what to do (i.e. accept\/reject).<\/p>\n<p>When the user is finished and signaled that to the interface, calculate the outgoing value, send the payment through a payment server. The payment server is a nodejs script that accepts payment information through a REST API. It does it very badly, insecurely, using the wrong REST model (it should be &#8220;POST&#8221; to do anything with consequence, never &#8220;GET&#8221;), but it does work. It connects to a local bitcoind instance (over SSL at least, not that it matters in this case, but at least I know SSL will work for the &#8220;real&#8221; server), which at the moment is connected to the testnet, not the real one.<\/p>\n<p>After the payment is sent, print the receipt with some useful information on it, and a bitcoin logo for good measure.<\/p>\n<p>The current stages of the both the <a title=\"BTC Vending Core\" href=\"https:\/\/github.com\/imrehg\/btcvendcore\">bitcoin vending interface<\/a>, and the <a title=\"BTC Payment Server\" href=\"https:\/\/github.com\/imrehg\/btcvendpay\">payment server<\/a> are open source and online.<span style=\"line-height: 1.5em;\">\u00a0And it worked, here&#8217;s a video of it in operation.<\/span><\/p>\n<p><iframe loading=\"lazy\" title=\"Bitcoin vending machine prototype alpha\" width=\"580\" height=\"326\" src=\"https:\/\/www.youtube.com\/embed\/oxAU0lFB8uU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2><span style=\"line-height: 1.5em;\">Future<\/span><\/h2>\n<p>I hoped it would be in better stage before tomorrow&#8217;s <a title=\"Event page on Facebook\" href=\"https:\/\/www.facebook.com\/events\/223672897812438\/\">Bitcoin with a Lawyer&#8217;s Eyes event<\/a> in the Taipei Hackerspace, but either way it is good to think ahead further.<\/p>\n<p><span style=\"line-height: 1.5em;\">If I want to make it really useful, and a &#8220;real&#8221; machine (one that you can kick or pour beer over it and still keeps working, as one of my friends put it), there are some specific things I can improve:<\/span><\/p>\n<ul>\n<li>enclose it in a box: metal, laser cut acrylic, &#8230;?<\/li>\n<li>better bill acceptor: keep bills in escrow before the payment gets through, disable acceptance unless we are at that stage of the workflow, set maximum vending amount in one go.<\/li>\n<li>designa a better interface, that can do multiple payments before needing to restart<\/li>\n<li>price not hardcoded into the software but dynamically set<\/li>\n<li>print relevant links embedded in qr code, eg. transaction on \u00a0blockchain.info<\/li>\n<li>make the payment server secure and improve the overall security, eg. have a code or activation for starting up<\/li>\n<li>hook it up to the proper bitcoin network (this is the scariest part)<\/li>\n<li>build a few more, fund them, and put somewhere accessible<\/li>\n<\/ul>\n<p>Now back to work.<\/p>\n<p>Ps:\u00a0My purpose of building any such machine is to make it easier to acquire bitcoins, this spreading their usage and increasing their usefulness.\u00a0If you feel like tipping, my address is\u00a0<a title=\"Bitcoin donation address\" href=\"bitcoin:1GxSUTrw5onv9HbJhKN5PVhuyxm4j75X8d?message=Thanks%20a%20lot%21\">1GxSUTrw5onv9HbJhKN5PVhuyxm4j75X8d<\/a>. Thanks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>All the gritty details of researching, ordering, building, and testing a bitcoin vending machine prototype.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[111,8],"tags":[135,136],"class_list":["post-1683","post","type-post","status-publish","format-standard","hentry","category-maker","category-prog","tag-bitcoin","tag-prototype"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bitcoin vending machine prototype - ClickedyClick<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bitcoin vending machine prototype - ClickedyClick\" \/>\n<meta property=\"og:description\" content=\"All the gritty details of researching, ordering, building, and testing a bitcoin vending machine prototype.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/\" \/>\n<meta property=\"og:site_name\" content=\"ClickedyClick\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/gergely.imreh\" \/>\n<meta property=\"article:published_time\" content=\"2014-01-17T06:32:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2014\/01\/btcvendparts.jpg\" \/>\n<meta name=\"author\" content=\"Gergely Imreh\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@imrehg\" \/>\n<meta name=\"twitter:site\" content=\"@imrehg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gergely Imreh\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/\"},\"author\":{\"name\":\"Gergely Imreh\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"headline\":\"Bitcoin vending machine prototype\",\"datePublished\":\"2014-01-17T06:32:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/\"},\"wordCount\":1555,\"commentCount\":8,\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/01\\\/btcvendparts.jpg\",\"keywords\":[\"bitcoin\",\"prototype\"],\"articleSection\":[\"Maker\",\"Programming\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/\",\"name\":\"Bitcoin vending machine prototype - ClickedyClick\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/01\\\/btcvendparts.jpg\",\"datePublished\":\"2014-01-17T06:32:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/01\\\/btcvendparts.jpg\",\"contentUrl\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/wp-content\\\/uploads\\\/2014\\\/01\\\/btcvendparts.jpg\",\"width\":500,\"height\":375,\"caption\":\"Vending machine parts: bill acceptor, control board, thermal printer.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/2014\\\/01\\\/bitcoin-vending-machine-prototype\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bitcoin vending machine prototype\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/\",\"name\":\"ClickedyClick\",\"description\":\"Life in real, complex and digital.\",\"publisher\":{\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/#\\\/schema\\\/person\\\/42391e2ae52c8ed76b37be509a5707b0\",\"name\":\"Gergely Imreh\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\",\"caption\":\"Gergely Imreh\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g\"},\"description\":\"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net\",\"sameAs\":[\"https:\\\/\\\/gergely.imreh.net\\\/\",\"https:\\\/\\\/www.facebook.com\\\/gergely.imreh\",\"https:\\\/\\\/www.instagram.com\\\/imrehg\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/gergelyimreh\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@GergelyImreh\"],\"url\":\"https:\\\/\\\/gergely.imreh.net\\\/blog\\\/author\\\/gergely\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bitcoin vending machine prototype - ClickedyClick","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/","og_locale":"en_GB","og_type":"article","og_title":"Bitcoin vending machine prototype - ClickedyClick","og_description":"All the gritty details of researching, ordering, building, and testing a bitcoin vending machine prototype.","og_url":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/","og_site_name":"ClickedyClick","article_publisher":"https:\/\/www.facebook.com\/gergely.imreh","article_author":"https:\/\/www.facebook.com\/gergely.imreh","article_published_time":"2014-01-17T06:32:53+00:00","og_image":[{"url":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2014\/01\/btcvendparts.jpg","type":"","width":"","height":""}],"author":"Gergely Imreh","twitter_card":"summary_large_image","twitter_creator":"@imrehg","twitter_site":"@imrehg","twitter_misc":{"Written by":"Gergely Imreh","Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/#article","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/"},"author":{"name":"Gergely Imreh","@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"headline":"Bitcoin vending machine prototype","datePublished":"2014-01-17T06:32:53+00:00","mainEntityOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/"},"wordCount":1555,"commentCount":8,"publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/#primaryimage"},"thumbnailUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2014\/01\/btcvendparts.jpg","keywords":["bitcoin","prototype"],"articleSection":["Maker","Programming"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/","url":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/","name":"Bitcoin vending machine prototype - ClickedyClick","isPartOf":{"@id":"https:\/\/gergely.imreh.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/#primaryimage"},"image":{"@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/#primaryimage"},"thumbnailUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2014\/01\/btcvendparts.jpg","datePublished":"2014-01-17T06:32:53+00:00","breadcrumb":{"@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/#primaryimage","url":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2014\/01\/btcvendparts.jpg","contentUrl":"https:\/\/gergely.imreh.net\/blog\/wp-content\/uploads\/2014\/01\/btcvendparts.jpg","width":500,"height":375,"caption":"Vending machine parts: bill acceptor, control board, thermal printer."},{"@type":"BreadcrumbList","@id":"https:\/\/gergely.imreh.net\/blog\/2014\/01\/bitcoin-vending-machine-prototype\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gergely.imreh.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Bitcoin vending machine prototype"}]},{"@type":"WebSite","@id":"https:\/\/gergely.imreh.net\/blog\/#website","url":"https:\/\/gergely.imreh.net\/blog\/","name":"ClickedyClick","description":"Life in real, complex and digital.","publisher":{"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gergely.imreh.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/gergely.imreh.net\/blog\/#\/schema\/person\/42391e2ae52c8ed76b37be509a5707b0","name":"Gergely Imreh","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g","caption":"Gergely Imreh"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/1d5be311c5d616a3f4c7dfbc6b736ec817d2508b8c420ec29edb950d33fb4946?s=96&d=retro&r=g"},"description":"Physicist, hacker. Enjoys avant-guarde literature probably a bit too much. Open source advocate and contributor, both for software and hardware. Follow these posts on the Fediverse by @gergely@gergely.imreh.net","sameAs":["https:\/\/gergely.imreh.net\/","https:\/\/www.facebook.com\/gergely.imreh","https:\/\/www.instagram.com\/imrehg\/","https:\/\/www.linkedin.com\/in\/gergelyimreh\/","https:\/\/www.youtube.com\/@GergelyImreh"],"url":"https:\/\/gergely.imreh.net\/blog\/author\/gergely\/"}]}},"_links":{"self":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/comments?post=1683"}],"version-history":[{"count":3,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1683\/revisions"}],"predecessor-version":[{"id":1688,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/posts\/1683\/revisions\/1688"}],"wp:attachment":[{"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/media?parent=1683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/categories?post=1683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gergely.imreh.net\/blog\/wp-json\/wp\/v2\/tags?post=1683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}