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
- Solidity Team. (n.d.). Solidity Documentation (latest). https://docs.soliditylang.org/en/latest/
Cited in: Prerequisite, Ch-1 : Solidity / Remix
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Solidity Team. (n.d.). NatSpec Format. Solidity Documentation. https://docs.soliditylang.org/en/latest/natspec-format.html
Cited in: Ch-2 : Basic Syntax
- 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
- Solidity Team. (n.d.). Installing the Solidity Compiler. Solidity Documentation. https://docs.soliditylang.org/en/latest/installing-solidity.html
- 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
- 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
- Solidity Team. (n.d.). Solidity Blog (release announcements). https://soliditylang.org/blog/
Cited in: Ch-21 : Error Handling
Development Tools and Libraries
- 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
- Remix Project. (n.d.). Remix – Ethereum IDE (online). https://remix.ethereum.org
Cited in: Ch-1 : Solidity / Remix
- 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
- 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
- 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
- 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
- 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
- The Linux Foundation. (n.d.). SPDX License List. https://spdx.org/licenses/
Cited in: Ch-2 : Basic Syntax
- 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
- ethereum.org. (n.d.). Introduction to smart contracts. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/smart-contracts/
Cited in: Prerequisite
- 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
- ethereum.org. (n.d.). Ethereum Virtual Machine (EVM). Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/evm/
Cited in: Ch-1 : Solidity / Remix
- ethereum.org. (n.d.). Gas and fees. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/gas/
Cited in: Prerequisite, Ch-8 : Loop
- ethereum.org. (n.d.). Ethereum accounts. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/accounts/
- ethereum.org. (n.d.). Transactions. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/transactions/
Cited in: Ch-14 : Global Variables
- 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
- 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
- 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
- ethereum.org. (n.d.). Oracles. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/oracles/
Cited in: Project 2 : Smart Contract Lottery System
- ethereum.org. (n.d.). Testing smart contracts. Ethereum Developer Documentation. https://ethereum.org/en/developers/docs/smart-contracts/testing/
- 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
- Ethereum Improvement Proposals. (2018). ERC-165: Standard Interface Detection. https://eips.ethereum.org/EIPS/eip-165
Cited in: Ch-19 : Interfaces
- Ethereum Improvement Proposals. (2021). EIP-4399: Supplant DIFFICULTY opcode with PREVRANDAO. https://eips.ethereum.org/EIPS/eip-4399
Cited in: Ch-14 : Global Variables
- Buterin, V. (2013). Ethereum Whitepaper. ethereum.org. https://ethereum.org/en/whitepaper/
- Wood, G. Ethereum: A Secure Decentralised Generalised Transaction Ledger (Ethereum Yellow Paper). https://ethereum.github.io/yellowpaper/paper.pdf
Books and Encyclopaedia
- 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
- Antonopoulos, A. M., & Wood, G. (2018). Mastering Ethereum: Building Smart Contracts and DApps. O’Reilly Media.
Cited in: Ch-3 : DataTypes
- 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
- Wikipedia contributors. (n.d.). Solidity. Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/wiki/Solidity
Cited in: Ch-1 : Solidity / Remix