COBOL 在 Big 25

发布: (2025年12月6日 GMT+8 07:23)
5 min read
原文: Dev.to

Source: Dev.to

💀 灵感:浮点数幽灵

在 Web3 和现代 SaaS 的世界里,我们已经忘记了古老的神祇。我们在 JavaScript 和 Python 上构建金融系统,这些语言依赖 IEEE 754 浮点算术。在标准的现代环境中,简单的加法就可能因为二进制近似误差而产生可怕的结果:

0.1 + 0.2 = 0.30000000000000004

在一次 10,000,000 美元的工资发放中,这些“微小分”会累计。在传统银行业,这会导致审计失败;在加密世界,交易是不可变的,这会导致不可逆的金融损失。

我们自问:“如果把死去的东西复活来拯救未来会怎样?

⚡ 它是什么

DarkLedger(前称 Ledger‑De‑Main)是一种“弗兰肯斯坦”架构,它将最古老、最可靠的金融引擎(COBOL)与最新、最快的结算层(Base L2)缝合在一起。

  • 核心工资逻辑运行在编译后的 COBOL 二进制文件中——同样的技术支撑着全球 95 % 的 ATM 刷卡——确保 100 % 的十进制精度。
  • 一个 Python “神经系统”在区块链上执行付款。

🏗 我们是如何构建的(架构)

大脑:COBOL(遗留核心)

我们使用 Vibe Coding 生成了一个 GnuCOBOL 程序。该组件使用定点算术处理毛额到净额的逻辑。

对于以整数 (I) 存储、比例为 (10^2) 的货币值 (V):

[ V = \frac{I}{10^{2}} ]

这保证了税额计算的精确,例如:

[ \text{净工资} = (\text{工时} \times \text{时薪}) - \lfloor \text{毛额} \times 0.15 \rfloor - \lfloor \text{毛额} \times 0.05 \rfloor ]

缝合:Python 与 Agent Hooks

最大挑战是将现代基于 JSON 的前端连接到期待定宽文本文件的遗留二进制。我们使用 Kiro Agent Hooks 自动化了缝合过程。

Hook 行为:
每当保存 payroll.cbl 时,Kiro 解析 DATA DIVISION,提取字节位置(例如 PIC X(10)),并自动生成 Python struct 解析器。

接口规范

方向字节数字段
输入23 字节员工 ID、工时、时薪、税码
输出60 字节ID、毛额、税额、净额、状态

双手:在 Base 上结算

一旦“脑部”验证了数学计算,“身体”(Python)使用 Coinbase CDP SDK 将净工资转换为 Base L2 网络上的 USDC 交易。

🧟‍♂️ 挑战与经验教训

挑战 1:语言壁垒

COBOL 不说 JSON,它说字节。

经验: 现代的易用性会让我们对数据类型变得懒散。我们构建了一个刚性的字节级合约(在 design.md 中定义),确保 Python 永远不会向主机发送格式错误的数据。

挑战 2:容器化怪物

在云端运行 COBOL 并非标准做法。

经验: 我们创建了一个自定义 Docker 容器,充当“时间机器”:它安装轻量 Linux 操作系统,拉取 GnuCOBOL 编译器依赖,在构建时编译遗留代码,然后启动一个 FastAPI 服务器监听请求。

挑战 3:“审计防护”

“差不多就行”对工资来说根本不够。通过在 COBOL 中强制使用银行家舍入 (COMPUTE ROUNDED),我们达到了标准 JavaScript 库在不引入大量依赖的情况下难以复制的精度水平。

🚀 使用方法

运行容器

docker build -t ledger-de-main .

执行工资发放

进入 Retro‑Terminal UI 并运行批处理命令:

RUN PAYROLL --BATCH 2025-10-31

系统将会:

  1. 生成定宽的 input.dat
  2. 启动子进程运行 cobol/bin/payroll
  3. 读取 output.rpt
  4. 在 Base 上执行免 gas 的 USDC 转账。

📜 Kiro 实现细节

  • 规格: requirements.md 定义了 23 字节的输入约束。
  • 引导: .kiro/steering/tech.md 中的 “神圣时间线” 规则禁止将 COBOL 逻辑重构到 Python。
  • Hooks: 自动化二进制编译和 Python 模型更新。

用 💚(以及 🧟‍♂️)为 Kiroween 2025 构建。

Back to Blog

相关文章

阅读更多 »

2025年开发 fintech 应用的成本

Fintech 已经从小众走向主流。到 2025 年,用户期望即时 onboarding、实时支付、智能分析以及银行级安全成为默认配置……

从 Python 2 迁移到 Python 3

Python 2 在2020年1月结束了生命周期,但许多遗留项目仍在运行它。迁移到 Python 3 对于利用现代特性、...

大多数技术问题都是人际问题

我曾在一家公司的工作,该公司背负着巨大的技术债务——数百万行代码,没有单元测试,基于已经远远超出其生命周期的框架……