Steve Shadders

Intermediate Bitcoin Script

Bitcoin Script has a horrible debugging experience. This talk introduces a high-level language with a powerful debugger to make it finally readable and testable.

Intermediate Bitcoin Script
#1about 3 minutes

Understanding Bitcoin Script as a Forth-like language

Bitcoin Script is a compact and efficient stack-based language similar to Forth, making it ideal for the resource-constrained environment of blockchain transactions.

#2about 8 minutes

Improving Bitcoin Script readability with aliases and formatting

A custom Script Definition Language (SDL) improves the developer experience by removing OP_ prefixes, using aliases for operators, and enabling standard code formatting.

#3about 4 minutes

A better way to debug Bitcoin Script

Overcome the poor native debugging experience by using a tool that provides precise error locations and a stack dumping operator to inspect state during execution.

#4about 13 minutes

The stack and reverse polish notation explained

Stack-based languages operate using reverse polish notation (subject-object-verb), which is a more natural structure for machine execution than standard infix notation.

#5about 4 minutes

Compile-time versus runtime script execution

Understand the distinction between compile-time, where code is generated with known inputs, and runtime, where it executes with new inputs provided later.

#6about 12 minutes

Using variables and words in a script definition language

The Script Definition Language introduces features like comments, variables, and reusable code blocks called 'words' to structure and simplify complex scripts.

#7about 3 minutes

How to implement loops through compile-time unrolling

Since Bitcoin Script lacks native loop opcodes, loops can be implemented at compile time by unrolling the code, which repeats the script body a specified number of times.

#8about 2 minutes

Dynamic script generation with compile-time functions

The 'funk' keyword executes a function at compile time, enabling dynamic script generation based on the values of known inputs before runtime.

#9about 6 minutes

Building a dynamic byte reversal function

A practical example demonstrates creating a byte reversal script that dynamically adapts its loop count based on the input's length, calculated at compile time.

#10about 10 minutes

Q&A on script optimization, tooling, and advanced concepts

The session concludes with answers to audience questions on hardware acceleration, data limits, OP_CODESEPARATOR, and the future of the demonstrated scripting tool.

Related jobs
Jobs that call for the skills explored in this talk.
tree-IT GmbH

tree-IT GmbH
Bad Neustadt an der Saale, Germany

54-80K
Intermediate
Senior
Java
TypeScript
+1

Featured Partners

Related Articles

View all articles

From learning to earning

Jobs that call for the skills explored in this talk.

Developer

Fullscript

Senior
API
Azure
React
Flask
Django
+5