Duration: 16 weeks
This is the hardest soliding bootcamp you will find! Although you will be coding solidity, the real aim of this course is not to teach you a new language but to teach you the foundations of Ethereum development and the Ethereum runtime. We assume you can figure out Solidity on your own. The real test is using it properly.
This course is broken into four modules: Essentials of full stack dapps, Blockchain security, EVM and assembly, and Design Patterns and Cryptography. You must complete this course first before taking the other courses.
Module 1: Token Protocols and Full Stack Apps
Build an ERC20 token sale with pricing determined by bonding curves. You will also learn every nook and cranny of the ERC20 protocol: decimals, minting, approvals, privilege escalation, transfer hooks, and the two ways to transfer tokens.
Put an ERC721 on OpenSea and store images on IPFS. Build a project that depends on ERC721Enumerable. You will make NFTs stakable to yield ERC20 tokens, and you will be build an exchange that mints NFTs when paid in ERC20 tokens. Like the previous week, you will come out of this understanding every last bit of the ERC721 protocol and implementation.
Master unit tests that not only assesses functionality, but also all the state transitions a smart contract can undergo. You will learn how to automatically catch mistakes and clean up your code with slither and solhint. You will implement mutation testing with hardhat to determine the quality of your tests and automatically catch corner cases you didn’t think of.
Here we will study the ERC1155 protocol and build a simple webapp game to practice integration with metamask.
Module 2: Security
You will complete dozens (yes dozens) of security exercises that will help you sniff out vulnerable design patterns instantly. This includes, but is not limited to, re-entrancy, arithmetic overflow, msg.value in a loop, insecure randomness, improper access controls, and gas griefing. We select problems from Damn Vulnerable DeFi, Capture the Ether, and Ethernaut that you now have the prerequisite knowledge for (nothing is more frustrating that trying to do a hack on a subject you haven’t studied before). But we also have a secret repository created just for RareSkills students that will test you on exercises you won’t find elsewhere online!
Module 3: Gas Optimization, Assembly Programming, and the EVM
Learn from the bestselling author of the Udemy courses on gas optimization and assembly programming. It’s not just enough to master Solidity. You must master the environment that it runs in: the Ethereum Virtual Machine. You will learn how the EVM actually conducts the transactions, stores information, and the protocols it uses to receive instructions. Students in this bootcamp get access to those courses for free.
You will do lots of Gas Optimization Puzzles and EVM puzzles. You will complete puzzles that require you to write raw bytecode to really drill your knowledge of the EVM. You will also work on the Ethernaut puzzles that aren’t hackable without understanding the storage layout. You will practice the problems in our Github repo here.
Build a non-trivial smart contract entirely in Yul (assembly). This is the hardest assignment you will have in the class. You will parse calldata without syntactic sugar for arguments, layout the storage word by word, and allocate the memory byte by byte. You’ll build a non-trivial and tested smart contract without any Solidity. Our students have universally said this is one of the hardest things they have ever done, but it’s also when they begin to earn the feeling of truly mastering ethereum smart contract development. This section is exceptionally challenging, some students require up to 4 weeks to complete it.
Module 4: Design Patterns
Now that you have the EVM under your belt, understanding proxy patterns will be a piece of cake. You will clearly understand the motivation behind EIP 1967, UUPS, and Transparent Upgradeable Proxies. You will also practice relevant hacking exercises to break incorrectly implemented proxy patterns. You will learn how to do these safely with the OpenZeppelin Hardhat plugin. You will also implement variations of EIP 1167 Minimal Proxy (or clones).
This week will study two upgrade patterns: metamorphic smart contracts and the diamond pattern. Although they are rarely used in practice, implementing them strongly enforces how the EVM works and also helps you be mindful that some widely believed limitations on smart contracts (e.g. immutability) are not actually true!
This week will focus on miscellaneous design patterns that don’t fall nicely into their own category. This includes multicall, merkle trees, bitmaps, commit reveal, multisignature wallets, leading zero addresses.
In this section you will learn how ECDSA (Elliptic Curve Digital Signature Algorithm) works and how it is used in smart contracts. You will also learn the surprising ways it breaks and what to do about it. You will hack custom smart contracts we deploy to the main net (and get a little cryptocurrency out of it!). You will also learn relevant design Solidity Course 4 patterns that depend on ECDSA signatures like EIP 712, ERC 20 Permit, Metatransactions (gasless transactions) and Relayers.
Before You Join
Although it is possible to do well in this course without any previous Solidity experience, you will have to spend considerably more time to get it done. Because we only accept 5 students per cohort, we give preference to students who already know Solidity. You still might be accepted without it, but it will be much harder
We strongly recommend you complete the following resources before you begin:
Actual coding experience. Before you can join, you will take a coding test of comparable difficulty to what other tech companies give. There will be 3 easy problems, and 2 medium problems. It’s a myth that web3 is a shortcut to the hard work you have to put into web2 to be a good developer. If you can’t get a traditional software job, it will be at least as hard to get a web3 software job.
Week 4 is going to be challenging if you have no experience with the front-end. You should already know how to use React js (or at least be exceptional at copying and pasting from Stackoverflow) to get through that week.
Cryptozombies. This free resource will step you through solidity in bite sized chunks.
Patrick Collin’s 32 hour course with freeCodeCamp. Don’t fall into the trap of watching this passively. For every hour you spend watching, you should spend at least an hour actually coding up the exercises.
Our intro to solidity video. If you are a fast learner, you’ll note that Solidity is pretty simple. Our video assumes you are fluent in another programming language, so we focus on what is different and unexpected in Solidity.
If you want some more information on Solidity, check out our blog posts with the solidity tag.
How to get accepted to the Solidity bootcamp
At the RareSkills solidity coding bootcamp, we get a lot of applicants, but only 5 will be selected per class.
Here is what it takes to get your application accepted.
The coding test
We expect you to be proficient with basic data structures and algorithms. If you haven’t at least tried your hand at data structures and algorithm questions (on a platform like leetcode or hackerrank), you should spend a couple months practicing those first. Don’t worry, you can always start at a later cohort. Time spent practicing data structures and algorithms is never wasted. It is the foundation of computer science and makes every other subject easier to learn.
Now, we know that these kind of interviews cause anxiety for a lot of people. Therefore, we give you 72 minutes to answer each question instead of the traditional 45.
The majority of applicants do not even score one correct answer on the test, even though one of the questions is extremely easy: a variant of fizz buzz. So come prepared! Taking the test is free, so you have nothing to lose trying.
Your written application
If you have a relatively small amount of coding experience (less than 3 years), write a detailed essay about why you are a good fit for the program. Show what you have taken initiative with in learning. Share accomplishments even if they aren’t programming related. We want to see you know what staying the course to the finish line looks like.
You didn’t think becoming a senior blockchain engineer would be a walk in the park do you? No, acquiring Rare Skills takes time. We can speed up the process, surround you with people who will be a good influence, and show you the fastest route, but there is no shortcut to expertise. Show us you understand the challenge at hand and are prepared to tackle it.
Previous Blockchain and Solidity Experience
If you are looking to close your knowledge gaps in blockchain programming, this is the right course for you. We are extremely thorough in our coverage of the Ethereum virtual machine, design patterns, and security issues. Sharing previous blockchain experience and evidence of Solidity knowledge will absolutely help your application. There is a lot to learn! Try out our practice Solidity Interview Questions to get a taste of the topics that might be covered!
I'm new to coding can I join?
Yes but you almost certainly won't pass the entrance exam.
I've already taken another Solidity bootcamp, will this benefit me?
We have solidity instructors and solidity professionals sign up for this course. You'll be in good company! If you score 60% or lower on our solidity test, then we are sure the course is a good fit for you.
I already work as a web3 developer, will this benefit me?
Not only will it benefit you, we've had a lot of companies pay the tuition of their blockchain engineers to attend this! This is a win-win for you. You will still have to go through our admissions process like everyone else however.
I'm a technical web3 founder, will this benefit me?
About 10% of our students are entrepreneurs who own their own business or a founder stake in it.
I'm new to Solidity, can I get accepted?
You can, but your application will have a relative disadvantage and you will need to do extremely well on the coding test and have a strong application to get in. We strongly recommend that you complete the resources listed above before you start. You also need to be ready to dedicate more than 30 hours per week.
Why do you limit the class size to five?
In a large class, people get too intimidated to ask or answer questions in a group. However, answering and asking questions is an important catalyst for learning quickly. The size limit makes it easier for the instructor to develop a better relationship with the student and keep track of their progress and weaknesses.
These benefits don't happen in a large class.
We have zero venture funding, so we are under no pressure to grow quickly. This allows us to focus on quality over quantity.
How hard is this bootcamp?
Really, really hard. (Just check our testimonials!) Chances are, you won't complete it within the sixteen weeks (we make allowances for people falling behind to a certain degree). We are trying to cram almost a year of experience into a third of a year by keeping you in a constant state of learning new things and making new mental connections.
You should be ready to set aside 20 to 30 hours per week to complete this program. If you are more junior, this may end up being a full time bootcamp for you.
I'm an employer, how can I take advantage of this without my engineers losing too much time?
There is no shortcut for learning. Learning takes time. However, get in touch with us and we can try to time their learning sequence to line up with your business needs. Contact us if this applies to you.
There is a lot of free material online. Why should I pay for this bootcamp?
Of course there is, but how is that working out for most people? When you join the RareSkills bootcamp, you join a curated community of determined people and get direct one-on-one time with industry leaders who will inspire you to new heights in your career and answer questions search engines cannot. There is a lot more to fulfilling your career goals than just coding. People who have actually accomplished what you are trying to do will help you the most. Also think about this in terms of the value of your time.
Let's say you charge $50 per hour ($100,000 per year salary). If we save you about 120 hours of wasted study time, you recoup the cost and get a bigger professional network. That amounts to about 7-8 hours per week of time saved.
How does time get wasted studying?
- Getting distracted more easily because you are working alone with less accountability
- Spending a lot of time looking online for information you can't find on stackoverflow or a blog somewhere
- Trying to decipher sparse documentation
The question isn't whether you can learn all of this on your own (hopefully you can!), it's how fast do you want to do it and do you want the other integrated benefits?
Spending money on a bootcamp doesn't mean you not capable of learning on your own. We have very successful entrepreneurs and programmers pay to join our program. Nobody would accuse them of being incapable of learning on their own.
As noted in the prerequisites, there is already a lot of quality free material available that will take you from zero to a solid beginner, if not a rising intermediate.
What happens if it takes me longer that 16 weeks to complete the program?
This is normal. We make allowances for this as long as we can see you are putting the effort in.
However, we do not tolerate students not taking the program seriously. We want our group of 5 to be a high quality group who will positively influence each other's outcome and form a valuable network.
If life circumstances happen that force you to delay your education, we will move you to the next cohort. However, if you are falling behind because of not taking the bootcamp seriously, we will ask you to stop the program.
Your success is our success. We want you to go off and do great things in the blockchain space. But we cannot force you to be passionate about the subject — and you must be passionate about the subject to join and stay in the program.
What do I need to do to reserve my spot?
You must pass the coding test with a sufficient score. Then you will do a 30 minute video interview with one of our staff. If your application passes, you will be given a conditional offer of acceptance. To reserve your spot, you will need to pay at least the first month of tuition. Please not that students who pay the entire amount upfront may be given preference for admission, all else being equal.
Do you help with job placement afterwards?
If your employer is paying for your education, absolutely not, that would be a conflict of interest!
For everyone else, we do. We encourage you to see our outcomes and testimonials to see what kind of jobs our students get. Depending on the hiring partner, we may earn acommission from referring you to a job. If you are a freelancer, we may also refer web3 engineering work to you (and collect a commission). Our instructors are also hiring managers and we will be happy to help you fix up your resume and prepare for interviews. As engineering leaders who have conducted dozens, if not hundreds of interviews dozens and seen hundreds, if not thousands of resumes, our feedback hold far more weight than most other career services.
Please note that although our career outcomes are very good, our primary goal is build up your skills to the point where you can move the web3 space forward.
We are not here to entice you with six figure salaries like most bootcamps do. Many of our students already earn that much.
You should care about subject mastery of blockchain for its own sake, and we are here to help you achieve that as fast as possible.
Please see our pricing page for up to date details. You can expect to pay between $5,800 to $6,400 depending on if you pay up front, monthly, or pay with USDC (our preferred cryptocurrency payment option). Due to high demand and small class sizes, we do not offer financial aid.
Note: bulk discounts may be available if several employees sign up at once.