不盖章、不贴胶带:DutchBud的收据堵住邪恶节点交易漏洞

posted in: Uncategorized | 0

假区域交易被银行分类账封条阻止

上周,我们描述了PolitiCap区域节点如何拉取软件和数据而不是接收推送。这关闭了一类风险:未拥有主机永远不会获得我们的部署密钥。

这又留下了另一个开放的风险。如果本地操作员变得敌对,简单地在区域数据库中插入假填充,然后让交易批量上传将它们发送到中心站呢?

答案与已经在3DN family堆栈上移动资金的同一根脊柱相同:DutchBud分类账。每个联合填充必须携带银行收据。没有封条,就无法接受。

攻击在一张图片中

区域节点 SQL:假填充 在收件箱 DutchBud账本 没有收据? 拒绝 集线器胶带 仅密封 拥有节点盒 ≠ 铸造货币。银行业务仍留在银行区域。
图1. 假收件箱行在账本门槛处死亡。集线器从未将它们提升到结算胶带。

如果运营商控制区域主机,他们就控制了本地 MySQL 和节点 API 密钥。使用与同一台机器上存在的密钥进行签名毫无意义——他们可以伪造机器将要签名的任何内容。唯一的持久证据是一个收据,这个收据是在资金已经存在的交易所铸造的:DutchBud 的虚拟信用闭环账本(dibs)。

真实的填补流程

交易匹配、账本封条、带收据的批次、中心验证

  1. 匹配 — MarketMaker 或 Broker 在区域 API(本地交易台)上进行交叉。
  2. 封条 — DutchBud 记录名义腿部并返回 ledger_ref + ledger_code(与符号、数量、价格、各方、参考相关的 HMAC)。
  3. 发件箱 — 只有同时具有这两个字段的行才会被加入批次上传队列。未签名的插入项将被忽略,不参与联合发布。
  4. 中心摄入 — 对于每一行批次,中心要求 DutchBud 验证并消费收据一次。不匹配、缺少封条或重放 → 拒绝。
诚实路径 匹配 → DutchBud 封条 → 发件箱(ref,code) → 中心验证+消费 → 信任=账本 欺诈路径 SQL 伪造填补 → 未封条的发件箱 → 批次跳过 / 中心拒绝 → 无联合行 在新的伪造收据上重用旧收据 → 已经消费 → 拒绝 更改真实收据上的数量 → 绑定不匹配 → 拒绝
图 2. 正常路径与常见的欺诈尝试。铸造仍然是银行角色的权力。

信任边界

铸币仍然留在银行角色上——这是我们金融科技堆栈中信任度最高的边界。区域节点可以通过内部银行API请求一个密封,就像生产已经密封MarketMaker资本一样;没有这个边界,它们无法发明一个有效的ledger_code

中心节点也不铸币。它只验证。这保持了基础设施的诚实:托管托管边缘可能不如货币平面可信,但不会破坏多城市市场。

索赔 在敌对节点上谁可以伪造它 中心节点做了什么
出站行 操作员 未收到确认则忽略
节点API批处理 具有节点密钥的操作员 使用DutchBud验证每行
DutchBud收据 仅银行边界 接受一次,绑定字段,消费
两个真的付钱的假账号 真实资金流动 不同的控制(站立,限制)

为什么这符合数字主权

3DN为希望控制而不希望混乱的操作员构建基础设施计算。区域市场是数字主权的一种形式:一个城市可以运行其边缘,但它不能通过编辑本地表来改写家庭资金故事。

关闭部署通道。账本收据关闭了伪磁带通道。网络更加紧密——不是因为我们信任每个盒子,而是因为我们不再要求盒子成为银行。

阅读配套架构文章:拉,不要推:PolitiCap区域节点如何自我更新.

工程在生产中继续:仅扩展迁移,GitLab跟踪的API,以及软件版本和问候年龄的运营指标。仪表板上的模式版本是下一个;货币是更尖锐的边缘。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注