Big 25μ—μ„œμ˜ COBOL

λ°œν–‰: (2025λ…„ 12μ›” 6일 μ˜€μ „ 08:23 GMT+9)
7 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 λ°”μ΄λ„ˆλ¦¬μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€β€”μ „ 세계 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

μ‹œμŠ€ν…œμ€ λ‹€μŒμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€:

  1. 고정폭 input.dat 생성.
  2. cobol/bin/payroll을 μ‹€ν–‰ν•˜λŠ” μ„œλΈŒν”„λ‘œμ„ΈμŠ€ μ‹œμž‘.
  3. output.rpt 읽기.
  4. Baseμ—μ„œ κ°€μŠ€ μ—†λŠ” USDC 전솑 μ‹€ν–‰.

πŸ“œ Kiro κ΅¬ν˜„ μ„ΈλΆ€ 사항

  • 사양: requirements.mdκ°€ 23β€‘λ°”μ΄νŠΈ μž…λ ₯ μ œμ•½μ„ μ •μ˜ν•©λ‹ˆλ‹€.
  • μ œμ–΄: .kiro/steering/tech.md에 μžˆλŠ” β€œμ‹ μ„±ν•œ νƒ€μž„λΌμΈβ€ κ·œμΉ™μ€ COBOL λ‘œμ§μ„ Python으둜 λ¦¬νŒ©ν„°λ§ν•˜λŠ” 것을 κΈˆμ§€ν•©λ‹ˆλ‹€.
  • Hooks: μžλ™ λ°”μ΄λ„ˆλ¦¬ 컴파일 및 Python λͺ¨λΈ μ—…λ°μ΄νŠΈ.

πŸ’š (그리고 πŸ§Ÿβ€β™‚οΈ)와 ν•¨κ»˜ Kiroweenβ€―2025λ₯Ό μœ„ν•΄ μ œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Back to Blog

κ΄€λ ¨ κΈ€

더 보기 Β»

Show HN: 120개의 μ‹ μš©μ‘°ν•©μ—μ„œ λͺ¨κΈ°μ§€ 금리λ₯Ό λΉ„κ΅ν•˜λŠ” λŒ€μ‹œλ³΄λ“œλ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€

μ œκ°€ 집을 샀을 λ•Œ, μ˜€λž«λ™μ•ˆ μ΄μš©ν•΄ 온 λŒ€ν˜• 은행이 7% APR을 μ œμ‹œν–ˆμŠ΅λ‹ˆλ‹€. μ§€μ—­ μ‹ μš©μ‘°ν•©μ€ μ •ν™•νžˆ 같은 mortgage에 λŒ€ν•΄ 5.5%λ₯Ό μ œκ³΅ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ €λŠ” λ†€λžμŠ΅λ‹ˆλ‹€.

크립토 결제 κ²Œμ΄νŠΈμ›¨μ΄ μ„€λͺ…

μ•”ν˜Έν™”ν 결제 κ²Œμ΄νŠΈμ›¨μ΄ μ •μ˜ μ•”ν˜Έν™”ν 결제 κ²Œμ΄νŠΈμ›¨μ΄λŠ” μ£Όλ¬Έμ΄λ‚˜ μ²­κ΅¬μ„œμ™€ 같은 μ˜€ν”„μ²΄μΈ λΉ„μ¦ˆλ‹ˆμŠ€ 이벀트λ₯Ό μ—°κ²°ν•˜λŠ” μ„œλΉ„μŠ€ λ˜λŠ” λ‚΄λΆ€ ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€β€”

μ‹€μš©μ μΈ κ°€μ΄λ“œ: Fintech APIλ₯Ό μ—”λ“œνˆ¬μ—”λ“œλ‘œ ν…ŒμŠ€νŠΈν•˜κΈ° (μΆ”κ°€ μ½”λ”© 없이)

Fintech APIλŠ” κΉŒλ‹€λ‘­μŠ΅λ‹ˆλ‹€; payments, KYC, wallets, ledgers, refunds, transaction verification… λͺ¨λ“  것이 μ™„λ²½ν•˜κ²Œ μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ°€μž₯ μž‘μ€ 버그 ν•˜λ‚˜λ„ 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.