μ—°κ²° 쀑…
μ—°κ²° 쀑…
전체 보기
BQ
Telegram Β· @BQTelegram

πŸ“Œ ZK κ°œλ°œμžκ°€ μ•Œμ•„μ•Ό ν•  핡심 κ°œλ… 2편: μœ ν•œμ²΄ - 음수 없이 λΉΌκΈ°

κ²Œμ‹œ
2025.08.29 01:08
쑰회
1,769
ν¬μ›Œλ“œ
9
이미지
1μž₯
BQ@BQTelegram


μ•ˆλ…•ν•˜μ„Έμš”, BQκ°œλ°œμžμž…λ‹ˆλ‹€.

μ§€λ‚œ νŽΈμ—μ„œ μœ ν•œμ²΄λŠ” μ˜€λ²„ν”Œλ‘œμš°κ°€ 정상 λ™μž‘μ΄λΌκ³  ν–ˆμŠ΅λ‹ˆλ‹€.
μ˜€λŠ˜μ€ μ œκ°€ μ΄ν•΄ν•˜λŠ” 데 μ‹œκ°„μ΄ μ’€ 걸렸던 κ°œλ…μ„ λ‹€λ£Ήλ‹ˆλ‹€.

ZK 회둜λ₯Ό λ””λ²„κΉ…ν•˜λ‹€κ°€ μ΄μƒν•œ ν˜„μƒμ„ λ°œκ²¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
5 - 10을 κ³„μ‚°ν–ˆλŠ”λ° 21888242871839275222246405745257275088696311157297823662689037894645226208578이 λ‚˜μ˜€λŠ” κ±°μ£ .
버그인 쀄 μ•Œκ³  ν•œμ°Έ ν—€λ©œ 수 μžˆμ§€λ§Œ, μ•Œκ³  보면 μ •μƒμž…λ‹ˆλ‹€.

πŸ€” μŒμˆ˜κ°€ κ±°λŒ€ν•œ μ–‘μˆ˜κ°€ λ˜λŠ” 이유

일반적으둜 5 - 10 = -5죠.
그런데 μœ ν•œμ²΄μ—λŠ” μŒμˆ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. 0λΆ€ν„° p-1κΉŒμ§€λ§Œ μžˆμ–΄μš”.

그럼 5 - 10은 μ–΄λ–»κ²Œ ν‘œν˜„λ κΉŒμš”?

μœ ν•œμ²΄ Fpμ—μ„œλŠ” 0 μ•„λž˜λ‘œ κ°€λ©΄ λ°˜λŒ€νŽΈ 끝으둜 λŒμ•„μ˜΅λ‹ˆλ‹€.
0 - 1 = p - 1이 λ˜λŠ” κ±°μ£ .

5 - 10 = p - 5κ°€ 되고, 이게 λ°”λ‘œ κ·Έ 78자리 μˆ«μžμž…λ‹ˆλ‹€.

μ‹ κΈ°ν•œ 건 이 큰 μˆ˜κ°€ μ •ν™•νžˆ -5처럼 λ™μž‘ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€.
여기에 5λ₯Ό λ”ν•˜λ©΄ 0이 되고, 15λ₯Ό λ”ν•˜λ©΄ 10이 λ˜κ±°λ“ μš”.

1️⃣ 토큰 전솑 둜직의 λ³€ν™”

일반 ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 토큰 전솑을 κ΅¬ν˜„ν•  λ•ŒλŠ” 항상 μž”μ•‘μ„ λ¨Όμ € ν™•μΈν•©λ‹ˆλ‹€.
μž”μ•‘μ΄ λΆ€μ‘±ν•˜λ©΄ μŒμˆ˜κ°€ λ˜λ‹ˆκΉŒ 막아야 ν•˜μ£ .

μœ ν•œμ²΄μ—μ„œλŠ” λ‹€λ₯΄κ²Œ μ ‘κ·Όν•œλ‹€κ³  ν•©λ‹ˆλ‹€.

μž”μ•‘ 5μ—μ„œ 10을 λΉΌλ©΄ κ·Έ κ±°λŒ€ν•œ 78자리 μˆ«μžκ°€ λ‚˜μ˜΅λ‹ˆλ‹€.
정상적인 μž”μ•‘μ€ 보톡 20자리 μ΄ν•˜μΈλ°, κ°‘μžκΈ° 78μžλ¦¬κ°€ λ‚˜μ˜¨ κ±°μ£ .

이 "λΉ„μ •μƒμ μœΌλ‘œ 큰 κ°’"을 κ±ΈλŸ¬λ‚΄λŠ” λ°©μ‹μœΌλ‘œ λΆ€μ •ν•œ 전솑을 λ°©μ§€ν•œλ‹€κ³  ν•˜λ„€μš”.
쑰건문 λŒ€μ‹  κ°’μ˜ 크기둜 νŒλ‹¨ν•˜λŠ” κ±°μ£ .

2️⃣ νšŒλ‘œκ°€ λ‹¨μˆœν•΄μ§€λŠ” 효과

ZK νšŒλ‘œμ—μ„œ if-else 같은 뢄기문은 κ΅¬ν˜„μ΄ λ³΅μž‘ν•˜λ‹€κ³  ν•©λ‹ˆλ‹€.

"쑰건이 참이면 A, 거짓이면 B"λ₯Ό 회둜둜 λ§Œλ“€λ €λ©΄,
μ–‘μͺ½ 경둜λ₯Ό λ‹€ κ³„μ‚°ν•œ λ’€ μ„ νƒν•˜λŠ” ꡬ쑰가 ν•„μš”ν•˜λ‹€κ³  ν•˜λ”λΌκ³ μš”.

μœ ν•œμ²΄λ₯Ό ν™œμš©ν•˜λ©΄:

  • 쑰건 확인 없이 λ°”λ‘œ 계산
  • κ²°κ³Όκ°’μ˜ 크기둜 μœ νš¨μ„± νŒλ‹¨

직선적인 μ—°μ‚°μœΌλ‘œ μ²˜λ¦¬λ˜λ‹ˆ νšŒλ‘œκ°€ 간단해진닀고 ν•©λ‹ˆλ‹€.

3️⃣ μ œμ•½μ΄ 였히렀 νŽΈλ¦¬ν•¨μ„ λ§Œλ“œλŠ” 경우

μ²˜μŒμ—” μŒμˆ˜κ°€ μ—†λ‹€λŠ” 게 λΆˆνŽΈν•  것 κ°™μ•˜μŠ΅λ‹ˆλ‹€.

그런데 μƒκ°ν•΄λ³΄λ‹ˆ, 음수λ₯Ό λ”°λ‘œ κ΄€λ¦¬ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” κ±°...?
λΆ€ν˜Έ λΉ„νŠΈλ„ ν•„μš” μ—†κ³ , μ–‘μˆ˜μΈμ§€ μŒμˆ˜μΈμ§€ μ²΄ν¬ν•˜λŠ” μ½”λ“œλ„ ν•„μš” μ—†μ£ .

λͺ¨λ“  값을 λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆλ‹€λŠ” 점이 였히렀 μž₯점인 것 κ°™μŠ΅λ‹ˆλ‹€.

✏️ μœ ν•œμ²΄λ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ λŠλ‚€ 점 : μ—†λŠ” 게 μžˆλŠ” 것

μœ ν•œμ²΄ κ°œλ…μ„ 보면 μŒμˆ˜κ°€ "μ—†λ‹€"κ³  ν•˜μ§€λ§Œ, 사싀은 큰 μ–‘μˆ˜λ‘œ "μžˆλŠ”" κ±°λΌλŠ”μ ,
단지 ν‘œν˜„ 방식이 λ‹€λ₯Ό 뿐, μˆ˜ν•™μ  역할은 λ™μΌν•©λ‹ˆλ‹€.

μˆ˜ν•™μ΄ 정말 μž¬λ―ΈμžˆλŠ” 건, 없애버린 것(음수)이 사싀은 λ‹€λ₯Έ ν˜•νƒœ(큰 μ–‘μˆ˜)둜 μ™„λ²½ν•˜κ²Œ μ‘΄μž¬ν•œλ‹€λŠ” 점인 것 κ°™μŠ΅λ‹ˆλ‹€.
μ œμ•½μ„ λ§Œλ“€μ—ˆλ”λ‹ˆ 였히렀 더 μžμœ λ‘œμ›Œμ§„ κ±°μ£ .

-5λ“  p-5λ“ , 5λ₯Ό λ”ν•˜λ©΄ 0이 λ˜λŠ” 건 κ°™μœΌλ‹ˆκΉŒ..?

---

μ—¬λŸ¬λΆ„μ˜ μ’‹μ•„μš”μ™€ κ³΅μœ λŠ” μ‚¬λž‘μž…λ‹ˆλ‹€ πŸ₯°

#BQ개발자
#ZK개발
#μœ ν•œμ²΄
#μ˜μ§€μ‹μ¦λͺ…
#λΊ„μ…ˆ
쑰회1,769ν¬μ›Œλ“œ9ν…”λ ˆκ·Έλž¨μ—μ„œ 보기