Nuftu.com is was a webservice enabling non-technically versed
artists to mint official Ethereum compliant ERC721 tokens (NFTs).
Users would pay a flat fee in fiat currency (handled by Payrexx), upload their artwork (image file, PDF, movie) and a description and Nuftu would handle the interaction with Ethereum blockchain over Infura, minting a Nuftu token, while taking care of gas fees etc.
The tag line is basically: Nuftu is simple: upload your digital artwork and pay the fee in USD - your NFT is ready!
Nuftu was decomissioned in late 2022 due to lack of interest and open sourced under MIT license in early 2023.
Current pricing is dynamically calculated based on the current gas prices.
The user uploads his artwork (supported file types for images, drawings, animations, video, and audio), selects if Nuftu should create a new Ethereum address or if the user wants to link an existing wallet via MetaMask.
Confirmation: let the user verify the entered information.
If the user selected to create a new Ethereum address in Step 1, here's the address and the private key to safely store and print out. This is the only and last chance to view the private key, it will not be stored anywhere. The address on the other hand is publically visible and will be used for the ownership of the newly minted NFT.
Forward to Payrexx for payment via credit card.
This is invisible to the user. After Payrexx has confirmed the payment, Nuftu will start the minting process via Infura. The gas fees will be paid from the balance of Nuftu's ethereum address.
Minting is done via the Nuftu contract deployed on Ethereum.
The Nuftu contract references the API on Nuftu.com (e.g. https://nuftu.com/api/0), which points to artwork, title and description stored on a PostgreSQL instance on Nuftu.com.
As the Token is ERC721 compatible, it can also be viewed e.g. on OpenSea, Rarible.
Nuftu.sol is the Ethereum contract
written in Solidity and deployed on following Ethereum address:
0x61a17d56fc6548bfd114be130ae2cc74d69ecd33
The backend is written in Java using Spring Boot. MainController.java handles the Endpoints.
Important are:
/api/{token}
returns the JSON referenced by the minted token containing title, description and the link to the artwork. Example output:
{"name":"Nuftu NFT #0",
"description":"The first NFT minted on Nuftu.",
"externalUrl":"https://nuftu.com/nft/0",
"image":"https://nuftu.com/api/file/0"}
/api/file/{token}
returns the file (image, audio, video, PDF etc.) that is referenced in the/api/{token}
call./nft/{token}
returns a 'nice' view (HTML) of the minted token for viewing. It uses thetokenview.html
template (Thymeleaf).
Nuftu uses Infura as mediator, and the Web3j library.
Minting is handled in MintingService.java
Sign up process is handled in the CreateController.java, relying on the UserSessionData.java.
Front end views are also handled via Thymeleaf templates.
A PostgreSQL database stores the metadata (title, description, file as byte array) in a table called
M̀etadata
, see Metadata.java for the Spring Boot JPA
Entity.
Jackson is used for JSON output for the /api/
endpoints.
Payment is handled via Payrexx, a third party payment provider. The flow is handled in PaymentTools.java and PayrexxGateway.java.
The gallery (/find
) shows the thumbnails of all minted tokens. Below is a screenshot taken in late 2022.