Smart Contract Development
Smart contract development creates programs that a blockchain executes and stores at network addresses. The work combines contract design, compilation, testing, deployment, and careful control of state, permissions, external calls, and upgrades.
itDistributed systems, messaging, and integration | OpenSkills.info
Recommended first:blockchain-fundamentals
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Smart Contract Development
A smart contract is a program whose rules and state are executed and recorded by a blockchain network. That sounds rather like putting a vending machine in a public square and asking thousands of strangers to agree which button it thinks you pressed. The important part is that the machine follows the code at its address, not the story you meant to tell about it.
On an Ethereum-compatible network, Solidity source becomes bytecode, the instructions that the Ethereum Virtual Machine executes. The compiler also produces an ABI, a description clients use to encode calls and decode results and logs. Deploying is therefore not copying a file to a server. A signed transaction creates code at an address. Later signed transactions call that address, pay gas for the work, and either commit a state change or revert it. A revert is a failed execution that discards its affected state changes; it is not a polite note asking the chain to reconsider.
The first useful mental model is a state machine with a very public memory. Storage persists between transactions, while memory and calldata belong to one execution. Events produce logs for off-chain applications, but they are not storage. A private Solidity label restricts contract access; it does not make on-chain data secret. This is the point at which many perfectly sensible web-application instincts put on a small hat and walk into a wall.
The second model is authority. Before code, name the assets, actors, permissions, and invariants: properties that must stay true after every allowed call sequence. External calls, oracles, privileged roles, and upgrade paths are trust boundaries. An external recipient can call back before the original function finishes. A proxy can preserve an address while changing its implementation, which adds initialization, storage-layout, and upgrade-authority rules. The surprise is that a transaction can succeed while the system still violates the policy it was supposed to encode.
Testing is how those assumptions meet hostile inputs. Unit tests check selected behavior. Fuzz and invariant tests explore more inputs and call sequences. Fork tests reproduce integration at a chosen block. Static analysis highlights patterns for review. Coverage shows executed code, not correctness, because a thoroughly exercised wrong rule remains wrong with admirable consistency.
Next, open the Intro for the execution path and design boundaries. Use Slides for the relationships between artifacts, calls, tests, and upgrades. The Cheatsheet is the compact map for data locations, failure signals, and deployment records. The Foundry Practice Reference turns that map into local commands. Read the Field Notes when you need the awkward operational consequences that documentation tends to leave standing outside in the rain.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://ethereum.org/developers/docs/smart-contracts/
Supports
- contract definition
- composability
- oracle limits
- immutability
- https://ethereum.org/developers/docs/smart-contracts/anatomy/
Supports
- state
- functions
- constructors
- events
- logs
- contract addresses
- https://ethereum.org/developers/docs/evm/
Supports
- bytecode execution
- state transition
- stack
- memory
- storage
- transient storage
- https://ethereum.org/developers/docs/transactions/
Supports
- deployment and call transactions
- signed fields
- eth_call
- lifecycle
- https://ethereum.org/developers/docs/gas/
Supports
- gas metering
- limits
- fees
- out-of-gas behavior
- https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html
Supports
- compilation
- storage
- calls
- logs
- EVM concepts
- https://docs.soliditylang.org/en/latest/contracts.html
Supports
- functions
- visibility
- mutability
- modifiers
- events
- errors
- inheritance
- https://docs.soliditylang.org/en/latest/abi-spec.html
Supports
- ABI call encoding
- return decoding
- events
- https://docs.soliditylang.org/en/latest/security-considerations.html
Supports
- public data
- randomness
- reentrancy
- gas limitations
- warnings
- https://docs.soliditylang.org/en/latest/using-the-compiler.html
Supports
- compiler inputs
- outputs
- settings
- metadata
- https://www.soliditylang.org/blog/2020/12/16/solidity-v0.8.0-release-announcement/
Supports
- Solidity 0.8.0 date
- checked arithmetic
- panic behavior
- https://getfoundry.sh/
Supports
- Forge
- Anvil
- Cast
- builds
- tests
- scripts
- local node
- command reference
- https://getfoundry.sh/forge/reference/snapshot/
Supports
- gas snapshots
- diffs
- checks
- test filters and traces
- https://docs.openzeppelin.com/contracts
Supports
- reusable contracts
- tokens
- access control
- governance
- utilities
- https://docs.openzeppelin.com/contracts/5.x/access-control
Supports
- ownership
- roles
- access management
- authority design
- https://docs.openzeppelin.com/upgrades-plugins/proxies
Supports
- proxy delegation
- initialization
- storage layout
- upgrade risks
- https://secure-contracts.com/
Supports
- static analysis
- fuzzing
- property and invariant testing
- https://secure-contracts.com/program-analysis/echidna/introduction/how-to-test-a-property.html
Supports
- property tests
- generated call sequences
- invariant limits
- https://docs.sourcify.dev/docs/how-to-verify/
Supports
- source and metadata verification against deployed bytecode
- https://ethereum.org/ethereum-forks/
Supports
- Ethereum whitepaper
- Yellow Paper
- Frontier
- Homestead
- DAO
- Byzantium
- Constantinople
- Berlin
- London
- Merge dates and effects
- https://blog.ethereum.org/2016/07/20/hard-fork-completed
Supports
- DAO fork completion and irregular state change
- https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement
Supports
- Byzantium date and contract-facing EVM changes
- https://eips.ethereum.org/EIPS/eip-20
Supports
- ERC-20 interface and finalization date
- https://eips.ethereum.org/EIPS/eip-721
Supports
- ERC-721 interface and finalization date
- https://eips.ethereum.org/EIPS/eip-1014
Supports
- CREATE2 address derivation and activation context
- https://eips.ethereum.org/EIPS/eip-1967
Supports
- standard proxy storage slots
- https://github.com/sindresorhus/awesome
Supports
- discovery of the Ethereum awesome list
- https://github.com/bkrem/awesome-solidity
Supports
- discovery of Solidity tools
- libraries
- verification and practice projects
- https://sol2uml.com/
Supports
- contract class and storage layout diagrams
- https://protofire.github.io/solhint/
Supports
- Solidity lint rules and CI use
- https://github.com/crytic/echidna
Supports
- property-based contract fuzzing
- https://github.com/crytic/slither
Supports
- Solidity static analysis
- https://sourcify.dev/
Supports
- contract source verification
- https://tenderly.co/
Supports
- transaction simulation
- debugging
- monitoring
- https://www.openzeppelin.com/ethernaut
Supports
- EVM smart contract security practice
- https://remix.ethereum.org/
Supports
- browser contract compilation
- deployment
- interaction and debugging
- https://hardhat.org/
Supports
- Solidity testing
- deployment
- traces and plugins
- https://etherscan.io/
Supports
- Ethereum address
- transaction
- log and verified-source exploration
- https://blog.openzeppelin.com/staying-safe-with-smart-contract-upgrades
Supports
- upgradeable-contract initialization, storage-layout preservation, upgrade authority
- https://blog.openzeppelin.com/the-notorious-bug-digest-2
Supports
- uninitialized contract ownership takeover and fee withdrawal incident
- https://blog.trailofbits.com/2025/06/25/maturing-your-smart-contracts-beyond-private-key-risk/
Supports
- smart-contract control points, immutability, and operational maturity
