Originality and Attribution Statement
  • All notes, explanations, examples, questions, answers and MCQs on this website are original material written for this course. Code examples on the pages were written for this course and compiled with solc 0.8.26.
  • The course videos, PDF E-Notes and resource/project source files are the course author’s own material.
  • The works below were consulted for facts and are cited on the page(s) listed beside each entry, for attribution and further reading. No text is reproduced from them beyond technical names, keywords and standard identifiers.
  • Product names, logos and trademarks (e.g. Ethereum, Remix, Web3.js, Ganache) belong to their respective owners. Links lead to external websites not controlled by Ishaanvi InfoSoft.
Official Solidity Documentation
  1. Solidity Team. (n.d.). Solidity Documentation (latest). https://docs.soliditylang.org/en/latest/
    Cited in: Prerequisite, Ch-1 : Solidity / Remix
  2. Solidity Team. (n.d.). Introduction to Smart Contracts. Solidity Documentation. https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html
    Cited in: Prerequisite, Ch-1 : Solidity / Remix
  3. Solidity Team. (n.d.). Layout of a Solidity Source File (SPDX, pragmas, imports, comments). Solidity Documentation. https://docs.soliditylang.org/en/latest/layout-of-source-files.html
    Cited in: Ch-2 : Basic Syntax, Ch-13 : Struct, Ch-16 : Contracts
  4. Solidity Team. (n.d.). Structure of a Contract. Solidity Documentation. https://docs.soliditylang.org/en/latest/structure-of-a-contract.html
    Cited in: Ch-2 : Basic Syntax, Ch-16 : Contracts
  5. Solidity Team. (n.d.). Types (value types, reference types, mappings, operators, conversions). Solidity Documentation. https://docs.soliditylang.org/en/latest/types.html
    Cited in: Ch-3 : DataTypes, Ch-4 : Variable, Ch-6 : Operators, Ch-7 : Decision Making, Ch-9 : String, Ch-10 : Array, Ch-11 : Enum, Ch-12 : Mapping, Ch-13 : Struct, Ch-17 : Constructor, Ch-24 : Payable Functions, Project 1 : Smart Contract Election System, Project 5- Smart Contract Badminton Tournament, Project 7 : Smart Contract Web3.js - CarPooling dApp
  6. Solidity Team. (n.d.). Units and Globally Available Variables. Solidity Documentation. https://docs.soliditylang.org/en/latest/units-and-global-variables.html
    Cited in: Ch-4 : Variable, Ch-14 : Global Variables, Ch-24 : Payable Functions, Project 2 : Smart Contract Lottery System, Project 3 : Smart Contract Bidding/e-Auction System, Project 4- Smart Contract Crowdfunding System
  7. Solidity Team. (n.d.). Expressions and Control Structures (if/else, loops, checked arithmetic, error handling, try/catch). Solidity Documentation. https://docs.soliditylang.org/en/latest/control-structures.html
    Cited in: Ch-5 : Scope of Variables, Ch-6 : Operators, Ch-7 : Decision Making, Ch-8 : Loop, Ch-10 : Array, Ch-15 : Functions, Ch-21 : Error Handling, Project 5- Smart Contract Badminton Tournament
  8. Solidity Team. (n.d.). Contracts (creating contracts, visibility and getters, function modifiers, constant and immutable, functions, events, custom errors, inheritance, abstract contracts, interfaces, libraries). Solidity Documentation. https://docs.soliditylang.org/en/latest/contracts.html
    Cited in: Ch-4 : Variable, Ch-5 : Scope of Variables, Ch-15 : Functions, Ch-16 : Contracts, Ch-17 : Constructor, Ch-18 : Inheritance, Ch-19 : Interfaces, Ch-20 : Events, Ch-21 : Error Handling, Ch-22 : Modifier, Ch-23 : Fallback/Receive, Project 1 : Smart Contract Election System, Project 3 : Smart Contract Bidding/e-Auction System, Project 4- Smart Contract Crowdfunding System, Project 5- Smart Contract Badminton Tournament, Project 7 : Smart Contract Web3.js - CarPooling dApp
  9. Solidity Team. (n.d.). Security Considerations. Solidity Documentation. https://docs.soliditylang.org/en/latest/security-considerations.html
    Cited in: Ch-5 : Scope of Variables, Ch-8 : Loop, Ch-14 : Global Variables, Ch-21 : Error Handling, Ch-22 : Modifier, Ch-23 : Fallback/Receive, Ch-24 : Payable Functions, Project 1 : Smart Contract Election System, Project 2 : Smart Contract Lottery System, Project 3 : Smart Contract Bidding/e-Auction System, Project 4- Smart Contract Crowdfunding System
  10. Solidity Team. (n.d.). Style Guide. Solidity Documentation. https://docs.soliditylang.org/en/latest/style-guide.html
    Cited in: Ch-2 : Basic Syntax, Ch-15 : Functions
  11. Solidity Team. (n.d.). NatSpec Format. Solidity Documentation. https://docs.soliditylang.org/en/latest/natspec-format.html
    Cited in: Ch-2 : Basic Syntax
  12. Solidity Team. (n.d.). Cheatsheet. Solidity Documentation. https://docs.soliditylang.org/en/latest/cheatsheet.html
    Cited in: Ch-3 : DataTypes, Ch-6 : Operators, Ch-9 : String, Ch-10 : Array, Ch-11 : Enum, Ch-12 : Mapping, Ch-13 : Struct
  13. Solidity Team. (n.d.). Installing the Solidity Compiler. Solidity Documentation. https://docs.soliditylang.org/en/latest/installing-solidity.html
  14. Solidity Team. (n.d.). Layout of State Variables in Storage. Solidity Documentation. https://docs.soliditylang.org/en/latest/internals/layout_in_storage.html
    Cited in: Ch-4 : Variable, Ch-12 : Mapping
  15. Solidity Team. (n.d.). Contract ABI Specification. Solidity Documentation. https://docs.soliditylang.org/en/latest/abi-spec.html
    Cited in: Ch-20 : Events, Project 6 : Smart Contract Web3.js - Jquery Cookies
  16. Solidity Team. (n.d.). Solidity Blog (release announcements). https://soliditylang.org/blog/
    Cited in: Ch-21 : Error Handling
Development Tools and Libraries
  1. Remix Project. (n.d.). Remix IDE Documentation. https://remix-ide.readthedocs.io/en/latest/
    Cited in: Ch-1 : Solidity / Remix, Project 1 : Smart Contract Election System, Project 2 : Smart Contract Lottery System, Project 3 : Smart Contract Bidding/e-Auction System, Project 4- Smart Contract Crowdfunding System, Project 5- Smart Contract Badminton Tournament, Project 6 : Smart Contract Web3.js - Jquery Cookies
  2. Remix Project. (n.d.). Remix – Ethereum IDE (online). https://remix.ethereum.org
    Cited in: Ch-1 : Solidity / Remix
  3. ChainSafe Systems. (n.d.). Web3.js Documentation. https://docs.web3js.org/
    Cited in: Ch-20 : Events, Project 6 : Smart Contract Web3.js - Jquery Cookies, Project 7 : Smart Contract Web3.js - CarPooling dApp
  4. js-cookie contributors. (n.d.). js-cookie: A simple, lightweight JavaScript API for handling browser cookies. GitHub. https://github.com/js-cookie/js-cookie
    Cited in: Project 6 : Smart Contract Web3.js - Jquery Cookies
  5. Truffle Suite (ConsenSys). (n.d.). Ganache – personal Ethereum blockchain for development (product archived by its maintainer). https://archive.trufflesuite.com/ganache/
    Cited in: Project 6 : Smart Contract Web3.js - Jquery Cookies
  6. OpenZeppelin. (n.d.). OpenZeppelin Contracts Documentation. https://docs.openzeppelin.com/contracts/
    Cited in: Ch-16 : Contracts, Ch-18 : Inheritance, Ch-19 : Interfaces, Ch-22 : Modifier
  7. Chainlink. (n.d.). Chainlink VRF (Verifiable Random Function) documentation. https://docs.chain.link/vrf
    Cited in: Ch-14 : Global Variables, Project 2 : Smart Contract Lottery System
  8. The Linux Foundation. (n.d.). SPDX License List. https://spdx.org/licenses/
    Cited in: Ch-2 : Basic Syntax
  9. The Linux Foundation. (n.d.). About SPDX (ISO/IEC 5962:2021). https://spdx.dev/about/
    Cited in: Ch-2 : Basic Syntax, Ch-16 : Contracts
Ethereum Documentation and Standards
  1. ethereum.org. (n.d.). Introduction to smart contracts. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/smart-contracts/
    Cited in: Prerequisite
  2. ethereum.org. (n.d.). Smart contract languages. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/smart-contracts/languages/
    Cited in: Ch-1 : Solidity / Remix
  3. ethereum.org. (n.d.). Ethereum Virtual Machine (EVM). Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/evm/
    Cited in: Ch-1 : Solidity / Remix
  4. ethereum.org. (n.d.). Gas and fees. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/gas/
    Cited in: Prerequisite, Ch-8 : Loop
  5. ethereum.org. (n.d.). Ethereum accounts. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/accounts/
  6. ethereum.org. (n.d.). Transactions. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/transactions/
    Cited in: Ch-14 : Global Variables
  7. ethereum.org. (n.d.). Smart contract security. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/smart-contracts/security/
    Cited in: Ch-24 : Payable Functions, Project 1 : Smart Contract Election System, Project 3 : Smart Contract Bidding/e-Auction System, Project 4- Smart Contract Crowdfunding System, Project 7 : Smart Contract Web3.js - CarPooling dApp
  8. ethereum.org. (n.d.). Introduction to dapps. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/dapps/
    Cited in: Project 6 : Smart Contract Web3.js - Jquery Cookies, Project 7 : Smart Contract Web3.js - CarPooling dApp
  9. ethereum.org. (n.d.). Smart contract anatomy (events and logs). Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/smart-contracts/anatomy/
    Cited in: Ch-20 : Events, Project 7 : Smart Contract Web3.js - CarPooling dApp
  10. ethereum.org. (n.d.). Oracles. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/oracles/
    Cited in: Project 2 : Smart Contract Lottery System
  11. ethereum.org. (n.d.). Testing smart contracts. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/smart-contracts/testing/
  12. Vogelsteller, F., & Buterin, V. (2015). ERC-20: Token Standard. Ethereum Improvement Proposals, no. 20. https://eips.ethereum.org/EIPS/eip-20
    Cited in: Ch-12 : Mapping, Ch-19 : Interfaces
  13. Ethereum Improvement Proposals. (2018). ERC-165: Standard Interface Detection. https://eips.ethereum.org/EIPS/eip-165
    Cited in: Ch-19 : Interfaces
  14. Ethereum Improvement Proposals. (2021). EIP-4399: Supplant DIFFICULTY opcode with PREVRANDAO. https://eips.ethereum.org/EIPS/eip-4399
    Cited in: Ch-14 : Global Variables
  15. Buterin, V. (2013). Ethereum Whitepaper. ethereum.org. https://ethereum.org/en/whitepaper/
  16. Wood, G. Ethereum: A Secure Decentralised Generalised Transaction Ledger (Ethereum Yellow Paper). https://ethereum.github.io/yellowpaper/paper.pdf
Books and Encyclopaedia
  1. Modi, R. (2018). Solidity Programming Essentials: A beginner’s guide to build smart contracts for Ethereum and blockchain. Packt Publishing. ISBN 978-1-78883-138-3.
    Cited in: Prerequisite, Ch-1 : Solidity / Remix, Ch-2 : Basic Syntax, Ch-3 : DataTypes, Ch-4 : Variable, Ch-5 : Scope of Variables, Ch-6 : Operators, Ch-7 : Decision Making, Ch-8 : Loop, Ch-9 : String, Ch-10 : Array, Ch-11 : Enum, Ch-12 : Mapping, Ch-13 : Struct, Ch-14 : Global Variables, Ch-15 : Functions, Ch-16 : Contracts, Ch-17 : Constructor, Ch-18 : Inheritance, Ch-19 : Interfaces, Ch-20 : Events, Ch-21 : Error Handling, Ch-22 : Modifier, Ch-23 : Fallback/Receive, Ch-24 : Payable Functions, Project 1 : Smart Contract Election System, Project 2 : Smart Contract Lottery System, Project 3 : Smart Contract Bidding/e-Auction System, Project 4- Smart Contract Crowdfunding System, Project 5- Smart Contract Badminton Tournament
  2. Antonopoulos, A. M., & Wood, G. (2018). Mastering Ethereum: Building Smart Contracts and DApps. O’Reilly Media.
    Cited in: Ch-3 : DataTypes
  3. Kernighan, B. W., & Ritchie, D. M. (1988). The C Programming Language (2nd ed.). Prentice Hall.
    Cited in: Prerequisite, Ch-7 : Decision Making, Ch-8 : Loop
  4. Wikipedia contributors. (n.d.). Solidity. Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/wiki/Solidity
    Cited in: Ch-1 : Solidity / Remix
Other Educational Sources (consulted for the earlier version of these notes)
  1. O’Reilly Learning Platform. (n.d.). Solidity Programming Essentials – chapter on pragma (online edition of Modi, 2018). https://www.oreilly.com/library/view/solidity-programming-essentials/9781788831383/
    Cited in: Ch-2 : Basic Syntax
  2. GeeksforGeeks. (n.d.). Solidity – Strings. https://www.geeksforgeeks.org/solidity-strings/
    Cited in: Ch-9 : String
  3. GeeksforGeeks. (n.d.). Solidity – Arrays. https://www.geeksforgeeks.org/solidity-arrays/
    Cited in: Ch-10 : Array
  4. GeeksforGeeks. (n.d.). Solidity – Function Modifiers. https://www.geeksforgeeks.org/solidity-function-modifiers/
    Cited in: Ch-22 : Modifier
  5. GeeksforGeeks. (n.d.). Solidity – Fall Back Function. https://www.geeksforgeeks.org/solidity-fall-back-function/
    Cited in: Ch-23 : Fallback/Receive
  6. Microsoft Learn. (n.d.). When to Use an Enumeration (Visual Basic programming guide). https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/constants-enums/when-to-use-an-enumeration
    Cited in: Ch-11 : Enum
  7. codedamn. (n.d.). Solidity functions. https://codedamn.com/news/solidity/solidity-functions
    Cited in: Ch-15 : Functions, Ch-18 : Inheritance
  8. CryptoMarketPool. (n.d.). Constructor in Solidity smart contracts. https://cryptomarketpool.com/constructor-in-solidity-smart-contracts/
    Cited in: Ch-17 : Constructor
  9. CoinsBench. (n.d.). Solidity #4: Operators & Conditions. https://coinsbench.com/solidity-4-operators-conditions-736a2c3faeff
    Cited in: Ch-6 : Operators
  10. Showwcase. (n.d.). Payable functions in Solidity. https://www.showwcase.com/show/33658/payable-functions-in-solidity
    Cited in: Ch-24 : Payable Functions