Arduino, c++
Leave a comment

Face Trade – Art vending machine that trades mugshots for “free” portraits

Face Trade is an Art Vending Machine created by Matthias Dörfelt that dispenses unique prints of computer generated face drawings. Instead of paying with money, buyers trade a mugshot that is taken on the spot in order to be permanently stored in the Ethereum Blockchain, consequently turning the transaction into a semi-permanent Face Swap.

With Face Trade Matthias wanted to create a playful tension between what personal, biometric information people are willing to give up to be stored in a permanent and public storage in order to receive a “free” item. The free item in this case is a unique computer generated drawing of an expressive face that visually lives somewhat in a space between Mask and an actual face with an intentional redundancy in some of the facial features. Matthias wanted to create an ambiguity where it’s not quite clear weather the faces are happy, sad, deceiving or possibly trying to lure the visitors in. He wanted to capture the wide spectrum of things associated with blockchain which fluctuates between silk road, greed, gold rush mentality and the utopian promises of decentralization and democratisation that we only got to see small glimpses of thus far.

“One of the fascinating features of blockchain technology is the truly immutable nature of it. The internet wrongly has the reputation that things published to it will stay there for good. In the vast majority of the cases that’s not true. Whatever is written to a block chain on the other hand will stay there forever (unless the blockchain is abandoned). There is no way to remove anything that was written to it as that would break the self validating nature of the chain in question.” – Matthias Dörfelt

In addition to the physical installation, a website that can be found at www.itradedmyface.com is part of the project. It shows the mugshots of all previous participants. The images are shown exactly as they are stored in the blockchain (hence the low resolution). The mugshots are accompanied by the transaction hashes referring to the transactions that each respective face was stored in. On click, the corresponding ether scan entry for each face/transaction is pulled up.

Face Trade consists of a Camera Flash, Webcam, Receipt Printer, Inkjet Printer, Computer, Speakers, LCD Screen, Button and an Arduino (to control the button, LCD screen and camera flash).

The main application that ties everything together is written in python. It uses OpenCV to do basic face tracking and take the images. All the ethereum related things were done using web3.py which is the official python version of web3 to interact with the ethereum blockchain. The receipt printer, inkjet and Arduino are controlled via python, too. The process is comprised of taking a picture, uploading it to the blockchain, passing the resulting transaction hash to the face drawing generator that uses it to seed the random numbers (so that each face drawing is uniquely tied to the transaction that it belongs to), printing the resulting drawing and finally printing the receipt.

The only two things that are not written in python is the program to generate the faces and a program to compress the images before they are put into the blockchain. The face generator is written in Lua using my C++ Paper version under the hood. Another C++ application was written to compress the images (it’s not really a compression but rather converts the input images to a binary blob that only uses 4bit per pixel). Both applications are run from the main python application whenever needed.

In the current exhibition at Art Center Nabi, Seoul (until October 5th) the project is still running everything on an ethereum test network instead of the main network because the current version is alpha and this initial exhibition as a test run. There will be a blockchain related show later this year where he intends to switch over the the main ehtereum network.

Project PageMatthias Dörfelt

Leave a Reply

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