Pressed NFT | Eth Online 2020 Hackathon

November 10th, 2020

Screenshot from 2020-10-24 09-25-04

Objectives

  • Web3 pipeline for visualizing NFTs
  • System for interpreting tokenIDs and prepare them as Unique rapidly manufacturable objects
  • Generate random numbers
  • DAPP asset visualization
  • Post process 3d models

Long Description

As NFT's gain popularity, we might see an opportunity to further the interaction of digital ownership. Made up of numbers and letters crypto hashes give the token designer a challenge to interpret and visualize randomness. Our project demonstrates web app 3D interpreter for a token and a prospective path to rapidly-produce these tokens through cloud 3D printing.

Unlike the ownership of a digital avatar or artwork, this is a lower-level representation of the token itself, kin to an elongated coin. Think of a promotional web page or item managed by the contract owner.

The blockchain's global nature enables the contract owner and Token holders to form a unique relationship. Portals or lobbies offering tangible representations of the tokens could be where we see exciting branding in web3.

Technology

How It's Made The frontend prototype is built in React using creat-eth-app and hosted on Netlify. We use the web3 package to read and write to specific contracts which are maintained on Remix. The main reason for doing so is to use the beta Chainlink's VRF, which runs on the Koven network.

In the demo, the smart-contracts is broken up into three components. The first generating random numbers from LINK, the second manages ERC721 Tokens and a purchase contract which transfers ether from the buyer.

In our 3D interpreter, we are referencing the token's ID to build our token's visual language. Each number in the ID corresponds to a shape, which is then modeled by Three js. Since 3D models are large, we avoid storing this data on the chain; instead, the frontend hosts the token's model assets.

Blender's GLTF / GLB is the standard for 3D web model processing. This gives us the ability to script it to reflect the Three js interpreter giving us the ability to re-mesh and 3D print the unique NFT.

Once a customer purchases a token, the graph is queried to match the owner with their token.

Generate Random numbers using ChainlinkVRF

Generate Random Numbers for Smart Contracts using Chainlink VRF

Mint ERC721 Token with Open Zeppelin

ERC 721

DAPP model Visualization

three.js - JavaScript 3D library

Model Remesh. Output to .stl

Blender 2.90.1 Python API Documentation - Blender Python API

Remix Solidity dev

Remix - Ethereum IDE