
上周,我们描述了PolitiCap区域节点如何拉取软件和数据而不是接收推送。这关闭了一类风险:未拥有主机永远不会获得我们的部署密钥。
这又留下了另一个开放的风险。如果本地操作员变得敌对,简单地在区域数据库中插入假填充,然后让交易批量上传将它们发送到中心站呢?
答案与已经在3DN family堆栈上移动资金的同一根脊柱相同:DutchBud分类账。每个联合填充必须携带银行收据。没有封条,就无法接受。
攻击在一张图片中
如果运营商控制区域主机,他们就控制了本地 MySQL 和节点 API 密钥。使用与同一台机器上存在的密钥进行签名毫无意义——他们可以伪造机器将要签名的任何内容。唯一的持久证据是一个收据,这个收据是在资金已经存在的交易所铸造的:DutchBud 的虚拟信用闭环账本(dibs)。
真实的填补流程

- 匹配 — MarketMaker 或 Broker 在区域 API(本地交易台)上进行交叉。
- 封条 — DutchBud 记录名义腿部并返回
ledger_ref+ledger_code(与符号、数量、价格、各方、参考相关的 HMAC)。 - 发件箱 — 只有同时具有这两个字段的行才会被加入批次上传队列。未签名的插入项将被忽略,不参与联合发布。
- 中心摄入 — 对于每一行批次,中心要求 DutchBud 验证并消费收据一次。不匹配、缺少封条或重放 → 拒绝。
信任边界
铸币仍然留在银行角色上——这是我们金融科技堆栈中信任度最高的边界。区域节点可以通过内部银行API请求一个密封,就像生产已经密封MarketMaker资本一样;没有这个边界,它们无法发明一个有效的ledger_code。
中心节点也不铸币。它只验证。这保持了基础设施的诚实:托管托管边缘可能不如货币平面可信,但不会破坏多城市市场。
| 索赔 | 在敌对节点上谁可以伪造它 | 中心节点做了什么 |
|---|---|---|
| 出站行 | 操作员 | 未收到确认则忽略 |
| 节点API批处理 | 具有节点密钥的操作员 | 使用DutchBud验证每行 |
| DutchBud收据 | 仅银行边界 | 接受一次,绑定字段,消费 |
| 两个真的付钱的假账号 | 真实资金流动 | 不同的控制(站立,限制) |
为什么这符合数字主权
3DN为希望控制而不希望混乱的操作员构建基础设施和计算。区域市场是数字主权的一种形式:一个城市可以运行其边缘,但它不能通过编辑本地表来改写家庭资金故事。
关闭部署通道。账本收据关闭了伪磁带通道。网络更加紧密——不是因为我们信任每个盒子,而是因为我们不再要求盒子成为银行。
阅读配套架构文章:拉,不要推:PolitiCap区域节点如何自我更新.
工程在生产中继续:仅扩展迁移,GitLab跟踪的API,以及软件版本和问候年龄的运营指标。仪表板上的模式版本是下一个;货币是更尖锐的边缘。
发表回复