Blockstream's first Simplicity CTF — unlock 0.01 LBTC (~$600) locked in a contract for the reward; hands-on practice with Simplicity, the new smart-contract language for Bitcoin/Liquid.
Not yet scoped — for later. github.com/Arvolear/simplicity-ctf (added 2026-07-07)
Why
A hands-on way to actually learn Simplicity rather than just read about it.
How it works
Blockstream's first Simplicity CTF — solve it to unlock 0.01 LBTC (~$600) locked in a contract.
Related code
"""Simplicity CTF: a toy combinator evaluator in Simplicity's spirit --
small pure functions composed (not a stack of imperative statements) to
check an unlock condition, mirroring the CTF's "unlock the locked LBTC" goal.
"""
# Combinators: each takes an "environment" (witness bytes) and returns a value.
def unit(_env):
return ()
def iden(env):
return env
def comp(f, g):
"""Sequential composition: g after f."""
return lambda env: g(f(env))
def pair(f, g):
"""Parallel composition: run f and g on the same input, pair results."""
return lambda env: (f(env), g(env))
def case(f, g):
"""Branch on a boolean-tagged input: (True, x) -> f(x), (False, x) -> g(x)."""
def run(env):
tag, value = env
return f(value) if tag else g(value)
return run
# Build an unlock condition purely by combinator composition, Simplicity-style:
# witness = (has_preimage, preimage_bytes)
SECRET_HASH = hash("liquid-bitcoin-secret") & 0xFFFF
def check_preimage(preimage):
return (hash(preimage) & 0xFFFF) == SECRET_HASH
def reject(_env):
return False
unlock_program = case(
f=lambda preimage: check_preimage(preimage), # tag=True branch: verify preimage
g=reject, # tag=False branch: always fail
)
for label, witness in [
("correct preimage", (True, "liquid-bitcoin-secret")),
("wrong preimage", (True, "guess")),
("no preimage supplied", (False, None)),
]:
unlocked = unlock_program(witness)
print(f"{label}: witness={witness} -> unlocked={unlocked}")
Dark Horse: solve the CTF to check whether the Bitcoin/Liquid skill gap is worth closing. Simplicity only matters if a Dark Horse idea touches Bitcoin/Liquid directly; the CTF is the cheap way to test that before scoping such an idea further.
Devnet: no devnet action. Simplicity targets Bitcoin/Liquid, a separate chain family from Jayverse's Anvil/Sepolia/OP-Stack line, so this stays a personal-learning PoC, not a service integration.
Key expressions
Words and phrases from this page worth keeping, with the Korean meaning and the sentence they come from.
Expression
뜻 · 쓰이는 자리
hands-on
직접 해보는·실습 위주의 · 읽기만 하는 게 아니라 손으로 익히는 학습. "hands-on practice with Simplicity"
unlock (funds)
(잠긴 자금을) 풀다 · 컨트랙트에 걸린 보상을 풀어내는 것. "unlock 0.01 LBTC (~$600) locked in a contract"
for later
나중으로 미룸·차후 진행 · 아직 손대지 않고 뒤로 미뤄둔 항목. "Not yet scoped — for later"
rather than just
그냥 ~하는 데 그치지 않고 · 읽는 데서 그치지 않고 직접 해보는 것. "actually learn Simplicity rather than just read about it"
for the reward
보상을 받기 위해 · 상금을 걸고 문제를 푸는 CTF의 목적. "locked in a contract for the reward"
LBTC
리퀴드 비트코인(Liquid BTC, 리퀴드 네트워크 상의 BTC 페깅 자산) · 이 CTF의 보상으로 걸린 토큰. "unlock 0.01 LBTC (~$600) locked in a contract"
Simplicity
블록스트림이 만든 비트코인/리퀴드용 신규 스마트컨트랙트 언어 · 이 CTF에서 실습하는 대상 언어. "the new smart-contract language for Bitcoin/Liquid"
Blockstream
비트코인·리퀴드 네트워크를 개발하는 회사 · 이 CTF를 주최한 곳. "Blockstream's first Simplicity CTF"
CTF
해킹 실습 대회(Capture The Flag) · 문제를 풀어 잠긴 자금을 푸는 보안 실습 형식. "Blockstream's first Simplicity CTF"
Dark Horse: CTF를 풀어서 Bitcoin/Liquid 스킬 갭을 메울 가치가 있는지 확인한다. Simplicity는 Dark Horse 아이디어가 Bitcoin/Liquid를 직접 다룰 때만 의미가 있으므로, 그런 아이디어를 더 구체화하기 전에 CTF로 저렴하게 검증한다.
Devnet: devnet에는 조치 없음. Simplicity는 Jayverse의 Anvil/Sepolia/OP-Stack 라인과는 별개의 체인군인 Bitcoin/Liquid를 대상으로 하므로, 이는 서비스 통합이 아니라 개인 학습 PoC로 남는다.
핵심 표현
이 페이지의 영어 본문에서 배울 만한 단어와 표현, 뜻과 나온 자리.
Expression
뜻 · 쓰이는 자리
hands-on
직접 해보는·실습 위주의 · 읽기만 하는 게 아니라 손으로 익히는 학습. "hands-on practice with Simplicity"
unlock (funds)
(잠긴 자금을) 풀다 · 컨트랙트에 걸린 보상을 풀어내는 것. "unlock 0.01 LBTC (~$600) locked in a contract"
for later
나중으로 미룸·차후 진행 · 아직 손대지 않고 뒤로 미뤄둔 항목. "Not yet scoped — for later"
rather than just
그냥 ~하는 데 그치지 않고 · 읽는 데서 그치지 않고 직접 해보는 것. "actually learn Simplicity rather than just read about it"
for the reward
보상을 받기 위해 · 상금을 걸고 문제를 푸는 CTF의 목적. "locked in a contract for the reward"
LBTC
리퀴드 비트코인(Liquid BTC, 리퀴드 네트워크 상의 BTC 페깅 자산) · 이 CTF의 보상으로 걸린 토큰. "unlock 0.01 LBTC (~$600) locked in a contract"
Simplicity
블록스트림이 만든 비트코인/리퀴드용 신규 스마트컨트랙트 언어 · 이 CTF에서 실습하는 대상 언어. "the new smart-contract language for Bitcoin/Liquid"
Blockstream
비트코인·리퀴드 네트워크를 개발하는 회사 · 이 CTF를 주최한 곳. "Blockstream's first Simplicity CTF"
CTF
해킹 실습 대회(Capture The Flag) · 문제를 풀어 잠긴 자금을 푸는 보안 실습 형식. "Blockstream's first Simplicity CTF"