# Chapter 9: Introducing Bitcoin Scripts

To date, we've been interacting with Bitcoin at a relatively high level of abstraction. The `bitcoin-cli` program offers access to a variety of RPC commands that support the creation and control of raw Bitcoin transactions that include funds, data, timelocks, and multisigs.

However, Bitcoin offers much more complexity than that. It includes a simple scripting language that can be used to create even more complex redemption conditions. If multisigs and timelocks provided the bases of Smart Contracts, then Bitcoin Script builds high on that foundation. It's the next step in empowering Bitcoin.

## Objectives for This Chapter

After working through this chapter, a developer will be able to:

   * Design a Bitcoin Script
   * Apply a Bitcoin Script
   
Supporting objectives include the ability to:

   * Understand the Purpose of Bitcoin Scripts
   * Understand the P2PKH Script
   * Understand How P2WPKH Works with Scripting
   * Understand the Needs for Bitcoin Script Testing
   
## Table of Contents

* [Section One: Understanding the Foundation of Transactions](09_1_Understanding_the_Foundation_of_Transactions.md)
* [Section Two: Running a Bitcoin Script](09_2_Running_a_Bitcoin_Script.md)
* [Section Three: Testing a Bitcoin Script](09_3_Testing_a_Bitcoin_Script.md)
* [Section Four: Scripting a P2PKH](09_4_Scripting_a_P2PKH.md)
* [Section Five: Scripting a P2WPKH](09_5_Scripting_a_P2WPKH.md)
