一个在 Kaspa blockDAG 上构建高频、交互式去中心化应用程序的框架
Kdapp
一个在 Kaspa blockDAG 上构建高频、交互式去中心化应用程序的框架。
https://github.com/michaelsutton/kdapp/blob/master/README.md#future-directions--starting-points
⚠️Alpha 软件该项目处于早期开发阶段。API 尚不稳定,应将代码库视为实验性代码库。随着框架的发展,预计会发生重大变化。
概述
Kdapp 提供了在 Kaspa 上构建半原生、交互式和时间敏感的去中心化应用程序 (k-dApp) 的基础设施。这些交互式会话称为 “剧集”。
该项目的理念是为开发人员提供最快的途径来构建和部署利用 Kaspa 独特的每秒 10 个块功能的创意应用程序。它优先考虑开发速度和链上性能,接受状态持久性和互作性等领域的初始权衡。
这种方法允许依赖于高频时钟的新型用例,例如链上闪电战国际象棋、由预言机馈送的实时体育博彩或其他交互式多参与者协议。长期愿景是简化开发,以便可以通过 AI 辅助的 “vibe coding” 从高级提示生成整个剧集。
如何运作
该框架的架构旨在实现效率和模块化:
生成器
:使用特殊格式的有效载荷制作 Kaspa 事务的实用程序。它寻找与预定义模式匹配的交易 ID,从而允许在网络上高效地发现与剧集相关的交易。代理
:一个 wRPC 客户端,专门侦听 Kaspa 网络与生成器模式匹配的事务。然后,将有效命令转发到核心引擎。引擎
:管理同一类型的多个剧集生命周期的中央控制器。它解释传入的命令、验证签名、更新剧集状态,并维护回滚对象堆栈以处理 Kaspa DAG 重新组织。Episode
&EpisodeEventHandler
:主要开发者界面。您实现 trait 来定义应用程序的状态和命令逻辑。相应的特征允许注入逻辑来跟踪剧集进度并向客户端报告状态更改。Episode
EpisodeEventHandler
这将创建一个清晰的数据流:→ → → →Developer Implements Episode
Generator Creates TX
Proxy Hears TX
Engine Executes Command
Event Handler Reports
入门:运行 Tic-Tac-Toe 示例
此存储库包括一个功能齐全的井字棋示例,该示例演示了两个玩家如何在 Kaspa 网络上执行完整的游戏。
先决条件
Rust 工具链:安装 Rust。
Kaspa 节点访问:需要 wRPC 连接。该应用程序默认使用公有 PNN 节点,但您可以指定自己的节点,例如:。
--wrpc-url wss://localhost:17210
第 1 步:构建示例
克隆存储库并构建二进制文件:ttt
git clone https://github.com/michaelsutton/kdapp.gitcd kdapp
cargo build --release --bin ttt
第 2 步:生成 Kaspa 地址并为其注资
两个玩家都必须有一个有资金的 Kaspa 地址来支付交易费用。该应用程序可以为您生成一个。
运行不带参数的应用程序以生成新的密钥对:
./target/release/ttt
该程序将输出一个 Kaspa 地址和一个私钥。向该地址发送一些测试网 Kaspa (TKAS)。您可以从 Kaspa Faucet 获得测试网资金。
第 3 步:玩家 1(开始会话)
再次运行应用程序,提供您资助的私有密钥:
./target/release/ttt --kaspa-private-key <your-kaspa-private-key>
应用程序将生成并显示一个新的游戏公钥。复制此密钥并将其发送给玩家 2(例如,通过消息应用程序)。
您的终端现在将等待对手加入并启动游戏。
第 4 步:玩家 2(加入并启动游戏)
在为您自己的 Kaspa 地址充值后,使用您的私钥和您从玩家 1 处收到的游戏密钥运行应用程序。此命令将启动链上游戏。
./target/release/ttt --kaspa-private-key <your-kaspa-private-key> --game-opponent-key <player-1-game-key>
第 5 步:玩游戏
游戏开始后,两个玩家的终端都变得互动。出现提示时,输入您的移动格式(例如,用于中心方块)。游戏默认运行;添加标志以改用 mainnet。row,col
1,1
testnet-10
--mainnet
未来的方向和起点
这是一个社区驱动的框架。最好的贡献方式是 fork 仓库,并将项目推向新的和意想不到的方向(为特定应用程序量身定制或以一般形式)。使用下面的列表获取灵感,或将您自己独特的想法带到框架中。
Good First Issues
[ ]
实现内存中回滚上限:它将所有回滚对象保存在内存中。一个包含良好的第一个贡献是在这个回滚堆栈上实现一个简单的上限(例如,保留每个事件的最后 1,000 个条目)以防止内存耗尽。engine
[ ]
创建阵列实用程序函数:添加一个实用程序,以从唯一的字符串前缀生成确定易 ID 模式,从而允许人类可读或品牌化的交易流。[ ]
展开代码文档:改进整个代码库的注释,尤其是 、 和 模块中的注释,以便为新开发人员阐明内部逻辑。rustdoc
engine
proxy
generator
[ ]
创建其他示例:实现另一个稍微复杂一些的示例,以进一步演示框架的用法,并为开发人员提供另一个参考。Episode
核心引擎和基础设施
[ ]
优化 RPC 同步以实现高吞吐量:改进 RPC 同步过程以处理繁重的 DAG 负载。这是一项重要的任务,可能涉及用 VSPC 通知替换当前的轮询机制,使用 / RPC API 预取区块数据,或者为 Rusty-Kaspa 提供 RPC 扩展以实现更高效的事务获取。get_blocks
block notifications
[ ]
设计解耦的客户端-服务器架构:要启用基于浏览器的 kdapps 和无缝的 “vibe 编码”,需要一个强大的客户端-服务器模型。与 TTT 示例不同,每个玩家也是一个侦听器,此任务涉及设计模式,其中侦听器作为持久后端(例如,Web 服务器)运行。这允许客户端(浏览器)通过 API 进行交互,可能使用 Kaspa WASM SDK 生成客户端事务。此架构工作是创建易于部署的端到端应用程序的基础步骤。
状态管理和持久化
这是一组相互构建的相关任务,旨在为 kdapps 提供更高级别的持久性和历史记录。
[ ]
阶段 1:短期同步 (RPC 追赶) :持久性的第一步。这涉及存储最新的同步点并在启动时实施追赶过程。这允许侦听器从短暂的停机时间中恢复,而不会丢失其在 DAG 中的位置(在 Kaspa 的修剪期内)。[ ]
阶段 2:完全重组保护(状态持久性):在第 1 阶段的基础上,此任务引入了一个持久数据库(例如 RocksDB)来存储任意深度的回滚对象。这确保了即使是非常深的链重组也可以被正确处理。但是,此阶段并不能解决完整的历史记录,因为新的 kdapp 节点仍然无法从头开始同步已完成的剧集。[ ]
第 3 阶段:完整历史记录同步(存档支持):最后阶段,提供最大的灵活性。这涉及为专用存档节点设计一种机制,以存储和提供剧集的完整历史记录。这将允许新的 kdapp 节点随时加入网络并完全同步剧集的历史记录,从 Kaspa 的 KIP-15 (ATAN) 等概念中汲取灵感。
高级研究和未来目标
[ ]
为 AI 辅助开发奠定基础:构建在解耦的客户端-服务器架构之上,最终愿景是使开发人员能够从自然语言提示生成特征实施。这是一个主要的勘探区域,包含几个关键组成部分:Episode
[ ]
通用 Oracle 集成:设计一个通用框架,用于将外部数据馈送到剧集中。这将涉及在剧集初始化时通过特殊的公钥定义预言机,并创建一个简单的可插拔系统来与各种外部数据源集成。[ ]
动态代码加载:设计一个服务器端引擎,可以接收生成的 Rust 代码,安全地编译它,并将其动态加载到正在运行的 kdapp 后端。[ ]
多语言支持:探索支持以其他语言(如 Python)编写的剧集的方法。这可能涉及创建一个通用的 Rust 包装器,该包装器可以托管外语运行时并与之交互。[ ]
编译器驱动的 AI 反馈:利用来自 Rust 编译器 () 的高级、精确的反馈来创建一个自动化循环,其中 AI 生成的代码根据编译错误进行优化和纠正。rustc
[ ]
测试生成:开发提示指南和方法,让 AI 不仅生成剧集逻辑,还生成相应的单元和集成测试套件,以确保正确性。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
感动 | 同情 | 无聊 | 愤怒 | 搞笑 | 难过 | 高兴 | 路过 |
- 上一篇:Kasplex L2区块时间
- 下一篇:没有了!
相关文章
-
没有相关内容