Block Statements
Block statements are the basic building blocks of Pebble code.
They control variable bindings, runtime assertions, failure modes, and debugging.
Variable and Constant Declarations
Pebble supports both mutable (let) and immutable (const) bindings.
const threshold = 100;
let counter = tx.inputs.length();
-
constvalues cannot be reassigned -
letvalues can be mutated (though mutation in Pebble compiles into SSA-style assignments internally)
Assert
assert checks a condition at runtime.
If it fails, the transaction is invalid.
assert userOutput.value.amountOf(policy, tokenName) >= minReceiveAmount;
Assertions are the primary way to enforce validator rules in Pebble.
Fail
fail immediately aborts execution with an error.
fail "Insufficient token balance";
Useful when explicit error reporting is preferable to silent assertion failures.
Trace
trace allows debug logging during simulation.
(Traces are generally stripped or limited in on-chain execution.)
trace("Processing order...");
trace(userOutput.address);
This is especially helpful for off-chain testing to understand contract flow.