项目简介
Potluck 让任何 dApp 能在浏览器中,无需索引服务器,在几秒钟内获取其链上历史记录(转账、余额、持有者、继承计划)。Portaldot 是数据层:历史数据分块存储在 Portaldot 的 TransactionStorage 中,其清单(manifests)注册在 pallet-revive 上的 PotluckRegistry.sol(单一 Solidity 源代码,同时部署到 PVM 和 EVM)。
浏览器通过节点的 bitswap_v1_get 获取分块数据,并根据数据来源链进行验证,而不是信任发布者。撒谎的发布者会被发现、在链上标记并被跳过。
演示应用 Wasiat-lite 使用 Potluck 展示来自 Kusama Asset Hub Recovery pallet 的真实继承和恢复时间线。
解决的问题
RPC 节点回答“当前状态是什么”,但 dApps 需要历史记录:谁发送了什么,谁持有什么,谁继承了什么,以及何时发生。
- 如今,每个 dApp 都要运行或租用一个索引服务器,用户必须信任该服务器的数据库。
- 当服务器消失时,历史数据也随之消失。
- 在浏览器中直接同步重链是不现实的:同步 Polkadot Asset Hub Revive 窗口需要几天的 RPC 调用时间。
Potluck 用 Portaldot 存储和保证的数据替代了索引服务器,外加任何人都可以在浏览器标签页中运行的验证机制。
链接
- 在线网页: Potluck: verifiable on-chain history on Portaldot
- Pantry(浏览器、验证账户、攻击演示):Pantry · Potluck
- Wasiat-lite(继承时间线):Wasiat-lite · Potluck
- GitHub: GitHub - wngstnr-code/potluck: Backendless, verifiable on-chain history for any dApp, stored and guaranteed by Portaldot. Portaldot Hacker House 2026. · GitHub
- 路演 PPT: potluck/docs/pitch/potluck-pitch.pdf at main · wngstnr-code/potluck · GitHub
技术亮点
1. Portaldot 作为重链的数据层
发布者针对源链(Polkadot Asset Hub、Kusama Asset Hub 或 Portaldot V3 本身)运行声明式 JSON 规范,并在 TransactionStorage 中存储规范的 gzip NDJSON 分块。清单在 PotluckRegistry 中注册,位于 pallet-revive 上,从单一的 Solidity 源代码通过 resolc 部署到 PVM(0x528fc6d14a8b1cf4474d2999313f74533cf083b4)和 solc 部署到 EVM(0xef9305561eb0c34d205dfa0d9099a105f44282eb),具有相同的 ABI。21 个 Foundry 测试,100% 覆盖率。
2. 针对源链的三级验证
- L1 完整性: 摘要、原始哈希、规范编码、布隆过滤器。
- L2 行真实性: 每一行都从其所在区块的事件中重新推导。
- L3 对账: 对于每个账户和窗口,之前的余额 + 每行的影响 = 之后的余额。
在攻击演示中,一个重新计算了所有哈希值的伪造分块通过了 L1 和 L2;但 L3 捕获了它(903 / 904 个账户)并显示了确切隐藏的金额。
3. 秒级而非天级
最新的 80,000 个 Polkadot Asset Hub 区块(114,460 行,23,268 个账户)从 Portaldot 加载仅需 5.6–6.4 秒(2026-10-21 实测),而在同一浏览器中直接同步约需 11 分钟。从浏览器经过哈希检查的 blob 缓存重新加载仅需 3.6 秒(2026-10-30 实测)。一个 2.5 MB 的分块通过 bitswap 从公共 Portaldot 节点获取约需 4 秒。
4. 自适应同步,Portaldot 作为一等来源
当直接同步成本较低时,SDK 进行直接同步;当成本较高时,它使用已验证的快照,仅对缺口进行直接同步,然后实时跟踪新区块。Portaldot V3 的完整历史(原生 + EVM/PVM 代币)作为快照发布:#1–#129,069 加载耗时 3.0 秒(直接同步耗时 1 分 9 秒),938 / 938 个账户完成对账。
5. 跨运行时升级的正确解码,以及适用于任何 dApp 的 SDK
每个区块都使用执行它的运行时版本(父状态版本)进行解码,因此 Polkadot AH 35+ 个运行时版本中的 set_code 区块都能正确解码。Revive 地址映射来自 ReviveApi,而不是本地的 keccak 规则。任何 dApp 都可以通过 npm install potluck-sdk 或从 URL 进行单个 ES 模块导入来使用它。
团队
Potluck(单人项目)
- GitHub:@wngstnr-code
- 邮箱:wangsitsada1234@gmail.com
- 项目性质:开源、无服务器中间件,将 Portaldot 转变为 dApps 的已验证历史层。
评委与投票契合度
致评委
Potluck 使用了少数项目才会触及的 Portaldot 原语:用于数据的 TransactionStorage,用于检索的 bitswap_v1_get,以及用于注册表的 pallet-revive,且同时部署了 PVM 和 EVM。一切都运行在 V3 测试网上:Portaldot、Polkadot Asset Hub 和 Kusama Asset Hub 的历史记录已发布并注册在两个注册表中,网站上的每个数字都直接从您的浏览器中的链上读取,且验证是针对源链的对账,而非随机抽样。它契合“模块化云与中间件”类别:一个可复用的数据层,其他 dApps 可以在此基础上构建,且无需运行任何服务器。
致社区投票者
打开在线网站,观看历史记录在您自己的浏览器中加载和验证,无需账户和后端。尝试攻击演示,查看伪造分块如何被捕获,然后打开 Wasiat-lite 查看来自 Kusama Asset Hub 的真实继承计划。如果您基于 Portaldot 构建,Potluck 是您无需自行托管的历史数据。