Bitcoinスマートコントラクトのための高水準・命令型言語
Bithovenは、ネイティブのBitcoin Scriptにコンパイルするように設計された、型安全で開発者に優しいプログラミング言語です。複雑なスマートコントラクトのロジックと、Bitcoin仮想マシン(VM)の低レベルスタックマシンとの間のギャップを埋めます。
現代的な制御フロー(if/else)、名前付き変数、組み込みの安全性チェックを使用して、可読性が高く監査可能なコードを記述し、それをSegWitまたはTaproot用に高度に最適化されたBitcoin Scriptにコンパイルします。
if、else、return文を使用してロジックを記述します。bool、signature、string、number型のファーストクラスサポートにより、一般的な実行時エラーを防止します。legacy、segwit、taprootコンパイルターゲットのサポート。older、after)、暗号(sha256、checksig)、検証(verify)のための組み込みキーワード。# For CLI user
cargo install bithoven
# For rust user
cargo add bithoven
# For js user
npm install bithoven
Bithovenコントラクトは.bithoven拡張子で定義されます。以下は、標準の**Hashed Time-Locked Contract (HTLC)**の実装で、Bithovenが条件付き支出経路をどのように簡素化するかを示しています。
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");
}
}
Bithovenには、実際のBitcoinスマートコントラクトを示す豊富なサンプルコレクションが付属しています:
すべての例を見る: Examples Directory
コンパイルされると、Bithovenは高水準の命令型ロジックを同等のBitcoin Scriptオペコードに変換し、制御フローとスタック管理を自動的に処理します。
コマンド:
bithoven compile htlc.bithoven
生成されたBitcoin Script (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
older <n>: 相対タイムロック(Sequence)を強制します。after <n>: 絶対タイムロック(LockTime)を強制します。checksig(sig, pubkey): 公開鍵に対して署名を検証します。verify <expr>: 式がtrueと評価されることを保証し、そうでなければスクリプトは失敗します。bool: ブール値(true、false)signature: ECDSAまたはSchnorr署名string: 16進数またはASCII文字列データnumber: 整数値貢献は大歓迎です! ロードマップ項目についてはissuesページを確認するか、PRを送信してください。
このプロジェクトはMITライセンスの下でライセンスされています - 詳細はLICENSEファイルを参照してください。
研究でBithovenを使用する場合は、以下の論文を引用してください:
Bithoven: 表現力豊かなBitcoinスマートコントラクトのための形式的安全性. Hyunhum Cho と Ik Rae Jeong、2026年. arXivプレプリント 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},
}
| 例 | 説明 | 主要機能 |
|---|
| HTLC | ハッシュタイムロックコントラクト | ハッシュロック、タイムロック、条件付き支払い |
| Atomic Swap 🆕 | クロスチェーン取引 | ダブルSHA256ハッシュロック、トラストレス交換 |
| Escrow 🆕 | 2/3マルチシグマーケットプレイス | 仲裁者、買い手/売り手、タイムロック払い戻し |
| Vault 🆕 | セキュリティ強化ウォレット | 時間遅延引き出し、即時コールドストレージリカバリ |
| Multisig Voting 🆕 | DAO財務/理事会承認 | 2/3しきい値投票、緊急3/3オーバーライド |
| Prediction Market 🆕 | ハッシュベースオラクルによる分散型ベッティング | 暗号コミットメント方式、オラクル証明検証 |
| Multisig | 2/2マルチシグ | Taprootマルチシグネチャサポート |
| Inheritance | 階層型アクセス制御 | 複数の継承者レベル、秘密ベースのアクセス |
| Hashlock | シンプルなハッシュロック | SHA256ハッシュ検証 |
| Timelock | 絶対タイムロック | CLTV (CheckLockTimeVerify) |
| Single Sig | 基本的な署名チェック | シンプルなP2PKHスタイルのコントラクト |