Skip to main content

Solidity Smart Contract Development

Welcome to the Solidity Course documentation! This collection of smart contracts covers fundamental to intermediate Solidity concepts, all developed and tested in Remix IDE as part of the Cyfrin Updraft course.
All contracts use Solidity 0.8.30 and are designed to run on the Sepolia testnet with Chainlink Price Feeds integration.

What You’ll Learn

This course takes you from Solidity basics to building production-ready smart contracts with real-world integrations:

Simple Storage

Master Solidity fundamentals with data types, structs, arrays, and mappings

Factory Pattern

Deploy and manage multiple contract instances with the factory pattern

Inheritance

Extend contract functionality using inheritance and function overriding

Chainlink Oracles

Integrate real-world data with Chainlink Price Feeds for ETH/USD conversion

Crowdfunding

Build a complete crowdfunding contract with access control and withdrawals

Gas Optimization

Optimize smart contracts using constant, immutable, and custom errors

Key Features

Progressive Learning Path

Start with basic storage and progress to advanced patterns:
  1. SimpleStorage - Learn core Solidity syntax and state management
  2. StorageFactory - Understand contract composition and deployment
  3. FundMe - Build real applications with oracle integration

Real-World Integrations

All contracts use production-grade tools and libraries:
  • Chainlink Price Feeds for reliable ETH/USD conversion on Sepolia testnet
  • Custom errors for gas-efficient error handling
  • Libraries for code reusability with PriceConverter
  • Modifiers for access control patterns

Production Best Practices

Learn optimization techniques used in production:
// Gas optimization with constant and immutable
contract FundMe {
    uint256 public constant MINIMUM_USD = 5e18;
    address public immutable i_owner;
    
    constructor() {
        i_owner = msg.sender;
    }
}
// Custom errors vs require strings
error NotOwner();

modifier onlyOwner() {
    if (msg.sender != i_owner) revert NotOwner();
    _;
}

Course Concepts

The contracts demonstrate these essential Solidity concepts:
  • Data Structures: Structs, dynamic arrays, and mappings
  • Functions: View/pure functions, visibility modifiers, and custom modifiers
  • Contract Patterns: Factory pattern, inheritance, and composition
  • Libraries: Using using ... for syntax with the PriceConverter library
  • Oracles: Chainlink Price Feeds for off-chain data
  • Error Handling: Custom errors vs require statements
  • Gas Optimization: Constant and immutable variables
  • ETH Transfers: Transfer, send, and call patterns
  • Special Functions: Receive and fallback functions

Getting Started

Setup Guide

Get your development environment ready with Remix IDE and deploy your first contract

Simple Storage

Start here

Storage Factory

Next level

Fund Me

Advanced

Why These Contracts Matter

These aren’t just tutorial examples - they’re building blocks for real decentralized applications:
  • SimpleStorage patterns power NFT metadata and on-chain registries
  • Factory patterns enable protocols like Uniswap to create trading pairs
  • FundMe demonstrates crowdfunding platforms like Kickstarter on-chain
  • Chainlink integration is used by DeFi protocols managing billions in TVL
Each contract is self-contained and can be deployed independently in Remix IDE. Start with SimpleStorage and progress at your own pace.

Build docs developers (and LLMs) love