Saturday, March 20, 2021

ERC-721 Developer Environment

Greetings,

I have been a coder for 26 years and I would like to dabble in NFT tech. I'm not new to crypto, even had one of the first ASIC machines for mining bitcoin. I have read the classics, ERC-20, ERC-165, ERC-721, ERC-777, ERC-1155. They all make sense and I understand how everything is implemented but I have some final questions before I spin up work.

My last experience with eth dev was directly compiling ethereum-cpp and the mist wallet for my local development chain, and deploying contracts with geth, if I recall correctly. Today there are many more tools available so hopefully you can double-check my assumptions.

Question 1 (the most important): What is the best open source ERC-721 implementation available?

I found the OpenZeppelin contracts (https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token) and as far as I can tell these would be the best place to start, hopefully bug-free. My end goal though is to create an auction site, similar to Open Sea or some of the other NFT sites. Is OpenZeppelin a good place to start or are there other well-tested, robust contract code I'm not aware of?

Question 2: Check my stack?

I'm all about the best tools for the right job, it always makes building complicated things that much easier. Here is my current stack, please review and let me know if and how I could improve, thanks!

  • I'm Windows based for .NET development but I could easily run Linux or OSX.
  • For an IDE I've selected Atom with EtherAtom support for editing solidity files.
  • For a development chain I'll be using Ganache locally, Ropsten for QA and then mainnet for PROD.
  • It looks like I can use Infura to hook into the blockchain for alerts about my contracts so I will start there. An event example is someone creating a new NFT via my contract, or two users swapping ownership of an NFT.
  • Alternatively it looks like I can also subscribe to blockchain events using geth. Assuming I want updates about contract events, any downside to running a geth client as a service and connecting it directly to the mainnet? Or should I run my own node for stability and uptime?
  • I may get some flak for this one, but I'll be doing a .NET MVC frontend, possibly with a react thin-client for DOM manipulation but without routing. I know you young whipper-snappers love the SPAs but I find they lack agility (specific to features not performance) for running large websites. Let me know what you think though, and perhaps there are some better out-of-the box solutions that I can get started with?
  • Any advice on how to do automated testing for contracts on my dev chain? Specifically what are the best tools to script tests and run them after making changes?

I think those are my major questions / assumptions and I do appreciate your thorough feedback. Thanks again and let me know if I can help clarify anything.


No comments:

Post a Comment