Torna agli aggiornamenti
New releaseSep 16, 2026

bithoven v0.1.0

Bithoven è un linguaggio per smart contract progettato per comporre strumenti potenti e sicuri su Bitcoin. Parser LR(1) con analisi statica per garantire la sicurezza a tempo di compilazione. Articolo di verifica formale: https://arxiv.org/abs/2601.01436

Condividi

Bithoven 🎼

Un linguaggio di alto livello e imperativo per Smart Contract Bitcoin

Bithoven è un linguaggio di programmazione type-safe e facile per sviluppatori, progettato per compilare in nativo Bitcoin Script. Colma il divario tra logica complessa di smart contract e la macchina a stack di basso livello della Bitcoin Virtual Machine (VM).

Scrivi codice leggibile e verificabile con moderno controllo di flusso (if/else), variabili denominate e controlli di sicurezza integrati—poi compilalo in Bitcoin Script altamente ottimizzato per SegWit o Taproot.

⚡ Caratteristiche Principali

  • Sintassi Imperativa: Scrivi logica usando istruzioni familiari if, else e return invece di destreggiarti mentalmente con lo stack.
  • Sicurezza dei Tipi: Supporto di prima classe per i tipi bool, signature, string e number per prevenire comuni errori a runtime.
  • Percorsi di Spesa Multipli: Definisci contratti complessi (come HTLC) con rami di esecuzione distinti e requisiti di stack di input.
  • Compilazione Mirata: Supporto per target di compilazione legacy, segwit e taproot tramite pragmi.
  • Primitive Bitcoin Native: Parole chiave incorporate per timelock (older, after), crittografia (sha256, checksig) e verifica (verify).

🚀 Avvio Rapido

Installazione

# For CLI user
cargo install bithoven
# For rust user
cargo add bithoven
# For js user
npm install bithoven

Scrivere il Tuo Primo Contratto

I contratti Bithoven sono definiti con estensione .bithoven. Di seguito è riportata un'implementazione di uno standard Hashed Time-Locked Contract (HTLC), che dimostra come Bithoven semplifichi i percorsi di spesa condizionali.

htlc.bithoven

pragma bithoven version 0.0.1;
pragma bithoven target segwit;

/* * Stack Input Definitions
 * Each line defines a valid input stack configuration for a spending path.
 */
(condition: bool, sig_alice: signature)
(condition: bool, preimage: string, sig_bob: signature)

{
    // If 'condition' is true, we enter the Refund Path (Alice)
    if condition {
        // Enforce relative timelock of 1000 blocks
        older 1000;

        // If timelock is satisfied, Alice can spend with her signature
        return checksig(sig_alice, "0245a6b3f8eeab8e88501a9a25391318dce9bf35e24c377ee82799543606bf5212");

    } else {
        // Redeem Path (Bob)
        // Bob must reveal the secret preimage that hashes to the expected value
        verify sha256(sha256(preimage)) == "53de742e2e323e3290234052a702458589c30d2c813bf9f866bef1b651c4e45f";

        // If hash matches, Bob can spend with his signature
        return checksig(sig_bob, "0345a6b3f8eeab8e88501a9a25391318dce9bf35e24c377ee82799543606bf5212");
    }
}

📖 Galleria di Esempi

Bithoven include una ricca collezione di esempi che dimostrano smart contract Bitcoin del mondo reale:

EsempioDescrizioneCaratteristiche Principali
HTLCContratto Hash Time-LockedBlocchi hash, timelock, pagamenti condizionali
Atomic Swap 🆕Scambio cross-chainBlocchi hash SHA256 doppi, scambio senza fiducia
Escrow 🆕Mercato multisig 2-di-3Arbitro, acquirente/venditore, rimborsi con timelock
Vault 🆕Wallet con sicurezza avanzataPrelievi con ritardo temporale, recupero immediato da cold storage
Multisig Voting 🆕Tesoreria DAO / approvazioni consiglioVotazione a soglia 2-di-3, override d'emergenza 3-di-3
Prediction Market 🆕Scommesse decentralizzate con oracolo basato su hashSchemi di impegno crittografico, verifica prova dell'oracolo
MultisigMultisig 2-di-2Supporto multi-firma Taproot
InheritanceControllo accesso a livelliMolteplici livelli di eredi, accesso basato su segreto
HashlockBlocco hash sempliceVerifica hash SHA256
TimelockTimelock assolutoCLTV (CheckLockTimeVerify)
Single SigControllo firma baseContratto semplice stile P2PKH

Vedi tutti gli esempi: Directory degli Esempi

🛠 Compilazione

Quando compilato, Bithoven traduce la logica imperativa di alto livello negli opcode Bitcoin Script equivalenti, gestendo automaticamente il flusso di controllo e la gestione dello stack.

Comando:

bithoven compile htlc.bithoven

Bitcoin Script generato (ASM):

OP_IF
    <0xe803> OP_CHECKSEQUENCEVERIFY OP_DROP
    <pubkey_alice> OP_CHECKSIG
OP_ELSE
    OP_HASH256 OP_TOALTSTACK <hash_digest> OP_FROMALTSTACK OP_SWAP OP_EQUALVERIFY
    <pubkey_bob> OP_CHECKSIG
OP_ENDIF

📚 Documentazione

Primitive

  • older <n>: Impone un timelock relativo (Sequence).
  • after <n>: Impone un timelock assoluto (LockTime).
  • checksig(sig, pubkey): Valida una firma rispetto a una chiave pubblica.
  • verify <expr>: Assicura che un'espressione sia vera, altrimenti fallisce lo script.

Tipi

  • bool: Valori booleani (true, false).
  • signature: Firme ECDSA o Schnorr.
  • string: Dati stringa esadecimali o ASCII.
  • number: Valori interi.

🤝 Contribuire

I contributi sono benvenuti! Dai un'occhiata alla pagina issues per gli elementi della roadmap o invia una PR.

📄 Licenza

Questo progetto è concesso in licenza secondo la licenza MIT - consulta il file LICENSE per i dettagli.

📄 Citazione

Se usi Bithoven nella tua ricerca, cita il seguente articolo:

Bithoven: Sicurezza Formale per Smart Contract Bitcoin Espressivi. Hyunhum Cho e Ik Rae Jeong, 2026. arXiv preprint arXiv:2601.01436. https://arxiv.org/abs/2601.01436

BibTeX:

@misc{bithoven,
      title={Bithoven: Formal Safety for Expressive Bitcoin Smart Contracts}, 
      author={Hyunhum Cho and Ik Rae Jeong},
      year={2026},
      eprint={2601.01436},
      archivePrefix={arXiv},
      primaryClass={cs.CR},
      url={https://arxiv.org/abs/2601.01436}, 
}

Categorie