Git Product home page Git Product logo

inft's Introduction

iNFT, identifiable NFT

Overview

  • It is a new PoW way to mint NFT by block hash and gene template file on IPFS.

  • The design of gene template can make iNFT identifiable, the scarcity can be confirmed.

  • As the block hash of blockchain network is random and unique, iNFT can be deployed to multi chain. It is pretty interesting that Dapp can compare value between different networks by mathematics scarcity.

  • Try iNFT full functions, iNFT System

  • Just minting, iNFT Minter

Dapps

Editor

  • Function, It is the tools for designer to set the parameters for iNFT. Only the source image needed, the iNFT parts can be added here.

  • Language and Framework, React ( Javascript )

  • Github URL, https://github.com/ff13dfly/iNFT/tree/master/editor

  • Multi networks support, you can write the iNFT template on different blockchain network.

  • Single iNFT file upload/download support.

Minter

  • Function, The client Dapp for normal users.

  • Language and Framework, React ( Javascript )

  • Github URL, https://github.com/ff13dfly/iNFT/tree/master/mint

  • Customer can explorer the templates, then mint on selected template.

  • The list of result can be checked from minter.

  • In some network, you can manage your account here.

Market

Bounty

Service

Faucet

API

Portal

Cache Robot

  • Function, cache iNFT records and group them.

  • Language and Framework, Node.js ( Javascript )

  • Github URL, https://github.com/ff13dfly/iNFT/tree/master/service/history

  • Group iNFTs by address.

  • Group iNFTs by template.

  • Record of iNFT history, including all actions (set, sell, buy, revoke, divert, drop)

  • Subcribe Anchor Network to update the history of iNFT.

Minting Robot

Definition of iNFT

  • The template of iNFT definition as follow.

        //iNFT template
        {
            type:"2D",              //2D identifiable NFT.
            size:[
                "OUTPUT_SIZE_X",    //iNFT output size X
                "OUTPUT_SIZE_Y"     //iNFT output size Y
            ],
            cell:[
                "CELL_X",    //image grid size X
                "CELL_Y"     //image grid size Y
            ],
            puzzle:[        //pieces of iNFT. Will render by the array order, 0 is the background
                    {
                        value:[      //where to get the number of hash
                            "START",        //start position of hash string
                            "STEP",         //how many string to get from
                            "DIVIDE" ,      //how to divide, result%n, the value of "n"
                            "OFFSET",       //Random number offset to avoid same result
                            ],
                        img:[       //the position of image start, get by order, related ti "hash"
                            "LINE",         //line number of iNFT resource
                            "ROW",          //row number of iNFT resource
                            "LINE_EXT",     //default is 0,optional, line extend 
                            "ROW_EXT"       //default is 0,optional, row extend 
                            ],
                        position:[  //Position of this piece
                            "POSITION_X",   // The X position of this piece on iNFT
                            "POSITION_Y"    // The Y position of this piece on iNFT
                            ],
                        center:[    //this is optional, default is center of cell
                            "X",            //center X position        
                            "Y"             //center Y position     
                        ],
                        rotation:[  //this is optional 
                            "IMAGE_ROTATION",
                            "ROTATION_POSITION_X",
                            "ROTATION_POSITION_Y",
                        ],      
                        scale:1,    //this is optional        
                        fill:1,     //this is optional, wether fill the empty background     
                        color:[     //this is optional
                            "START",        //start position of hash string 
                            "STEP",         //default is 6,optional
                            "DIVIDE",       //optional, reduce the color amount. 
                            ["RED_OFFSET","GREEN_OFFSET","BLUE_OFFSET"]     //optional, adjust the color
                        ],
                        rarity:[            //How the part categoried to series. Parts can be multi used.
                            ["INDEX","INDEX", ... ],    //index parts, such as [0,2,3]
                            ["INDEX","INDEX", ... ],
                            ["INDEX","INDEX", ... ],
                        ]
                    },
                    ...         //iNFT is combined by pieces
                ]
            series:[        //description of rarity list
                {"name":"","desc":""},
                {"name":"","desc":""},
                {"name":"","desc":""},
                ...
            ]
            version:"VERSTION",     //iNFT template
            auth:["AUTH_NAME"]      //auth name list
        }
  • iNFT mint data as follow. It is pretty simple to save gas fee.

        {
            "tpl":"ID_OF_TEMPLATE_FILE",        //ID of IPFS file
            "from":"ipfs",                      //source origin
            "origin":"web3.storage",            //where to storage
            "offset":[0,3,0,3,6,5,3,9,7]        //optional, offset of mint following the template definition           
        }

Multi Chain Asset

Goal

  • Create PoW iNFT asset.

  • Even the Anchor Network crashed, the asset created on Ethereum Network is also valid.

Workflow

  • Create a Salt on Ethereum Network, it is related to Bitcoin Network.

  • Using the Salt as parameter to mint iNFT on substate Anchor Network.

  • Bridge package the mintings and save the merkel root hash on Ethereum Network.

  • When want to create the asset of iNFT on Anchor Network, write the iNFT data and supply the merkel path.

  • Validor confirm the iNFT, the iNFT on Anchor Network will be dropped then.

Howto

  • Substrate chain such as Anchor Network is used to mint the iNFT.

  • Bridge will package the mintings and save the merkel tree root on Ethereum Network.

  • When somebody want to bridge the iNFT on Anchor Network to other blockchain network, just drop the iNFT on Anchor Network and leave the last words about which account to accept the bridged iNFT. Then no need to write the bridge information when it is on Anchor Network.

  • By Last Words way, the iNFT is simple on Anchor Network.

  • Leaf data sample

        {
            "origin":{       //data written on substrate chain
                "name":"ANCHOR_NAME",
                "raw":{
                    "target":{
                        "network":"btc",            //mint by Bitcoin Network hash
                        "block":6123456,            //target Bitcoin block height
                    },
                    "salt":"SALT_ON_ETHER",         //salt on Ethereum Network
                    "offset":[],                    //mint offset
                    "tpl":"ID_OF_TEMPLATE_FILE",    //ID of IPFS file
                    "from":"ipfs",                  //source orgin
                    "origin":"web3.storage",        //where to storage
                }
                "protocol":{
                    "fmt":"data",
                    "type":"json",
                    "tpl":"inft",
                },
                "pre":0
            },
            "block":0,                                  //block number of Substrate Network where the iNFT data on
            "hash":"BLOCK_HASH_OF_ANCHOR_NETWORK",      //optional ,target block hash
            "signer":"SIGNER_ON_SUBSTRATE",
        }

Resource

More Video

inft's People

Contributors

ff13dfly avatar xushizhao avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.