Vipin Bharathan  Dec 30, 2021, New York.

Project Meetings

neferti is a project in Hyperledger labs. Hyperledger labs is an open source code community with a low barrier to entry. Any and all are welcome to join and contribute to the lab. The lab maintainers will be the governors. neferti plans a low-code and highly secure implementation to create ecosystems for issuing and trading NFTs, in a protocol agnostic way. neferti code will address market place utilities for issuance and trading of NFTs. neferti implementation will allow for extensibility and openness. An initial reference Hyperledger Fabric implementation is planned. 

An NFT, as many already know, is an acronym for Non Fungible Token. A token is a digital or physical object that stands for something else. Tokens must be issued following a strict process, there must be easy ways to verify that a token is a legitimate representation of value. The object that a token stands for can be digital or analog. Key to the definition of an NFT, is fungibility. Fungibility is a property for units of commodity or a good to be interchangeable. USD is fungible, gold of the same purity and composition is fungible. Fungibility needs a measure, a unit of currency, a gram of gold, a barrel of oil, one share of IBM. Fungibility hinges on the indistinguishability of such units. When examined closely Fungibility itself is a spectrum, sometimes limited by taint, by geography, by the number of units. 

In NFT, the definition of fungibility is negated; that is, each token is unique and one cannot be exchanged for another.

Fractionalization is a closely related concept, in most implementations of NFT, tokens cannot be fractionalized. If fractionalion is available, then fractions of the same NFT token are fungible; another related topic is the concept of tokens of the same kind; an example used is skins in a game, there may be many copies of a skin that is fungible as long as certain elements of the meta-data match. This is the idea behind ERC-1155.

A software system for the creation and trading for NFTs has to account for a way to tie the NFT to the unique object at issuance (Identity, authorization and a global registry); a marketplace for trading NFTs, which means establishing a price for the NFT as well as means to transfer ownership. An implementation of these actions through interfaces supported by NFT token attributes and metadata.

Reuse is one of the defining characteristics of software development, the following is proposed. 

  • Adopt a token standard (a combination of the TTF and ERC- inspired standards)  
  • Implement a marketplace (recode samples )
  • Use Hyperledger Fabric as the underlying utility. See how ERC standards have been implemented in Fabric.
  • A complex systems view (Identity, distribution, decentralization, fairness, payment systems, cross-border, multi-protocol, interoperability of tokens, standards)- See under extensions.

As Ethereum has been the main driver of NFTs, standards are most mature in EIPs (Ethereum Improvement Proposals). These standards have been implemented in Open Zeppelin and in other locations. Three standards are of note in NFTs: ERC 721, ERC-1155 and ERC 998.  Of this ERC-721 is most commonly used. The implementation of eThaler as ERC-1155 in Hyperledger labs and its subsequent reuse in the Climate Accounting project means that these standards are mappable to Hyperledger projects like Fabric.

Extension, or even thoughts before current implementation:

  1. Can this infrastructure be flexible enough to define and issue different kinds of NFTs that conform to different standards?
  2. Can a multi-protocol approach work (this is considerably more difficult as it involves creating smart contracts in different protocols)- What about WASM approaches (investigate Solang HL Lab)
  3. Interoperability of NFTs can NFT issued on one protocol move to another? Be paid for in another
  4. Oracles that underlie NFTs.
  5. Submarining- Is this relevant for non-IPFS storage mechanisms?
  6. Other damping mechanisms- A governor or clamping mechanism with a circuit breaker for extreme events
  7. Incorporate AI and XR in the stack
  8. Handle Current limitations of Web3 implementations (Moxie M)

    • "Design systems that can distribute trust without having to distribute infrastructure." . All data to be in distributed infrastructure (In Fabric this can be Private Data Collections)
    • "Reduce the burden of building software." - No code platform....A smart contract generator, for Go implementations first.
    • A generic issuer front end.
    • A wallet front end for transfers (not tied to a particular access point)
    • Platforms vs Protocols.
    • Avoid the worst of both worlds: "centralize to control, decentralize to reduce speed of change".
    • Wallets need interfaces to decentralized data without having to rely on a centralized intermediary.

Volunteers

NameTZSkillsgithub handle if anyCommitterSectionCommentCommitment
ESTcode, design(architecture, requirements, UX), written and oral presentationhttps://github.com/vipinsunYoverall, fullstackneferti lab5 hrs average a week
Alfonso GovelaUTC-6strategy, design, use cases, business requirements, written and oral presentation

https://github.com/AlfonsoGovela


overall, functionality

My expertise is in architecture, cities, real estate & construction. My Interest in creative arts at metaverse.5 hrs average a week
Andrea FrosininiCETUse cases, business requirements written and oral presentation.

functionality
3-4 hours a week
UTC-3?codehttps://github.com/salimbeneYsmart contractsERC-721
GMTArchitect, Token engineer & Analysthttps://github.com/ubuku
Overall
2-3 hrs a week
rajesh rlnSGTcodehttps://github.com/RLNRAJESHIN


2-3 hrs a week
ISTDesign, Architecture, Use cases & presentation  https://github.com/knagware9YOverall
2-3 hrs a week
Igor KrupczynskiGMTBusiness development, marketing, graphic designhttps://github.com/igorkrumYOverall
2-3 hours a week
Mark RakhmilevichPSTarchitecture, requirements, UX, written and oral presentation

https://github.com/mrakhmilevich


overallautomatic code gen (Go, Typescript) in Oracle Blockchain App Builder for TTF-based FTs2-3 hours a week
Bobbi MuscaraESTCommunity Builder, Project Manager, Traininghttps://github.com/bobbi28
OverallDocumentation, Training , Project Management2-3 hours
Niku SinghISTCode, Graphic Design, Content Writerhttps://github.com/NIKU-SINGH


3-4 hours a week
Gourav SarkarISTArchitecture, use cases, user experience, presentation

Overall

2 hours a week

ESTCode, Contract Design and Framework (architecture, requirements, TTF)https://github.com/sandywalls
TBDI come in from a bank tech background but lately more interested in gametech. Please join MESIG - Gaming Subgroup if interested.2-3 hours a week
Sanjay Kumar KISTResearch, design, code, and content writing. https://github.com/ksanjaykumar1
Overall
3 hours a week
JTCode (Go), requirements and design review, testing, documentation. https://github.com/gatmac
TBD
4-6 hrs / wk
Yong WanUTC-8code, architecture, requirements, UX, Use Case and presentationhttps://github.com/wan-yong
OverallI have done a NFT demo in China local Fabric Community this Month. GitHub - wan-yong/nft-erc721: Mint the NFT with Hyperledger Fabric - erc721 token 5 hrs average a week
Maria MunaroUTC-3code, architecture, testing, requirements, use caseshttps://github.com/munapower 
TBD

Diagrams


LINKS

Web3

ERC 721

https://github.com/hyperledger/fabric-samples/tree/main/token-erc-721

https://github.com/hyperledger/fabric-samples/tree/main/token-erc-1155

https://github.com/hyperledger-labs/fabric-token-sdk


Data on the Blockchain

https://www.linkedin.com/posts/jrigler_bsv-activity-6896982664121860097-Q48L

https://github.com/johnrigler/bsv_write_bitcom

NFT issues

https://blockworks.co/wash-trading-which-inflates-nft-prices-growing-area-of-concern-for-traders/

Skins 

https://www.wraptokens.com

Storage Solutions

cost of ipfs storage

https://ethereum.stackexchange.com/questions/61100/how-much-does-it-cost-to-store-each-ipfs-hash-in-ethereum-blockchain

cost of storj storage




  • No labels

91 Comments

  1. Thank you Vipin for writing this proposal. I am ready to contribute, and to engage our Hyperledger Laltinoamerica Regional Chapter

  2. I'm interested, already working on an NFT implementation on fabric based on ERC-721.

    1. It is great to hear... How far are you? Is your code open-sourced under Apache or some other Labs compatible license and signed off with DCO (developer Certificate of Origin)

      1. Not yet. I'm working on porting the current code available in the fabric-samples to golang (currently only available in js). Once I got that working I'll start customizing it to the needs of our project. Not public at the moment, I'll review that with my employer.

        1. What Fabric sample are you basing this on?

            1. Thanks! I can put this as a source. If you come up with an open source golang implementation…

              1. Can I be a contributor I share an open-source golang implementation of the same contract? Not sure If there's a process to propose contribution and so forth.

                1. I will be creating a lab and you can be one of the maintainers

                  1. Please send me your github user link since that is needed. Matias Damian Salimbene

                    1. hey, my github user is @salimbene 

                      1. How far you with the conversion to go? Even if you cannot contribute this to OSS can we ask you more about it?

  3. Good proposal for a project

  4. See Moxie Marlinspike's thoughts on the subject: A very interesting read.

    https://moxie.org/2022/01/07/web3-first-impressions.html

    Although the blog is about Web3 in general, Moxie makes points about NFTs which he takes as representatives of the Web3 ethos. His main point is the lack of cryptographic and hence trust participation from the edge, and how that make decentralisation difficult. Moxie's main point is the lack of such glue that makes for recentralisation in the hands of those intermediaries.

    According to him: two problems need to be addressed for NFTs.

    1. Hashing content and putting hash on BC (we are not talking about just IPFS hashes)
    2. How do you get away from a prematurely baked ERC-721? 

    Of course, he raises questions about Web3, mostly to do with its claim to decentralization...

    Since he is a founder of Signal and a well known cryptographer, he sees farther than most.

    He also did some awesome work in NFTs, mostly to do with the way the NFT is displayed (in other words a skin that is client specific), now we could extend this further to a user specific view- This already happens for NFTs like houses....

    Another on collective work built like a pyramid scheme (I believe he is making a point)- Autonomous Art (https://autonomous.graphics/)

    He also has stuff on NFT derivatives. https://firstderivative.market/

    These are experiments to stretch the space and discover challenges or weaknesses.


    1. nice read indeed, thanks for sharing

      1. Agree with you Matias Damian Salimbene it is a good read. Thank you Vipin Bharathan for sharing. My comments about the paper below

    2. Agree with you Vipin Bharathan two problems need to be addressed for NFTs:

      1. Proper hashing for security, and verification, of content stored out of BC,
      2. "Prematurely baked" ERC721 need complements for missing issues like royalties, and others. 

      The issue of a "skin" is relevant, as well as context and connection to the real world. Let's look at Rohas Nagpal's work on WRAP, Wrapped Asset Project, https://www.wraptokens.com

      Moxie Marlinspike's challenges on Web3 are definitely worth considering for the broader space of our project. In particular:

      • Platforms are new intermediaries of decentralization.
      • The paradox of efficiency and evolution might bring the danger of the worst of two worlds: "centralize to control, decentralize to reduce speed of change".
      • Wallets need to do complex things, beyond being only a view onto centralized data.

      We should keep in mind his "basic thoughts" as he calls them:

      • "Design systems that can distribute trust without having to distribute infrastructure."
      • "Reduce the burden of building software."
      1. Great Summary…We will absorb some of this into our submission

  5. Hope to submit a lab proposal by the EOW.

    Sponsors: Andrea Frosinini, Alfonso Govela et. al.

    Maintainers:

    Matias Damian Salimbene

    Vipin Bharathan


    Anyone else who wants to join are welcome...

    1. OK, fingers crossed!

    2. Vipin Bharathan , I am interested in this project.

    3. Great. I would like to collaborate. Please put me on the list. Thank you

  6. Vipin Bharathan  Great initiative. You can add me to sponsors list. Happy to collaborate.

  7. I've ported the code in https://github.com/hyperledger/fabric-samples/tree/main/token-erc-721 that's in JS, to golang. I'm currently testing the code. Once it's good to go, does anyone knows how should I proceed to contribute it? 

    1. We will hold a meeting on the 26 to discuss. By then, we will have a lab…hopefully

  8. For this project to be useful we probably need full stack development. I will try to do an architecture diagram that lays it out.

  9. Great initiative.  We are already seeing interest in NFTs on Fabric in Oracle customers.  We have built FT support with automatic code generation for token lifecycle based on TTF model, and are looking at NFTs as well based on a mix of TTF and ERC-721 specs.  Looking forward to participating in this effort.

    1. Is the code generator open sourced? Is the generation based on TTF formula? Or a mix of a formula and some parametrization?

      1. It's not open sourced currently.  It's combining TTF foundation and parameters from a spec file, that looks like this.  It includes TTF behaviors and relevant properties, as well as custom properties and methods.

        1. I like this approach. However we can see how this can be extended.

          1. Can we choose a protocol?
          2. Can we choose a token standard?
          3. Can we automatically generate smart contracts based on this?
          4. All of this needs a testnet for the chosen protocol...plus a webapp that puts out a website or some such interface...which interacts with chosen protocol, a command line interface and JSON is the most difficult for adoption.
          5. Start with
            1.  Fabric managed through minifabric
            2.  ERC-721 variants for Go 
            3. Webapp in go or node and an SPA variant or a react front end
            4. Look for a place to run testnet (since that costs money)
            5. Expand to ERC-1155 and other variants
            6. Try to decentralize and have a rudimentary ID management system (which means no centralized storage in the control of a single org) If we use private data collections then we have to have ways to expand the participants. Other ideas a DHT like IPFS (costs money), other ways of distributing the stored data (storj?) with inbuilt privacy.
        2. Is this generator based on metaprogramming in Go using go-generate or some other language that is friendlier to metaprogramming like C++ templates or some other language.

          Our challenge will be to generate different smart contracts for different platforms, with the acceptance of basic parameters conforming to ERC-721 (to start).

          Will that need a metaprogram (or a generative program) written in language x, that uses a template written in language y joined with user input (highly constrained- for example for ERC-721) to generate smart contracts in y? For now let us assume that y can be Go(y1 or yGo) based smart contracts for Fabric and solidity (y2 or ySolidity) based Smart Contracts for Besu. Let us discuss these options on Jan 26th.

          1. You wrote "Dec 26th". Is it January 26 when we have the meeting?

            1. Thanks for the catch, I have modified the text. I am living in the past!

          2. Our core App Builder is written in Typescript. This also includes the generator and templating engine. We are using a 3rd party TS library called ‘yeoman-generators’ to generate a bunch of files. These set of files could be in any language, it is just treated as files, so we can generate different language chaincodes. Currently we generate Go and Typescript.  The generator engine has the flexibility to generate complex projects if required, i.e. it can simply copy a bunch of boilerplate files or it can be more advanced to scaffold a tailor made project by using templating.

            1. I see that the TS library for Yeoman is a scaffolding with a bunch of generators for different files. Some of these generators seem to be open source. I will take a look. Is the scaffolding open source?

  10. Igor Krupczynski rajesh rln Andrea Frosinini Kamlesh Nagware Alfonso Govela Matias Damian Salimbene please expand on the table I have started in the proposal, so that we can get people to contribute based on their skills/interest and availability. We will have about 30 minutes in the next US/Europe call to expand on this. I will write a lab proposal and add any of you as maintainers of the NIFTY lab. We can of course add maintainers and contributors depending on Interest and availability...

  11. I have modified the name to neferti

    Motivation:

    People have been cautioning me about the name of the lab and branding, although I came up with it independently.

    There is a platform for nfts that has the same or similar name and is very successful.
    Even though our lab is not conceived as a platform for nfts, but an open framework geared to generating a platform in a multi-protocol world. Additionally we hope to create an ecosystem which can generate a front-to-back infrastructure that decentralizes even the middle ware.

    At first I dismissed branding concerns, but now I believe that we should address this ambiguity at the outset since changing names later would be difficult.
    Accordingly, I now propose a new name for the lab "neferti".
    I will create a new name for the lab and push it out, while proposing the deletion of the old name. Everything else about the lab will remain the same for now.
    I will complete this work before the weekend is over. Please let me know if you see any serious collisions with this name, or if you have any other comments or suggestions.

    1. Ideas from me:

      Hyperledger UNIQUE
      Hyperledger UNIFT
      Hyperledger UNI
      Hyperledger UNFT

      Hyperledger NFT
      Hyperledger NFTIQUE

  12. Some quick ideas

    Tokens
    TKNs
    HLTokens
    ToV, Tokens of Value

    NFTk
    NFTkn
    NFTkns
    NFTware

    NoFu
    NoFuTo
    NonFun
    NonFunTok

    NFTeco
    NFTecosys

    I like Tokens and NFTware

    1. My favours go to 

      NFTecosys

      NFTware


      They give me the idea of "system" or "ecosystem" Alfonso Govela

  13. Was talking with a friend and apparently NEFERTI was how the word Nefarious came to be. Nefertiti was a wicked ruler that earned that name. 

    1. Fake news : https://www.etymonline.com/word/nefarious Terexitarious please check before you post. It is easy enough. Your friend is wrong!!!

      From Latin nefārius (execrable, abominable), from nefās (something contrary to divine law, an impious deed, sin, crime), from ne- (not) + fās (the dictates of religion, divine law), which is related to Latin for (I speak, I say) and cognate to Ancient Greek φημί (phēmí, I say).

      Nefarious has no connection to nefertiti : https://en.wikipedia.org/wiki/Nefertiti whose etymology is "The Beautiful Woman has Come" - not a wicked ruler, in fact it is not even clear that she was a ruler.

      Nor neferti who is another person: https://en.wikipedia.org/wiki/Prophecy_of_Neferti



  14. Can I be a part of this, I can help with some designs and Frontend as well, are there any prerequisites to contribute to code?

    1. Pls add your name to the volunteer list. Would like you to look into generators if you are interested. Look at comments by Mark Rakhmilevich above.

  15. The lab has been created. If anyone is interested in being a committer please ask.I will start migrating docs and design ideas into the lab. Also any code that we have.

    ATM it is only Matias Damian Salimbene and I who are committers, I have since added Kamlesh Nagware Others who have given their git hub handles like Bobbi Muscara and Niku Singh are not members of the organization Hyperledger-labs, if you want to be members then I can ask Ry Jones to add you

    1. I have updated my git hub handles and could you add me to Hyperledger Labs.

    2. Yes, I would like to be a member of Hyperledger labs :)

  16. It's a great initiative. I would like to be a part of this journey. I can help with design, architecture, user experience, use cases & presentation.  

    1. Pls enter your name in the table in the main section above…

  17. Vipin Bharathan , Are you planning to have any kickstart meeting to discuss how to progress on this...

  18. Can you organize one rajesh rln ? I can help with this.

    1. Sure, I will try to organise it.  Any preferred  timings.

      1. rajesh rln Usually, we use doodle poll for this. There may be problems with organizing a zoom call with all participants as they are scattered across the globe.

        I will try to guess/fix peoples timezone.

        Igor Krupczynski GMT

        rajesh rln IST?

        Kamlesh Nagware IST

        Vipin Bharathan EST

        Mark Rakhmilevich EST?

        Niku Singh IST

        Bobbi Muscara EST

        Alfonso Govela UTC -6?

        Andrea Frosinini CET

        Matias Damian Salimbene UTC - 3?

        Gourav Sarkar IST

        I have added a column to the table above...


        In terms of people, most are from IST. The second is EST. South American timezone is very close.

        We could create a doodle poll-

        My times are Wed the second 9:00 am to 10: am EST, we can have others add time.

        The development of an Agenda and a workplan is the real aim.

        I would say the following are the main items in the workplan.

        Items in workplan could be driven by github issues

        a. Github administrative and required docs also needed for public discoverability (readme.md, contributors.md and other items)- A doc folder which can integrate with the repository- we need volunteers for this

        b. A design document with the main and short term goals sketched out.

        c. What can we re-use? In other HL labs and projects?

        d. What will we tackle?

        ERC721-1155 like templates and generators?

        Cryptographic and storage mechanisms?

        Operationalizing with testnet/sandbox approach?


        1. My time zone is GMT. 
          I'm available 
          Monday, Tuesday, Thursday - 9:00 am to 10:00 am EST

        2. Alfonso Govela UTC-6

        3. Vipin Bharathan , Based on the timings shared,  I think we can have a kickstart meeting on 3rd Feb between 9:00 am to 10:00 am EST.  I will send out zoom host access request and will send out the meeting invite. Should I need to send out only to the participants in the table or to every one.

          1. Maybe too soon, but we can start with whoever is there.

            1. Yes, too soon, but  I shall be there. Can we doodle alternative dates for an official schedule?

  19. I have asked for Ry Jones (our admin) to add



    And maybe
    https://github.com/mrakhmilevich


    To the hyperledger-labs organization so that I can add them as members to neferti.

    I will start adding a project kanban board so that we can work on items simultaneously

  20. Can you please add me to the hyperledger-labs organization

    https://github.com/AlfonsoGovela

    Thank you Vipin

  21. Here is something we could include in our business requirements:

    Mini steps to foster higher degree of trust in NFT trading and interoperability.

    Sorry if I'm repeating stuff which might have already been covered in prev points. I'll take time to review prior comments and material hitherto over the weekend. 

  22. Check this out.. 

    John Rigler shares his insights on putting image data directly onto the blockchain. This is in contrast to other platforms where you are trading a pointer to the data.

    https://www.linkedin.com/posts/jrigler_bsv-activity-6896982664121860097-Q48L

    https://github.com/johnrigler/bsv_write_bitcom


    1. John Rigler appears to have shared ways of putting data directly on the blockchain.

      However, there does not seem to be any insights into why. Am I reading this wrong?

      Some of the obvious problems

      1. Privacy (unless the files are encrypted, in which case there would be a key management problem) the key management problem exists anyway, even if data is stored offline
      2. Blockchain bloat
      3. In some instances (if the files are huge) there could be high fees
      1. Vipin - I agree with the potential issues you mention but that's exactly what we need to figure out. How do we prevent these issues while making the relevant and contextual data available on the blockchain rather than just the hash pointing to someplace which may become unavailable. The primary way most NFT tokens work today AFAIK, is by saving the hash of the given digitized product (which could be an image file, a music or video file or even a physical object) on chain. Yes if there is any change in the definition of this digitalized object, the hash will change. Now the question is how and where do you save all meta data about this object without running into the issues you mentioned above (correctly). The options I guess are either cloud or decentralized storage but then we run into other security, latency and composability issues. 

        I just shared this post above as reading material and to bring up this discussion of pros & cons, not to suggest that we should be doing the same. Hoping to delve into further details. Thanks.

        1. So in a sense the main challenge is availability of the data after it is segregated. The main argument for storing the data on the blockchain is guaranteed availability. We will be featuring a talk on the Identity Working Group on the 16th of Feb at noon about microledgers. Microledgers are a portable data container which is agnostic about where it is stored or shared. Although this does not address the issue of availability directly, it helps us understand the guarantees for a properly constructed portable data container (in other words, the semantics of storing or transporting data along with its attestations). These are called Authentic Chain Data Containers. 

          1. Thanks Vipin. I'll attend this upcoming session to learn more about this. 

  23. May I have a link for the code repo in hyperledger-labs?

  24. I missed the last meeting. Where do you publish information about the meetings? Vipin Bharathan

  25. Look at the top, project meetings. Time to have another, since there is not much activity since our last. Actually better would be to develop a project plan for the initial bootstrap before this. I have not had time to devote to neferti, but will soon.

    1. Hey, Vipin Bharathan I created a PR (link) with some initial docs for the lab, could you review it and give feedback on it. 

      1. I will take a look... Have been busy with other items

      2. I have merged them in as you might have noticed

  26. Just FYI, sharing info on the Palm Network Community DAO. 

    https://medium.com/@Palmnetwork/launching-palm-networks-community-dao-d8dcd1c30cef 


    There was a presentation done by Palm's Chief Content Officer, Matt Mason, back in July '21.

    Introducing Palm NFT Studio- 

  27. Vipin BharathanI have done a meetup in China Community. A simple NFT demo was done using token-erc721 code example. https://github.com/wan-yong/nft-erc721 Hope that I am not late for your project.

    1. Not at all! We are doing a meta project

      1. Thx for ur reply. I put my name on the group list. Let's go ahead.

        1. Great, Shall I ask for your inclusion in the Hyperledger Labs organization, preparing for you to contribute...

          1. Yes, my pleasure.

  28. Hey Vipin Bharathan - do we have a Discord channel for this lab? Perhaps we can get one started. Thanks

    1. I wanted to ask you the same thing. I think it will be easier to communicate there. Let me know if you want me to set it up.

      1. Yes! Also the bot told me that "If you are a maintainer of a project, please link your GitHub ID to your discord profile to help us assign roles. " Dont know how to link GithubID to discord profile in HL discord. I do have 2FA.

    1. Thanks - we are in!

      1. I am in (I was in) however seems like I have multiple-personality disorder on discord.

    2. So who sets roles like SIG_Leader COmmunity_Leader Lab_leader etc on discord? Or are they automatically discovered?