Aura & Transvestment

!NFT Documentation


!(not)
Non-Fungible Token
For
Transvestment




* An !NFTs is not just a digital file. It is a form of cryptomedia with a specific set of characteristics regarding its configuration and distribution.

* It stands in tangential opposition to NFTs used as ownership records for digital art, by repurposing some of their mechanisms for alternative outcomes.

* Individual ownership is instrumentalized as an acknowledgment of belonging to a collectivity.

* Artificial scarcity is challenged allowing for an organically determined number of works based on interest and engagement.

* Trustlesness is inverted by requiring personal communication between the artist and the recipient.

* Financialization and speculation are discouraged by disincentivizing secondary market sales and aiming to create support for alternative forms of production and organization.

* The use of money as the exclusive means for acquiring a piece is discarded, recognizing invisibilized forms of work and allowing people to contribute in accordance to their means.

* Finally, the commodification power of cryptomedia is diminished by the use of copyfarleft licences for the publishing of the work.

* Yet, an imposition of ‘authenticity’ and 'ownership' through cryptographic means remains:

How Does it Work



Disguised among the pixel data, each !NFT contains an auratic package with a set of files that cryptographically certify that the media was signed by the artist and dedicated to a specific recipient. The package is hidden inside the !NFT with the open-source program for steganography: steghide, while the rest of the generated proofs are implemented using the GnuPG program, an implementation of the OpenPGP standard. To retrieve the package one must run the media through steghide and provide an auratic key. This key must be visible in the media itself so that anyone can retrieve the package and verify the authorship and ownership of a given !NFT, or can also be excluded by the creator.

By using steganography, the auratic package is held inside the media itself by slightly changing the pixel data. In this system, the media is present as both a cultural artifact and as a vehicle for the auratic power that cryptography provides.

The auratic package contains the following files:

Auratic media
This is the actual file that is being hashed and signed by the artist. It must hold a clear connection to the cover media, either thematically or more explicitly as a smaller thumbnail or a lossy compression of the original. To fit inside, the filesize of the auratic image must be of around 10% to 15% of the cover media.

Auratic dedication
This is a text file that contains the result of a SHA256 hash of the auratic media alongside the name and email of the recipient.

Auratic signature
This file is the result of generating a detached signature of the auratic dedication. It is a signed hash of the text file. This confirms that the sender (artist) intentionally signed that specific dedication at a specific time. In the !NFT system, these files act as a claim of authorship of the auratic media by the artist as well as a confirmation that the media is indeed intended for the receiver.

If provided by the receiver, a copy of the auratic signature is encrypted with the receiver's public key, adding an additional level of confirmation of intention.

Auratic Information
A markdown file with all the information necessary.

new_nnft.sh
A bash script to create new !NFTs.

verify_nnft
A bash script to verify the validity of !NFTs.

Code


new_nnft.sh
#!/bin/bash ################################# # script to generate a new !nft # ################################# #Available under a GPLv3 license #arguments recieved cover_media=$1 auratic_key=$2 auratic_media=$3 recipient_name=$4 recipient_email=$5 recipient_pgp=$6 #calculate hash of auratic image piece_hash_output=$(sha256sum $3) #compose auratic dedication text file auratic_dedication="Auratic media hash: $piece_hash_output\n\nRecipient: $recipient_name $recipient_email" echo -e $auratic_dedication >> "auratic_dedication.$cover_media.txt" #create detached signature for auratic_dedication gpg --output "auratic_signature.$cover_media.sig" --detach-sig "auratic_dedication.$cover_media.txt" #check if extra pgp encryption is activated if [ $6 == 'yes' ] then echo 'executing additional encryption of the auratic signature using the public key of the recipient' gpg -e -s -a -r "$recipient_email" "auratic_signature.$cover_media.sig" zip "$cover_media.aura.zip" auratic_info.md $auratic_media "auratic_signature.$cover_media.sig" "auratic_signature.$cover_media.sig.asc" "auratic_dedication.$cover_media.txt" new_nnft.sh verify_nnft.sh else echo 'no additional encryption of the auratic signature' zip "$cover_media.aura.zip" auratic_info.md $auratic_media "auratic_signature.$cover_media.sig" "auratic_dedication.$cover_media.txt" new_nnft.sh verify_nnft.sh fi #delete files that have already been added to the zip steghide embed -cf "$cover_media" -ef "$cover_media.aura.zip" -p $auratic_key if [ $6 == 'yes' ] then rm auratic_info.md $auratic_media "auratic_signature.$cover_media.sig" "auratic_dedication.$cover_media.txt" new_nnft.sh verify_nnft.sh "auratic_signature.$cover_media.sig.asc" else rm auratic_info.md $auratic_media "auratic_signature.$cover_media.sig" "auratic_dedication.$cover_media.txt" new_nnft.sh verify_nnft.sh fi

verify_nnft.sh
#!/bin/bash ############################ # script to verify an !nft # ############################ #Available under a GPLv3 License #arguments recieved: auratic media, auratic dedication file, auratic signature file #calculate hash of auratic image printf '\n Compare the hash present in the auratic dedication to the following information: \n' sha256sum $1 printf '\n\n If they are the same, the media and the dedication have an auratic connection. If not, either the media or the dedication have been modified and are no longer valid. \n\n' gpg --verify $3 $2 printf '\n If the verification above outputs a Good signature from the artist, the dedication and the signature have an auratic connection.'

How to use it




How to create a new !nft via the new_nnft.sh script
*Tested in Ubuntu 20.04*

Setup

Software needed:
gpg (GnuPG)
zip
steghide

You need to have a pgp private key already implemented in your system. A good quickstart guide can be found here.

Arguments

A cover media
In one of the following formats: .au, .bmp, .jpeg or .wav. This file will hide the auratic package among its data. Bigger files work better. For more information on the capacity a certain file supports run: ```bash steghide info media.jpg ```

Auratic key
The password that encrypts the hidden files inside the cover media. This password should be visible in some way in the cover media so that anyone can retrieve the aura.zip and confirm the signature and dedication of the media.

Auratic media
This is the actual file that is being signed with pgp. You can decide to keep a clear connection with the cover file either thematically or by using a thumbnail of the cover media or a lossy compression version of it.

Recipients info
The name and email of the person who the file is dedicated to.

Recipients key
A copy of the recipients pgp public key in either a plain text (.txt) or a .key format (optional).

Example execution to create an !nft sudo ./new_nnft.sh cover_img.jpg pass12345 auratic_img.jpg Pablo Somonte Ruano x@pablo.sx recipient.key(optional)




Diagram



COVER_MEDIA.JPG LEVEL 0: +---------------+ IMAGE | | .................................................. | x x x | | xx xxx x | THE PATTERN IS THE | x x | AURATIC KEY TO REVEAL | x x x | THE HIDDEN AURATIC | xxx x x | PACKAGE | x x xx x +-----------------------+ | x x x | | | x xxx | | | x xx x | | | x | +---------------+ | | | STEGANOGRAPHY +---------------+ | (STEGHIDE) v +------------------- AURA.ZIP --------------------------+ | | | AURATIC_INFO.MD AURATIC HASHED & SIGNED | | (THIS FILE) MEDIA WITH A PGP | | +---------------+ +---------+ DETACHED SIGNATURE | | | | | {{{{{{{ +------------+ | | | ABOUT | | {{{{{{{ | | | | | + | | {{{{{{{ | v | | | INSTRUCTIONS | | {{{{{{{ | +-------------+ | | | | | {{{{{{{ | | IMG.JPG.SIG | | LEVEL 1: | +---------------+ +---------+ +-+-----------+ | SIGNED | | | IMAGE |....................................|..................|........... | | | | PUBLIC KEYS SCRIPT TO | ENCRYPTED USING | | OF BOTH THE CREATE | RECIPIENT'S | | ARTIST AND NEW NNFTs | PGP PUBLIC KEY | | RECIPIENT +---------+ | AND SIGNED BY | | +---------------+ | NNFT.SH | | ARTIST WITH PGP | | | RECIPIENT.KEY | +---------+ | PRIVATE KEY | | +---------------+ | (OPTIONAL) | | | ARTIST.KEY | v | | +---------------+ +-----------------+ | +---------------------+ | IMG.JPG.SIG.ASC | | LEVEL 2: AURA & TRANSVESTMENT | +-----------------+ | DEDICATED PABLO SOMONTE RUANO | | & SIGNED +---------------------------------+ IMAGE ....................................................................




Watch the video essay
A project by Pablo Somonte Ruano