拓冰建站拓冰建站
首页 / 资讯中心 / 正文

如何用GenLayer Project Boilerplate快速打造链上投票系统:从Python智能合约到Next.js前端的完整指南

如何用GenLayer Project Boilerplate快速打造链上投票系统从Python智能合约到Next.js前端的完整指南【免费下载链接】genlayer-project-boilerplate项目地址: https://gitcode.com/GitHub_Trending/gen/genlayer-project-boilerplate 一句话了解这个项目GenLayer Project Boilerplate是 GenLayer 官方出品的全栈项目脚手架boilerplate帮你用Python 编写链上智能合约搭配 Next.js 15 前端快速搭建链上投票 / 预测类应用。项目内置了一个完整的足球比分预测示例Football Bets用户在链上投票预测比赛结果合约通过AI 大模型自动抓取真实赛果并裁决猜中即得分——本质上就是一套去中心化的链上投票系统。它帮你省去了最麻烦的部分合约编写规范、Web/LLM 调用方式、两级测试体系、部署脚本和生产级前端模板开箱即用。克隆仓库开始git clone https://gitcode.com/GitHub_Trending/gen/genlayer-project-boilerplate️ 项目结构速览5分钟看懂目录目录作用关键文件contracts/Python 智能合约contracts/football_bets.pytests/direct/毫秒级内存测试无需节点tests/direct/test_create_bet.pytests/integration/对接 GenLayer Studio 的端到端测试tests/integration/fixtures.pyfrontend/Next.js 15 前端应用frontend/lib/hooks/useFootballBets.tsdeploy/TypeScript 部署脚本deploy/deployScript.ts根目录环境与测试配置gltest.config.yaml、pyproject.toml开发辅助指南见 CLAUDE.md依赖清单见 requirements.txt。⚙️ 环境安装步骤三步跑通开发环境前置要求Python ≥ 3.12以及全局安装的 GenLayer CLI。第 1 步初始化 Python 虚拟环境python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt第 2 步代码体检LintGenLayer 的静态检查器能在部署前揪出 20 多种合约常见问题禁用导入、存储类型错误、缺失装饰器等genvm-lint check contracts/football_bets.py第 3 步跑一次快速测试pytest tests/direct/ -vDirect 模式测试在内存中运行合约并用 mock 模拟网页请求和 LLM 响应单条测试仅需毫秒级是开发中最爽的反馈循环。 Python 智能合约核心投票与 AI 裁决逻辑整个链上投票系统的业务逻辑浓缩在 contracts/football_bets.py 一个文件里读懂它就读懂了 GenLayer 编程范式。数据怎么存链上状态定义合约用TreeMap这种链上存储类型维护两类状态bets每个地址的投票预测记录包含比赛日期、双方队伍、预测赢家、真实赛果等字段points每个地址的累计积分猜中 1投票创建预测怎么写通过装饰器声明方法权限这是 GenLayer 的核心约定gl.public.view—— 只读查询如get_bets、get_pointsgl.public.write—— 修改链上状态如create_bet、resolve_betcreate_bet方法接收比赛日期、两队名称和预测结果用日期_主队_客队自动生成唯一 ID防止同一用户重复投票同一场比赛。 最大亮点合约内置 AI 自动裁决传统链上应用需要预言机Oracle喂数据而 GenLayer 的合约可以直接访问互联网和调用大模型。resolve_bet的裁决流程是抓网页gl.nondet.web.render(url, modetext)直接渲染 BBC Sport 的比分页面AI 提取gl.nondet.exec_prompt(..., response_formatjson)让大模型从页面文本中结构化提取比分和胜者等价原则校验gl.eq_principle.strict_eq确保不同节点执行结果一致保证共识安全猜中即调用self.points[sender] 1记分——从投票到计分全程无人工干预。 三级测试体系新手也能安心改合约测试类型命令速度需要 StudioLint 静态检查genvm-lint check contracts/*.py~250ms❌Direct 内存测试pytest tests/direct/ -v~ms/条❌Integration 集成测试gltest tests/integration/ -v -s~min/条✅Direct 模式提供的测试武器非常好用详见 tests/direct/conftest.pydirect_deploy(contracts/xxx.py)—— 内存中部署合约direct_vm.sender direct_alice—— 切换投票人身份direct_vm.mock_web(正则, 响应)—— 模拟网页抓取direct_vm.mock_llm(正则, 响应)—— 模拟 AI 输出direct_vm.expect_revert(错误信息)—— 断言交易应失败测试赛果数据可参考 tests/integration/fixtures.py网络配置在 gltest.config.yaml。 部署合约一条命令上链选择目标网络本地 localnet 或测试网genlayer network执行部署genlayer deploy部署逻辑封装在 deploy/deployScript.ts读取合约字节码 →initializeConsensusSmartContract()→ 发送部署交易 → 等待ACCEPTED/FINALIZED回执 → 打印合约地址。部署完成后把打印出的合约地址填入前端环境变量即可。️ Next.js 前端全栈实现钱包、轮询与排行榜前端位于frontend/目录技术栈为 Next.js 15 React 19 TypeScript Tailwind CSS TanStack Query Radix UI详见 frontend/README.md。分层清晰的前端架构层位置职责合约封装frontend/lib/contracts/FootballBets.ts基于 genlayer-js 的合约调用封装数据 Hooksfrontend/lib/hooks/useFootballBets.ts查询/变更/缓存失效一体化钱包管理frontend/lib/genlayer/WalletProvider.tsx创建/导入/断开钱包账户UI 组件frontend/components/BetsTable.tsx、CreateBetModal.tsx、Leaderboard.tsx投票列表、创建投票弹窗、排行榜值得抄作业的前端细节读操作免钱包getBets、排行榜等只读方法不连钱包也能调用降低访问门槛自动轮询刷新TanStack Query 每 2~3 秒refetchOnWindowFocusstaleTime自动同步链上数据投票列表实时跳动变更前预估手续费estimateCreateBetFees先估算再createBet避免用户误操作变更成功后自动失效缓存invalidateQueries让 bets / points / leaderboard 三处数据瞬间一致启动前端cd frontend cp .env.example .env # 填入 NEXT_PUBLIC_CONTRACT_ADDRESS npm install npm run dev # 访问 http://localhost:3000 如何改造成你自己的链上投票系统这个脚手架的改造成本极低推荐路径参考 CLAUDE.md 中的工作流改数据模型把Bet数据类换成你的Vote选项、候选人、票数等存储仍用TreeMap/DynArray改投票方法保留gl.public.write的create_bet骨架把参数换成你的选项改裁决逻辑需要外部数据时复用网页抓取 LLM 提取 等价原则三板斧纯人工投票则直接去掉同步测试修改 tests/direct/ 中对应用例pytest tests/direct/ -v秒级验证同步前端更新useFootballBets.ts里的查询字段与 UI 组件文案上线前gltest tests/integration/ -v -s验证共识行为再genlayer deploy❓ 新手常见问题Q为什么合约必须用 TreeMap 而不能用 dict链上状态需要确定性存储TreeMap、DynArray、u256是 GenVM 规定的存储类型Lint 器会自动拦截dict/list用法。QDirect 测试和集成测试什么时候跑开发中高频跑 Direct毫秒级、无需 Studio部署前必须跑一次 Integration确认真实共识环境下行为一致。Q不跑本地节点可以吗可以。集成测试支持 hosted 的 GenLayer Studio前端默认也指向官方 Studio URL。✅ 小结GenLayer Project Boilerplate 给你一条完整的Python 智能合约 → AI 自动裁决 → Next.js 前端链上投票系统链路配上三级测试体系与现成部署脚本是从零搭建 GenLayer 全栈应用最快的起点。建议从pytest tests/direct/ -v跑通第一次测试开始再逐步替换成你自己的投票逻辑。MIT 协议开源见 LICENSE可放心用于学习与商业项目。【免费下载链接】genlayer-project-boilerplate项目地址: https://gitcode.com/GitHub_Trending/gen/genlayer-project-boilerplate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门