This document provides an introduction to blockchain and smart contracts for software developers and architects. It discusses why blockchain is significant, defining blockchain as a decentralized ledger replicated across many computers running a consensus algorithm. It explains how blockchain differs from traditional databases by allowing multiple untrusted writers to interact through transactions while resolving conflicts. The document introduces smart contracts and provides examples. It also gives a hands-on introduction to developing smart contracts using Ethereum and Solidity.