L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

rue-chialisp

rue-chialisp

Create Chia blockchain puzzles using Rue, a type-safe language that compiles to CLVM. Use for smart contract development, custom puzzle creation, or when user says "create a coin that...", "build a puzzle", "chialisp", "rue", "timelock", "multisig", "escrow", "atomic swap", or describes coin spending conditions.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: rue-chialisp version: 1.0.0 description: Create Chia blockchain puzzles using Rue, a type-safe language that compiles to CLVM. Use for smart contract development, custom puzzle creation, or when user says "create a coin that...", "build a puzzle", "chialisp", "rue", "timelock", "multisig", "escrow", "atomic swap", or describes coin spending conditions.

Rue Chialisp Skill

Build type-safe Chia puzzles using Rue. Compile to CLVM bytecode for on-chain deployment.

Setup

# Check dependencies
scripts/rue-check.sh

# Initialize project
scripts/rue-init.sh my-project

Quick Build

cd my-project
rue build              # Compile all puzzles
rue build puzzles/x.rue  # Compile one
brun "$CLVM" "(args)"  # Simulate execution

Natural Language → Puzzle

When user describes a puzzle in plain language, map to these patterns:

User SaysPatternExample File
"only spend after block X"Timelockexamples/timelock.rue
"requires N signatures"Multisigexamples/multisig.rue
"burn X%"Partial Burnexamples/burn_10_percent.rue
"split payment"Royaltyexamples/royalty.rue
"escrow with arbiter"Escrowexamples/escrow.rue
"atomic swap / HTLC"Atomic Swapexamples/atomic_swap.rue
"reversible / clawback"Clawbackexamples/clawback.rue
"spending limit"Rate Limitedexamples/rate_limited.rue
"recurring payment"Subscriptionexamples/subscription.rue
"password protected"Passwordexamples/password_puzzle.rue
"signature required"Signatureexamples/sig_puzzle.rue

Core Syntax

fn main(curried_arg: Type, solution_arg: Type) -> List<Condition> {
    assert condition;
    let x = expression;
    if cond { a } else { b }
    [item1, item2, ...rest]
}

Types

TypeDescription
IntSigned integer
Booltrue/false
Bytes3232-byte hash
PublicKeyBLS G1 (48 bytes)
List<T>Nil-terminated list
ConditionCLVM condition

Key Conditions

ConditionOpcodePurpose
CreateCoin { puzzle_hash, amount, memos }51Create output
AggSigMe { public_key, message }50Require signature
AssertHeightAbsolute { height }83Min block height
AssertBeforeHeightAbsolute { height }87Max block height
AssertMyAmount { amount }73Verify coin value
ReserveFee { amount }52Transaction fee

See references/conditions.md for full list (30+ conditions).

Built-in Functions

FunctionUse
sha256(data)Hash data
tree_hash(value)CLVM tree hash
coinid(parent, puzzle_hash, amount)Compute coin ID

Example: Timelock

fn main(unlock_height: Int, dest: Bytes32, amount: Int) -> List<Condition> {
    let wait = AssertHeightAbsolute { height: unlock_height };
    let output = CreateCoin { puzzle_hash: dest, amount, memos: nil };
    [wait, output]
}

Example: 2-of-2 Multisig

fn main(pk1: PublicKey, pk2: PublicKey, conditions: List<Condition>) -> List<Condition> {
    let msg = tree_hash(conditions);
    let sig1 = AggSigMe { public_key: pk1, message: msg };
    let sig2 = AggSigMe { public_key: pk2, message: msg };
    [sig1, sig2, ...conditions]
}

Simulation

# Compile
CLVM=$(rue build puzzles/my_puzzle.rue 2>&1 | grep -v Warning | head -1)

# Execute with test inputs
brun "$CLVM" "(arg1 arg2 arg3)"

# Output is list of conditions: ((51 <hash> <amount>) (83 <height>) ...)

Security Notes

  • Password puzzles are educational only — use signatures for real value
  • Always validate input types with assert value is Type
  • Use tree_hash(conditions) as signature message to bind signatures to outputs
Skills enregistrées