
新发布Sep 16, 2026
bithoven v0.1.0
Bithoven 是一种智能合约语言,用于在比特币上组合强大且安全的工具。采用 LR(1) 解析器结合静态分析,实现编译时安全性。形式化验证论文:https://arxiv.org/abs/2601.01436
Bithoven 🎼
一种用于比特币智能合约的高级命令式语言
Bithoven 是一种类型安全、对开发者友好的编程语言,专为编译成本地比特币脚本而设计。它弥合了复杂智能合约逻辑与比特币虚拟机(VM)底层栈机之间的鸿沟。
编写可读、可审计的代码,配备现代控制流(if/else)、命名变量以及内置安全检查——然后将其编译为高度优化的比特币脚本,支持 SegWit 或 Taproot。
⚡ 关键特性
- 命令式语法: 使用熟悉的
if、else和return语句编写逻辑,无需手动处理栈操作。 - 类型安全: 原生支持
bool、signature、string和number类型,防止常见运行时错误。 - 多花费路径: 定义复杂合约(如 HTLC),包含不同的执行分支和输入栈需求。
- 定向编译: 通过 pragma 支持
legacy、segwit和taproot编译目标。 - 原生比特币原语: 内置关键词实现时间锁(
older、after)、密码学(sha256、checksig)和验证(verify)。
🚀 快速开始
- Bithoven Web IDE,详见:https://bithoven-lang.github.io/bithoven/ide/
- Bithoven 文档,详见:https://bithoven-lang.github.io/bithoven/docs/
安装
# 对于 CLI 用户
cargo install bithoven
# 对于 Rust 用户
cargo add bithoven
# 对于 JS 用户
npm install bithoven
编写你的第一个合约
Bithoven 合约使用 .bithoven 扩展名定义。以下是标准 哈希时间锁定合约(HTLC) 的实现,展示了 Bithoven 如何简化条件性花费路径。
htlc.bithoven
pragma bithoven version 0.0.1;
pragma bithoven target segwit;
/* * 栈输入定义
* 每一行定义一个花费路径的有效输入栈配置。
*/
(condition: bool, sig_alice: signature)
(condition: bool, preimage: string, sig_bob: signature)
{
// 如果 'condition' 为真,则进入退款路径(Alice)
if condition {
// 强制设置相对时间锁为 1000 个区块
older 1000;
// 如果时间锁满足,Alice 可使用其签名花费
return checksig(sig_alice, "0245a6b3f8eeab8e88501a9a25391318dce9bf35e24c377ee82799543606bf5212");
} else {
// 兑换路径(Bob)
// Bob 必须揭示哈希到预期值的秘密原像
verify sha256(sha256(preimage)) == "53de742e2e323e3290234052a702458589c30d2c813bf9f866bef1b651c4e45f";
// 如果哈希匹配,Bob 可使用其签名花费
return checksig(sig_bob, "0345a6b3f8eeab8e88501a9a25391318dce9bf35e24c377ee82799543606bf5212");
}
}
📖 示例展示
Bithoven 附带了丰富的示例集合,展示了现实世界中的比特币智能合约:
| 示例 | 描述 | 关键特性 |
|---|---|---|
| HTLC | 哈希时间锁定合约 | 哈希锁、时间锁、条件性支付 |
| 原子交换 🆕 | 跨链交易 | 双重 SHA256 哈希锁、无需信任的交换 |
| 托管 🆕 | 2-of-3 多签名市场 | 仲裁人、买方/卖方、时间锁定退款 |
| 金库 🆕 | 安全增强钱包 | 延迟提款、即时冷存储恢复 |
| 多签投票 🆕 | DAO 资金库 / 董事会审批 | 2-of-3 阈值投票、紧急 3-of-3 覆盖 |
| 预测市场 🆕 | 基于哈希预言机的去中心化赌博 | 密码学承诺方案、预言机证明验证 |
| 多签 | 2-of-2 多签名 | Taproot 多签名支持 |
| 继承 | 分层访问控制 | 多级继承人、基于秘密的访问 |
| 哈希锁 | 简单哈希锁 | SHA256 哈希验证 |
| 时间锁 | 绝对时间锁 | CLTV(CheckLockTimeVerify) |
| 单签 | 基本签名检查 | 简单 P2PKH 风格合约 |
查看所有示例: 示例目录
🛠 编译
编译时,Bithoven 会将高级命令式逻辑转换为等效的比特币脚本操作码,自动处理控制流和栈管理。
命令:
bithoven compile htlc.bithoven
生成的比特币脚本(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>:确保表达式求值为真,否则脚本失败。
类型
bool:布尔值(true、false)。signature:ECDSA 或 Schnorr 签名。string:十六进制或 ASCII 字符串数据。number:整数值。
🤝 贡献
欢迎贡献!请查看 issues 页面了解路线图项目,或提交 PR。
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
📄 引用
如果您在研究中使用 Bithoven,请引用以下论文:
Bithoven:表达性比特币智能合约的形式化安全性。 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},
}