My Coding Journey: Beginner to Pro

Day 16:

  • Added whitelist crowdsale tests.

  • All tests pass.

  • Completed level 8 in Ethernaut.

  • TODO: Add refundable smart contract features to the crowdsale contract and test.

1 Like

Day 17:

  • Created a guide on how to install Windows Subsystem for Linux (WSL) on Windows 10 on the OpenZeppelin forum. In case you’re wondering, everything still works.

  • Added the RefundablePostDeliveryCrowdsale contract to MyCrowdsale. No testing added yet.

Quick note: when using both a capped crowdsale and refundable crowdsale that takes a goal as a constructor parameter, make sure to require the goal be set below the cap. :wink:

  • Started the DeFi 101 course in the Ivan on Tech Academy.

  • Learned about flipping NFTs from a Bankless article by Ryan Sean Adams. More research needed.

Day 18: Oh man…

So I dove into the deep end of NFTs… and there was no lifeguard on duty. (Honestly, I think I was under a little too long. :wink:)

  • Found some incredible resources on the topic of NFT use and trading by Matty from dclblogger and an article by 3xhuman.

  • Added the refundable crowdsale features to MyCrowdsale and ran tests. (RefundablePostDeliveryCrowdsale more specifically.)

  • All tests pass!

  • Completed Ethernaut level 9: King

Day 19:

  • Added a Pre-ICO and Main ICO phase to the MyCrowdsale. Added testing for the different token rates applied for each of these phases.

  • All test pass! Though more extensive testing would be required for any production use. However, this case is solely for personal education and development experience.

  • Completed Ethernaut level 10: Re-entrancy.

  • Read the first chapter in “The Changing World Order” by Ray Dalio. It’s an ongoing LinkedIn series of articles about the rise and fall of empires over time by economic, financial, and military means. As he suggests in the article, “With that perspective in mind [one of repeating cycles throughout history], we can attempt to squint into the future.”

1 Like

Day 20:

  • Added finalization logic to the crowdsale to renounce the minter role so no new tokens can be minted once the crowdsale is finished. Finalization also unpauses the tokens so they can be transferred after the crowdsale ends.

  • All tests pass!

  • Introduced an artist I know to the crypto art space I recently found myself. Helping her update her website and online presence to be more active in the space. She specializes in fractal art. Check out the Dusty Rose Collection to see what it’s all about!

  • Completed Ethernaut level 11: Elevator.

1 Like

Day 21:

  • Added an arbitrary token distribution to the crowdsale.

  • Completed the DeFi 101 course in the Ivan on Tech Academy.

  • Tinkered with a local DSR (Dai Savings Rate) demo.

  • Read an OpenZeppelin article about exploiting Uniswap after hearing about the imBTC attack.

TODO: Add token vesting and token time locking. Already have some good examples thanks to @abcoathup!

1 Like

Day 22:

  • Completed and deployed crowdsale to the Ropsten testnet.

  • Explored the OpenZeppelin CLI SDK documentation and completed the steps outlined.

  • Started the Crypto & Privacy Coins course in Ivan on Tech Academy.

TODO: Flash loans

1 Like

Day 23:

  • Read chapter 2 of Ray Dalio’s “The Changing World Order” on LinkedIn.

  • Helped an artist friend tokenize some of their art using Rarible.com.

  • Completed Ethernaut level 12: Privacy.

  • Found a couple templates to fork for flash loans thanks to @Austin-Williams and a friend, MattPrime, in the Dapp University slack.

1 Like

The dragonfly looks interesting.

I recommend watching Flash-Mintable Asset-Backed Tokens and having a look at the code: (more goodness from Austin)

1 Like

It’s pretty neat. She mainly does abstract fractal art. I don’t really know anything about art :sweat_smile:, but I’ve been seeing a lot of animated fractal art on crypto art platforms like SuperRare and MakersPlace. Other stuff too of course, but seemed to fit her style somewhat.

I saw that thanks to the banner on the forum. It’s partially why I decided to focus on flash loans. Flash-Mintable tokens sound awesome! I hope at least one exchange starts using it soon since it sounds like we only need one to implement it for it to be used in the rest of the space.

Familiarity with flash loans will surely be useful when that happens. It’s too cool an idea for everyone in DeFi to reject it for long. :sunglasses:

1 Like

Day 24:

  • Successfully performed a flashloan on the Ropsten testnet using the Aave documentation as a guide. Easier than expected using Remix, so time to start tinkering with a local environments and additional functionality.

  • Completed Ethernaut level 13: Gatekeeper One. I found this one to be significantly more challenging than level 12 despite having a lower difficulty rating.

  • Read the Uniswap v2 whitepaper. Flash swaps and ERC20-ERC20 pairs should be popular additions. Personally happy to see it’ll be written in Solidity instead of Vyper, like v1 is, as I’m not yet familiar with it or Python.

  • Found a short tutorial on how to create a PoE (Proof of Existence) blockchain on Substrate using Rust, so gave that a go. I underestimated the tutorial as I have zero knowledge of Substrate or the Rust programming language. It was short, but gave my brain growing pains. :sweat_smile:

1 Like

Hi @Jshanks21,

Congratulations on performing a flash loan on Ropsten. :clap:

I think the Gatekeeper levels are challenging.

I didn’t realize that Uniswap v2 was in Solidity. Nice.

It will be interesting to see what products get built on top of substrate. I have zero Rust and Substrate knowledge.

1 Like

Day 25:

  • Used the money legos package to make a Uniswap trade on the Ropsten testnet.

  • Started a new project to create a simplified liquidity pool exchange.

  • Successfully made a flashloan on the Kovan testnet using the flashloan Truffle box.

  • Completed Ethernaut level 14: Gatekeeper Two.

1 Like

Day 26:

  • Completed the EthSwap exchange for testnet use. All functionality and basic UI/UX is there, though it’s bare-bones compared to a real use case. Need to put it on Github for testnet use.

  • Done lots and lots of research on flash loans and interacting with DeFi exchanges with scripts and smart contracts.

  • Was introduced to an engaging tutorial for developing dapps with a focus on fast product iteration. Check out scaffold-eth.

  • Completed Ethernaut level 15: Naught Coin.

1 Like

Austin Griffith is awesome. I have CryptoTogs (one of their early projects).


For Flash loans, I highly recommend watching the following video:

1 Like

Yeah, he’s been really supportive on Twitter asking if I need help. I’m going to try out his Eth.build project over the next few days. It looks really cool. Very visually interactive.

I really love how supportive and friendly the dev side of crypto is. Seems to counteract the negative of some traders and more money-driven actors in the space.

That was a great video by the way! How likely or how long do you think before we start seeing flash-mintable tokens in the wild?

1 Like

Day 27:

  • Started building an NFT. Not sure what it’ll ultimately lead to.

  • Started going through the ETH.BUILD tutorials. It’s a really visually interactive way to see how things work under the hood.

  • Completed Ethernaut level 16: Preservation.

  • Found an interesting extension to the ERC-721 standard with ERC-998. What if a digital asset held its own assets? And what if those assets had an interest-earning wrapper like rDAI? Oh the possibilities…

Uniswap V2 includes Flash Swaps so I believe that we will see more Flash in the ecosystem before too long. Flash loans/minted tokens/swaps means that assumptions around behavior of whales will no longer apply. (there are a number of Flash posts: https://forum.openzeppelin.com/tag/flash-loan)

@Proteu5 has been building NFTs too. There might be potential to share ideas and lessons learnt.

I think ERC721PresetMinterPauserAutoId is a great place to start. Other than potentially adding functionality to change the base URI (which if you use a domain name you could do by changing where the domain name points to, so don’t need to change it in the smart contract), it covers what I have used in the past.

NFTs owning assets is an interesting idea. I recall that @Nick_Mudge was working on EIP-998 and doing experiments with NFTs owning NFTs.

1 Like

That makes total sense regarding seeing more Flash in the ecosystem as various platforms integrate it. Just a matter of time.

Thank you for the resources @abcoathup! I’ll definitely check out the ERC721PresetMinterPauserAutoId, and reach out to @Proteu5. I’ve already learned a lot by reading through his coding journey, so I hope I can return the favor. It’s always nice to find someone who shares the same obsession.

Btw someone from the onemilliondevs forum reached out to me on Twitter because they saw my coding journey on there. Thanks for linking me there! I didn’t even know there was a forum for this. I’ll start adding there too.

1 Like

Hi @Jshanks21,

I love reading the coding journeys and encourage people to read them and even write their own.

I have drafted a tutorial that is still very much a work in progress for creating an NFT: [DRAFT] Create an NFT and deploy to a public testnet, using Truffle. Feedback is appreciated.

It is early days for the onemilliondevs forum, you might find one or two of my posts there :smile:.
It is nice to see different experiments of growing the developer community.

1 Like