📌 项目地址genlayerlabs/genlayer-project-boilerplate | ⭐ 15,885 颗星 | 🔧 TypeScript | 📜 未标注

这不是一个普通模板

genlayer-project-boilerplate 是 GenLayer 平台的官方示例项目,包含一个完整的”足球博彩”去中心化应用。它不是为了演示 Todo List 或宠物商店,而是展示智能合约如何直接访问互联网和调用LLM——这是 GenLayer 与以太坊等传统链上合约最本质的区别。项目提供了Python编写的智能合约、Next.js 15前端、直接模式测试、集成测试、linting和CI,让你在30分钟内跑通一个真实场景。

它能解决什么问题

在传统区块链上,合约无法自主获取外部数据,需要预言机。GenLayer 的智能合约支持在遵守”等价原则”的前提下发起Web请求和调用AI模型。这个样板项目就是展示这种能力的标准实践:
– 合约 contracts/football_bets.py 实现投注创建、结果解析和视图函数
– 解析结果时,合约可以访问比赛数据和/或让LLM判断结果,而不是依赖人为提交的oracle
– 前端通过去中心化方式连接和交互,部署脚本帮助你发布到GenLayer网络

实际用法:从克隆到跑通测试

环境准备

你需要 Python >= 3.12、全局安装 GenLayer CLI(npm install -g genlayer)以及 GenLayer Studio(集成测试和部署用,可用托管版)。

1. 创建虚拟环境并安装依赖

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

2. 静态检查合约

genvm-lint check contracts/football_bets.py

linter 会检查禁止的导入、非确定性调用、存储类型是否合法(必须用 TreeMap、DynArray、u256 等)、是否缺少装饰器和返回类型标注、以及等价原则之外的不可预测操作。共20多条规则。

3. 跑直接模式测试(最快反馈循环)

直接模式在内存中运行合约,用 mock 替代 Web 请求和 LLM 调用,每个测试毫秒级完成:

pytest tests/direct/ -v

这个模式下你可以直接使用 direct_deploy("contracts/file.py") 部署合约到内存,然后调用方法、断言状态。适用于快速开发调试。

4. 跑完整集成测试(需要 GenLayer Studio)

集成测试在 Studio 模拟的真实网络环境中端到端执行,验证合约在完整虚拟机下的行为。测试文件在 tests/integration/test_football_bets.py,并配有 fixtures.py 存储期望状态。

5. 部署

deploy/ 目录下有 TypeScript 编写的部署脚本,配合官方文档可发布到 GenLayer 网络。

这个模板和其他dApp样板哪里不同

  • 合约语言是 Python,不是 Solidity 或 Rust。开发者在智能合约中使用Python语法(限制为确定性子集)。
  • 内置 direct mode 和集成测试两套测试机制,前者不依赖Studio、秒级返回,后者做全链路验证。测试策略清晰分层,适合长期演进的项目。
  • 自带一个生产级 Next.js 15 前端,包含 TanStack Query 和 Radix UI,不是玩具界面,可以直接改成自己的产品外壳。
  • CI 里配置了 lint 和 direct 测试,确保每次提交都经过静态分析和快速回归。

需要注意的事项

  • 合约是 Python 子集,不是所有 Python 语法和数据科学库都能用。必须用 GenVM 允许的类型(TreeMap、DynArray、u256等)。
  • 非确定操作(比如访问当前时间、请求外部API)必须放在等价原则块中,否则 linter 会拒绝,合约无法部署。
  • 项目许可证是 MIT,但这是示例代码,用于生产还需谨慎评估安全性。
  • 集成测试和部署需要 GenLayer Studio,直接模式测试不需要,团队里至少有一人注册Studio账号或本地安装它。
  • 前端是现代React栈,如果你只关心合约部分,可以忽略 frontend 目录,专注 contracts 和 tests。

适合谁

  • 想在 GenLayer 上构建第一个智能合约的开发者——这是一个比文档中零散示例完整得多的起点。
  • 需要开发带UI的产业链应用(如预测市场、保险、需要真实世界数据的DeFi)的团队,可以直接复用这个项目结构。
  • 对”智能合约如何安全地与外部世界交互”这一技术方向感兴趣的研究者,可以研究其确定性封装模式。
这篇文章对你有帮助吗?

发表回复