This details how I learned to develop on blockchains. I recommend jumping to the summary at Part 9 first.
Part 1 đľď¸
Before I was committed to learning how to develop on these platforms, I started out with Crypto Zombies and Eth.Build.
Crypto Zombies
Eth.build
While I didnât understand too much of what was going on, what I was doing was familiarizing myself with the Solidity language and seeing how it interacted with the Ethereum blockchain. Austin Griffithâs Eth.build gave me a look at how the magic of private and public keys can be used to do all kinds of amazing things. However, I was far from being able to do anything.
Part 2 đ¨âđ
At some point I stopped being only mildly interested and decided I wanted to build a project and that I would find out how. I had to dive into the water.
At this stage, I learned primarily by using parts of these two tutorials [There were actually 3, the 3rd one did not make the cut].
What I learned is that there are many working parts and you might as well be familiar with all of them.
Deploy an NFT smart contract on Polygon Tutorial
Deploy an NFT smart contract on Ethereum Tutorial
The issues I ran into while doing these forced me to do more research and understand more of what was going on.
I now understood that all of this stuff centers around my sacred Solidity contract and its functions.
I learned how to use Hardhat, which is like this barebones rickety spaceship you tweak a bit to get your solidity contract launched out there onto these blockchain networks, and Alchemy was a provider that could handle switching between blockchain networks for me. Pinata was the service that would hold my precious data, and IPFS was even more magic based on that same sweet sweet hashing technology, long live cryptography. OpenZeppelin were the guys writing all the code for ERC-721âs, the NFTs Iâm interested in, and all you had to do was import their code into your contract and push it out. I also learned that a few javascript scripts were all it took to call the functions Iâd created in my contracts.
Now I could get something pushed out and I knew some things that were going on, but I barely understand the logic of smart contracts. I figured out I could go to Etherscan and look at anyoneâs contracts I wanted [and that you want to scroll to the very bottom of them first, past all the imports]. Thanks to Crypto Zombies and some hands-on experience my brain was now starting to be able to read the code. These words in the top of functions, âPrivateâ and âPublicâ and similar words were starting to make sense. But there was no way I could write this stuff.
I wanted more, too. How could I get my code into a website? How could I build a functional project?
Part 3 đ¨âđť
I looked for more resources. I found Solidity by Example and dived in, working through the text and learning from the teacher in the associated video series.
Solidity by Example
This is what started to give me a true grasp of the language.
Then I found Austin Griffithâs ETH Scaffold. An amazing project. This project would set you up with an entire development âstudioâ, including a live front end [and so much more], and the ability to deploy these live. It made everything easier and was a one-stop solution from start to finish.
Ethereum Dev Speed Run
I was able to get this off the ground and finally see a project interact with the front-end website.
Part 4 đ§
There was just one problem I found. I didnât know React. I didnât understand these systems, and I wanted more control over the production process. I looked for more development tutorials, and one I found told me again that I should learn React. It recommended this video series, and I couldnât have been more interested.
React Tutorial
I think it was at this point that I realized, wow. Pretty much all of this live development usually revolves around node.js technology. I spent one long night on a quick refresh of that as well.
Node.js course
Part 5 đđĄ
This was the part where I felt like I was beginning to be able to see what might lay over a mountain of information and began to see a horizon in the distance.
I always save the best for last, and now went on to follow Alchemyâs excellent How to Create an NFT Tutorial. This is where all of this really started clicking for me. Now, I had seen and done some of this before. I knew how to deploy to hardhat. I had seen how React hooks plugged in functions to a live website. Now I got to see how this technology plugged into Web3.
Alchemy NFT Tutorial
Here I could see that real deployment of a full project would be possible. I also learned a few things. I learned that really, you donât need to worry about the front-end, ever, at all. For example, as it turns out, they set all this up so that your contract will generate an ABI with all your functions and thatâs what you plug into the front-end website. Easy.
Part 6 - Now â¨
Now Iâm here. I stumbled across a smart contract I wanted to fork and work with and play with. Iâve been wanting it to click in my mind, how simple this is. How it usually is, is as simple as writing a âgetâ function to get what I want, and a âsetâ function to set the state of something.Now Iâve gone back to the eth scaffold, which I may not end up using for my final front end, but I see now is an amazing, amazing tool to automatically and instantly give you access to all of your functions, to play with them and mess with any contract to your heartâs content.
Iâm at the point now where I can see there are all kinds of fun projects Iâm going to be able to build and Iâm crazy excited. The amount I can create in a day is rising exponentially as I start to grasp what Iâm doing. This seriously becomes a blast.
I still have questions to answer for myself, among some of the tops are,
âHow are people standardizing storing arrays of data on IPFS?â [Current assumption: The data is already stored. It has nothing to do with the blockchain.] [Update: Yes]
âHow do I generate NFTâs with random attributes?â [Current Assumption:Â A script is called by the front-end, created, hosted on IPFS, and then the metadata for that data is passed in as a variable to the mint function on the contract.] [[Update: Not unless youâre a psychopath]
[The following content was added at a later date]
Part 7 - Road to my Mastery of Solidity YouTube Playlist âđ
YouTube Playlist
Part 8
If youâre like me and you ran headfirst through all these tutorials, hitting walls and barely scraping by, and you survived until now, congratulations, now youâre gonna wanna kill me.
Youâve probably thought, why isnât any of this information condensed, why canât I find a single resource that has everything Iâm looking for in one place? Well, I finally found it. Itâs here at cryptodevhub.io
^^^^ the resource Iâve been looking for for countless months.
And the tools! The glorious, glorious tools! the tools
[Out of that list of tools, I am particularly fond of eth95.dev/ ]
Part 9
Looking at the journey I took from a different angle, here were the steps.
- In Part 1, I was pretty much wasting time in the sea of possibility, as in, I was reading about code I might never actually use. This was mostly an advanced form of procrastination.
- In Part 2, the most important part of this entire journey, what I was doing was I was proving to myself, giving evidence to my mind that launching an NFT project was possible. Iâve learned that instead of taking a long journey to get to the end, make a prototype project. Rush through something like a train with no brakes. This changes the experience so that the end of the project is no longer a possibility that your mind can convince you may never happen. It has already happened because you have already been there.
- In part 3, I now wanted to take this more seriously. I had a strong desire to know what I was doing. I had a real reason to learn and read about code that I knew I would use. Thatâs when Solidity By Example was not a boring and dead manuscript, it was the goldmine of usable practical code I needed to understand. The motivation and energy required to read the boring docs were generated by my previous step in part 2.
- In parts 4 through 6, I now had a baseline understanding from my own experience of my project, and I was now gaining exposure to the NFT development world and seeing how others were doing things. Most importantly I was not reinventing the wheel, and I was not using âjust any wayâ to do a part of the project. I was looking for the best ways I could find to do parts of a project. As I explored I found that different template projects out there were better or worse depending on what it was I wanted to make.
- At the end of part 6, I was asking the right questions, but the answers were hard to come by. What I was reaching was the information plateau for which I could see no higher. I came to see that most of what I could find [though I had a lot more resources after finding cryptodevhub.io] were existing setups that were highly customized already and language-specific [I now know this is called âopinionatedâ], and âenterprise-levelâ tutorials like Alchemyâs NFT project, which was mostly great except when it came to how they decided to go about minting an NFT in their front-end logic or providing an explanation to do anything simple. As I spent time at this plateau, I began to see that there were questions and processes I could not find answers to. This was the first time in my life when I realized the information wasnât there. I would not be surprised to learn that many devs in this space might not know how to work with a lot of this tech as it was intentionally designed, because the information is lacking.
- It was at this point that I was looking for these answers that I came to learn that some information is essentially insider knowledge. At this point, you should talk to people who have done it. [I am probably not that person because I almost certainly am not using your setup.]
Some words of advice from this moment in time, aside from the actual creation of art and learning, do not create a long workaround to solve a problem if itâs going to cost you several days. That is reinventing the wheel. Someone else has done it already, and that means you just need to find out they did it so it can take you a few minutes instead of a few days.
Unfortunately, there is no way around the hardest part of development is getting stuck on errors. Thereâs no way around this. Note that Hardhat breaks often and others have recommended not wasting time on phantom errors in hardhat. Make a new hardhat project and move your contract to it as soon as you get an error as your first troubleshoot every time. With errors, have patience, and if youâve been on it for too long, take a walk, get some fresh air and do something else. When programming, having access to games like Tetris or any game or activity that stimulates connections for play is often helpful.
Part 10 - NFT Platforms
A few of the main âNFT creation platformsâ Iâve discovered are here, though most I have not used myself. These will not so much teach you NFT development as they will give you a custom setup for a specific kind of NFT project.
Additional Advice đ¤đ
Itâs okay to not know how to do things. Try to do it. If you canât figure it out, if you canât find the answer, move on and try something else. Keep trying things until something works. Play.
All of this is less complicated than it seems on the surface. Once you know whatâs going on, a lot of this tech is stupidly simple to use.
Donât try to learn. Pick something you want to build, and start building it. I pretty much wasted a lot of time with crypto zombies because I wasnât trying to create something.
Donât rush. No matter how fast you go, your brain is going to have to process the information. It does the majority of this work while you sleep. If you load it up with too much information, it will laugh at you and discard the entire stack. Feed your brain with some information each day and allow it to cook. Itâs like cooking, information cooking. Mmm.
So remember, always cook your brain! đ¨âđł đ