Big 25μμμ COBOL
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 λ°μ΄λ리μμ μ€νλ©λλ€βμ μΈκ³ ATM μ¬μ©μ 95β―%λ₯Ό ꡬλνλ λμΌν κΈ°μ λ‘, 100β―% μμ§ μ λ°λλ₯Ό 보μ₯ν©λλ€.
- Python βμ κ²½κ³βκ° λΈλ‘체μΈμμ μ§κΈμ μ€νν©λλ€.
π κ΅¬μΆ λ°©λ² (μν€ν μ²)
λλ: COBOL (λ κ±°μ μ½μ΄)
μ°λ¦¬λ Vibe Codingμ μ¬μ©ν΄ GnuCOBOL νλ‘κ·Έλ¨μ μμ±νμ΅λλ€. μ΄ κ΅¬μ± μμλ κ³ μ μμμ μ°μ°μ μ¬μ©ν΄ μ΄μ‘βμμ‘ λ‘μ§μ μ²λ¦¬ν©λλ€.
ν΅ν κ° (V)λ₯Ό μ μ (I)μ μ€μΌμΌ (10^2)λ‘ μ μ₯νλ©΄:
[ V = \frac{I}{10^{2}} ]
μ΄λ μ νν μΈκΈ κ³μ°μ 보μ₯ν©λλ€, μλ₯Ό λ€μ΄:
[ \text{Net Pay} = (\text{Hours} \times \text{Rate}) - \lfloor \text{Gross} \times 0.15 \rfloor - \lfloor \text{Gross} \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 OSλ₯Ό μ€μΉνκ³ , GnuCOBOL μ»΄νμΌλ¬ μμ‘΄μ±μ κ°μ Έμ λΉλ μ λ κ±°μ μ½λλ₯Ό μ»΄νμΌν λ€ FastAPI μλ²λ₯Ό λμ μμ²μ μ²μ·¨ν©λλ€.
λμ β―3: βκ°μ¬β보μ¦β
βλμΆ© λ§λ€βλ κΈμ¬ κ³μ°μμ μΆ©λΆνμ§ μμ΅λλ€. COBOLμμ Bankerβs Rounding(COMPUTE ROUNDED)μ μ μ©ν¨μΌλ‘μ¨ νμ€ JavaScript λΌμ΄λΈλ¬λ¦¬κ° λ¬΄κ±°μ΄ μμ‘΄μ± μμ΄ λ³΅μ νκΈ° μ΄λ €μ΄ μ λ°λλ₯Ό λ¬μ±νμ΅λλ€.
π μ¬μ©λ²
컨ν μ΄λ μ€ν
docker build -t ledger-de-main .
κΈμ¬ μ€ν
RetroβTerminal UIλ‘ μ΄λν΄ λ°°μΉ λͺ λ Ήμ μ€νν©λλ€:
RUN PAYROLL --BATCH 2025-10-31
μμ€ν μ λ€μμ μνν©λλ€:
- κ³ μ ν
input.datμμ±. cobol/bin/payrollμ μ€ννλ μλΈνλ‘μΈμ€ μμ.output.rptμ½κΈ°.- Baseμμ κ°μ€ μλ USDC μ μ‘ μ€ν.
π Kiro ꡬν μΈλΆ μ¬ν
- μ¬μ:
requirements.mdκ° 23βλ°μ΄νΈ μ λ ₯ μ μ½μ μ μν©λλ€. - μ μ΄:
.kiro/steering/tech.mdμ μλ βμ μ±ν νμλΌμΈβ κ·μΉμ COBOL λ‘μ§μ PythonμΌλ‘ 리ν©ν°λ§νλ κ²μ κΈμ§ν©λλ€. - Hooks: μλ λ°μ΄λ리 μ»΄νμΌ λ° Python λͺ¨λΈ μ λ°μ΄νΈ.
π (κ·Έλ¦¬κ³ π§ββοΈ)μ ν¨κ» Kiroweenβ―2025λ₯Ό μν΄ μ μλμμ΅λλ€.