ChrisCho-H/bithoven
GitHub: ChrisCho-H/bithoven
Bithoven 是一种比特币智能合约编程语言,通过高级语法和静态分析简化安全合约的开发与部署。
Stars: 43 | Forks: 7
# Bithoven 🎼
**一种用于比特币智能合约的高级命令式编程语言**
Bithoven 是一种类型安全、对开发者友好的编程语言,设计为编译为原生比特币脚本。它弥合了复杂的智能合约逻辑与比特币虚拟机(VM)低层栈式机器之间的鸿沟。
使用现代控制流(`if/else`)、具名变量和内置安全检查来编写可读、可审计的代码,然后将其编译为针对 SegWit 或 Taproot 高度优化的比特币脚本。
## ⚡ 核心特性
- **命令式语法:** 使用熟悉的 `if`、`else` 和 `return` 语句编写逻辑,无需进行复杂的栈操作。
- **类型安全:** 一等支持 `bool`、`signature`、`string` 和 `number` 类型,防止常见的运行时错误。
- **多重花费路径:** 使用明确的执行分支和输入栈要求,定义复杂的合约(如 HTLC)。
- **定向编译:** 通过 pragmas 支持 `legacy`、`segwit` 和 `taproot` 编译目标。
- **原生比特币原语:** 内置关键词支持时间锁(`older`、`after`)、密码学操作(`sha256`、`checksig`)和验证(`verify`)。
## 🚀 快速入门
- **Bithoven 网页 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;
/* * 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 自带丰富的示例集合,展示了实际应用场景下的比特币智能合约:
| 示例 | 描述 | 核心特性 |
|---------|-------------|--------------|
| **[HTLC](./example/htlc.bithoven)** | 哈希时间锁合约 | 哈希锁、时间锁、条件支付 |
| **[原子交换](./example/atomic_swap.bithoven)** 🆕 | 跨链交易 | 双重 SHA256 哈希锁、无需信任的交换 |
| **[托管](./example/escrow.bithoven)** 🆕 | 2-of-3 多重签名市场 | 仲裁员、买家/卖家、时间锁退款 |
| **[金库](./example/vault.bithoven)** 🆕 | 安全增强型钱包 | 延时提款、即时冷存储恢复 |
| **[多重签名投票](./example/multisig_voting.bithoven)** 🆕 | DAO 库存/董事会审批 | 2-of-3 阈值投票、紧急 3-of-3 覆盖 |
| **[预测市场](./example/prediction_market.bithoven)** 🆕 | 基于哈希的预言机去中心化博彩 | 加密承诺方案、预言机证明验证 |
| **[多重签名](./example/multisig.bithoven)** | 2-of-2 多重签名 | Taproot 多签支持 |
| **[继承](./example/inheritance.bithoven)** | 分级访问控制 | 多级继承人、基于密钥的访问 |
| **[哈希锁](./example/hashlock.bithoven)** | 简单哈希锁 | SHA256 哈希验证 |
| **[时间锁](./example/timelock.bithoven)** | 绝对时间锁 | CLTV (CheckLockTimeVerify) |
| **[单签名](./example/singlesig.bithoven)** | 基本签名检查 | 简单的 P2PKH 式合约 |
**查看所有示例:** [示例目录](./example)
## 🛠 编译
编译时,Bithoven 会将高级命令式逻辑转换为等效的比特币脚本操作码,并自动处理控制流和栈管理。
**命令:**
```
bithoven compile htlc.bithoven
```
**生成的比特币脚本 (ASM):**
```
OP_IF
<0xe803> OP_CHECKSEQUENCEVERIFY OP_DROP
OP_CHECKSIG
OP_ELSE
OP_HASH256 OP_TOALTSTACK OP_FROMALTSTACK OP_SWAP OP_EQUALVERIFY
OP_CHECKSIG
OP_ENDIF
```
## 📚 文档
### 原语
- `older `:强制执行相对时间锁(Sequence)。
- `after `:强制执行绝对时间锁(LockTime)。
- `checksig(sig, pubkey)`:使用公钥验证签名。
- `verify `:确保表达式求值为真,否则脚本失败。
### 类型
- `bool`:布尔值(`true`、`false`)。
- `signature`:ECDSA 或 Schnorr 签名。
- `string`:十六进制或 ASCII 字符串数据。
- `number`:整数值。
## 📄 许可证
本项目采用 MIT 许可证 - 详情请见 [LICENSE](https://github.com/ChrisCho-H/bithoven/blob/main/LICENSE) 文件。
## 📄 引用
如果您在研究中使用了 Bithoven,请引用以下论文:
**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},
}
```
标签:Bitcoin, Bitcoin Script, CMS安全, Golang, HTLC, JavaScript, LR(1)解析器, Rust, SegWit, SOC Prime, Taproot, Web IDE, 云安全监控, 区块链, 可视化界面, 命令式编程, 安全编程, 开发工具, 形式化验证, 数据可视化, 智能合约, 暗色界面, 生成式AI安全, 类型安全, 编程语言, 编译器, 网络流量审计, 虚拟机, 通知系统, 静态分析