# Portaldot Hacker House 2026 | Potluck：验证任意 dApp 的链上历史记录，无需服务器（模块化云与中间件赛道）

**URL:** <https://portaldot.discourse.group/t/topic/231>\
**Category:** Hackathon\
**Created:** [2026 年11 月 9 日 07:51 UTC](https://portaldot.discourse.group/t/topic/231 "2026-11-09T07:51:10Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

作者： ![wngstnr-code](https://sea1.discourse-cdn.com/flex015/user_avatar/portaldot.discourse.group/wngstnr-code/32/120_2.png) [@wngstnr-code](https://portaldot.discourse.group/u/wngstnr-code)\
发布日期： [2026 年11 月 9 日 07:51 UTC](https://portaldot.discourse.group/t/topic/231/1 "2026-11-09T07:51:10Z")

</div>

## 项目简介

**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](https://wngstnr-code.github.io/potluck/)
  - Pantry（浏览器、验证账户、攻击演示）：[Pantry · Potluck](https://wngstnr-code.github.io/potluck/pantry/)
  - Wasiat-lite（继承时间线）：[Wasiat-lite · Potluck](https://wngstnr-code.github.io/potluck/wasiat/)

- **GitHub：** [GitHub - wngstnr-code/potluck: Backendless, verifiable on-chain history for any dApp, stored and guaranteed by Portaldot. Portaldot Hacker House 2026. · GitHub](https://github.com/wngstnr-code/potluck)
- **路演 PPT：** [potluck/docs/pitch/potluck-pitch.pdf at main · wngstnr-code/potluck · GitHub](https://github.com/wngstnr-code/potluck/blob/main/docs/pitch/potluck-pitch.pdf)

## 技术亮点

**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](https://github.com/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 是您无需自行托管的历史数据。

---

<div class="post-metadata">

作者： ![ympangbill](https://avatars.discourse-cdn.com/v4/letter/y/779978/32.png) [@ympangbill](https://portaldot.discourse.group/u/ympangbill)\
发布日期： [2026 年11 月 9 日 13:41 UTC](https://portaldot.discourse.group/t/topic/231/2 "2026-11-09T13:41:41Z")

</div>

技术可行，创新可见，商业潜力可以实现，生态贡献须努力。77分

---

<div class="post-metadata">

作者： ![Jungle](https://avatars.discourse-cdn.com/v4/letter/j/df788c/32.png) [@Jungle](https://portaldot.discourse.group/u/Jungle)\
发布日期： [2026 年11 月 10 日 09:00 UTC](https://portaldot.discourse.group/t/topic/231/3 "2026-11-10T09:00:47Z")

</div>

**Potluck (70)**

Potluck 是一个 Serverless 历史数据层项目，具备较高的完成度和良好的技术深度。它实现了三级验证、浏览器端加载和双运行时部署，并提供了性能数据。相关文档资料也相对完整。

主要缺点是 **缺少演示视频** 。在黑客马拉松比赛中，作为可验证的数据中间件，其完成度处于中上水平。

---

<div class="post-metadata">

作者： ![Rishabh](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@Rishabh](https://portaldot.discourse.group/u/Rishabh)\
发布日期： [2026 年11 月 10 日 10:57 UTC](https://portaldot.discourse.group/t/topic/231/4 "2026-11-10T10:57:08Z")

</div>

这个伪造的数据块虽然通过了哈希校验和行校验，但在余额总和不再匹配时被发现，这确实是一个非常有说服力的演示；而且它只需几秒即可加载，而不是同步几分钟，这能迅速让这一想法深入人心。
