ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
비트코ì¸: ê°œì¸ê°„ ì „ìží™”í 시스템
사토시 나카모토
satoshin@gmx.com
www.bitcoin.org

ì´ˆë¡. 순 ê°œì¸ê³¼ ê°œì¸ê°„ì˜ ì „ìží™”í는 í•œ 집단ì—ì„œ 다른 곳으로
ê¸ˆìœµê¸°ê´€ì„ ê±°ì¹˜ì§€ ì•Šê³  ì§ì ‘ 온ë¼ì¸ ì§€ë¶ˆì„ ê°€ëŠ¥í•˜ê²Œ í•  것ì´ë‹¤.
디지털 서명 ê¸°ìˆ ì´ ì¼ë¶€ 해결해주지만, ë¯¿ì„ ìˆ˜ 있는 ì œ 3ìžê°€
ì´ì¤‘ì§€ë¶ˆì„ ë°©ì§€í•´ì•¼ 한다면 ê·¸ 주요한 장ì ì€ 사ë¼ì§€ê²Œ ëœë‹¤.
우리는 ì´ ë…¼ë¬¸ì—ì„œ P2P 네트워í¬ë¥¼ ì´ìš©í•œ ì´ì¤‘지불 ë¬¸ì œì˜ í•´
ê²° ë°©ë²•ì„ ì œì•ˆí•˜ê³ ìž í•œë‹¤. ê³„ì† ì§„í–‰ë˜ê³  있는 암호화 기반 ìž‘
ì—…ì¦ëª… ê³¼ì •ì˜ ì—°ì‡„ ìƒì—ì„œ ë„¤íŠ¸ì›Œí¬ ì‹œê°„ ë° ê±°ëž˜ë¥¼ 암호화하여
기ë¡ì„ ìƒì„±í•˜ê²Œ ë˜ë©´ ìž‘ì—…ì¦ëª… ê³¼ì •ì„ ë˜í’€ì´í•˜ì§€ 않는 í•œ 바꿀
수 없게 ëœë‹¤. 가장 긴 ì²´ì¸ì€ ê° ì‚¬ê±´ 순서를 ìž…ì¦í•´ì£¼ê¸°ë„ 하
ë©°, 가장 ë§Žì€ ì»´í“¨íŒ… 파워가 ìž…ì¦í–ˆë‹¤ëŠ” 뜻ì´ê¸°ë„ 하다. 노드들
ì— ì˜í•´ 제어ë˜ëŠ” 컴퓨터 ì „ë ¥ì˜ ê³¼ë°˜ìˆ˜ê°€ 협력하여 네트워í¬ë¥¼
공격하지 않는 í•œ, ê·¸ë“¤ì€ ê°€ìž¥ 긴 ì²´ì¸ì„ ìƒì„±í•˜ë©° ë„¤íŠ¸ì›Œí¬ ê³µ
격ìžë¥¼ 능가하게 ë  ê²ƒì´ë‹¤. ì´ëŸ¬í•œ 네트워í¬ëŠ” ìµœì†Œí•œì˜ êµ¬ì¡°ë¥¼
필요로 한다. ê° ë…¸ë“œë“¤ì€ ìžë°œì ìœ¼ë¡œ ê·¸ 네트워í¬ë¥¼ 떠나거나
다시 합류할 수 있고, ì–´ë–¤ ì¼ì´ ë²Œì–´ì¡ŒëŠ”ì§€ì— ëŒ€í•œ ìž…ì¦ìœ¼ë¡œ ê°€
장 긴 ìž‘ì—…ì¦ëª… ì²´ì¸ì„ 받아들ì´ëŠ” ë…¸ë“œë“¤ì˜ ë©”ì‹œì§€ê°€ 최대한 ê³µ
유ëœë‹¤.

1. 서론
ì¸í„°ë„·ì—ì„œì˜ ìƒê±°ëž˜ëŠ” ê±°ì˜ ê¸ˆìœµê¸°ê´€ì„ ì œ 3ìž ì‹ ìš©ê¸°ê´€ìœ¼ë¡œ 하는 ì „ìžì§€ë¶ˆ ë°©ì‹ì— ì „ì ìœ¼ë¡œ ì˜ì¡´
하게 ë˜ì—ˆë‹¤. ëŒ€ë¶€ë¶„ì˜ ê±°ëž˜ì— ì‹œìŠ¤í…œì€ ì¶©ë¶„ížˆ ìž‘ë™í•˜ê³  있지만, 여전히 신용기반 모ë¸ì´ë¼ëŠ” 내재ì 
ì¸ ì•½ì ì„ ê°–ê³  있다. 완전히 취소 가능한 거래는 ì‚¬ì‹¤ìƒ ë¶ˆê°€ëŠ¥í•œë°, ê¸ˆìœµê¸°ê´€ì€ ê±°ëž˜ ìƒì˜ 분ìŸì„ 중
재하는 ì¼ì„ 피할 수 없기 때문ì´ë‹¤. ì´ëŸ¬í•œ 중재 ë¹„ìš©ì€ ê²°êµ­ 거래 수수료를 올리고, 실질ì ì¸ 최소
ê±°ëž˜ê¸ˆì•¡ì„ ì œí•œí•˜ì—¬ 소액 ê±°ëž˜ì˜ ê°€ëŠ¥ì„±ì„ ë§‰ëŠ”ë°ë‹¤ê°€, 회수가 불가능한 서비스ì—ê¹Œì§€ë„ ë²ˆë³µ 가능한
ì§€ë¶ˆì„ í•˜ê²Œ 만들어 ë” ë§Žì€ ë¹„ìš©ì„ ë°œìƒì‹œí‚¨ë‹¤. 즉, 지불 ë²ˆë³µì„ ìœ„í•´ ë” ë§Žì€ ì‹ ìš©ì„ ìš”êµ¬í•˜ê²Œ ëœë‹¤.
ìƒì—…ìžë“¤ì€ 불필요한 ë” ë§Žì€ ì •ë³´ë¥¼ 요구하여 ê³ ê°ì„ 귀찮게 만들고 경계하게 ëœë‹¤. ì¼ì •í•œ 비율로 ê°€
짜 ì§€ë¶ˆì´ ë˜ëŠ” ê²ƒì€ ë¶ˆê°€í”¼í•œ 현실ì´ë‹¤. ì´ëŸ¬í•œ 비용과 ì§€ë¶ˆì˜ ë¶ˆí™•ì‹¤ì„±ì€ ì‚¬ëžŒì´ ì§ì ‘ 물리ì ìœ¼ë¡œ í™”
í를 지불하여 피할 수 있으나, 신용기관 ì—†ì´ í†µì‹ ìƒìœ¼ë¡œ 지불하는 ë°©ë²•ì€ ì¡´ìž¬í•˜ì§€ 않는다.
ì´ëŸ¬í•œ 문제는 바로 신용보다는 암호화 ê¸°ìˆ ì— ê¸°ë°˜í•œ ì „ìžì§€ë¶ˆ ì‹œìŠ¤í…œì„ ì´ìš©í•˜ì—¬ ìžë°œì ì¸ ë‘ ê±°
래ìžê°€ ì œ 3ìžì¸ 신용기관 ì—†ì´ë„ ì§ì ‘ì ì¸ 거래를 가능하게 만든다. ì „ì‚°ì ìœ¼ë¡œ ë²ˆë³µì´ ë¶ˆê°€ëŠ¥í•œ 송금
ì€ íŒë§¤ìžë¥¼ 가짜 지불로부터 보호할 수 있으며, 구매ìžëŠ” ì¼ë°˜ ì—스í¬ë¡œ ë°©ì‹ì„ 통해 ë³´í˜¸ë°›ì„ ìˆ˜ 있
다. ì´ ë…¼ë¬¸ì—ì„œ 우리는 ê±°ëž˜ë“¤ì˜ ì‹œê°„ 순서를 ì „ì‚°ì ìœ¼ë¡œ ìž…ì¦í•˜ê²Œ 만들ë„ë¡ í•˜ëŠ” P2P 분산 네트워í¬
기반 타임스탬프 서버를 ì´ìš©í•˜ì—¬ ì´ì¤‘지불 문제를 방지하는 í•´ë²•ì„ ì œì•ˆí•˜ê³ ìž í•œë‹¤. ì´ ì‹œìŠ¤í…œì€ ì•…
ì˜ì ìœ¼ë¡œ 협력하는 노드 그룹보다 ì •ì§í•œ ë…¸ë“œë“¤ì´ ë” ë§Žì€ ì»´í“¨íŒ… 파워를 ì´ì²´ì ìœ¼ë¡œ 제어하는 í•œ 안
전하다.

1
2. 거래
우리는 ì „ìž í™”í를 디지털 ì„œëª…ì˜ ì—°ì†ìœ¼ë¡œ ì •ì˜í•œë‹¤. ê° ì•”í˜¸í‚¤ 소유ìžë“¤ì€ ê·¸ ì „ê¹Œì§€ì˜ ê±°ëž˜ ë‚´ì—­
ì— ë‹¤ìŒ ì†Œìœ ìžì˜ 공개키를 ë§ë¶™ì¸ ë’¤ì— ìžì‹ ì˜ 비밀키로 암호화하는 디지털 ì„œëª…ì„ í•˜ê³  넘긴다. ëˆì„
받는 ì‚¬ëžŒì€ ì„œëª… 소유ìžë“¤ì˜ ì²´ì¸ê³¼, ì„œëª…ë“¤ì„ ê²€ì¦í•  수 있다.

ë¬¸ì œì˜ ê³¼ì •ì€ ëˆì„ 받는 ì‚¬ëžŒì€ ì†Œìœ ìžë“¤ 중 í•œ ëª…ì´ ì´ì¤‘ì§€ë¶ˆì„ í•˜ì§€ 않았는지 ê²€ì¦í•  수가 없는
ìƒí™©ì—ì„œ ë°œìƒí•œë‹¤. 공통ì ì¸ í•´ë²•ì€ ê° ê±°ëž˜ê°€ ì´ì¤‘ì§€ë¶ˆì´ ë˜ì—ˆëŠ”지 신용해주는 ì¤‘ì•™ê¸°ê´€ì„ ë„입하는
것ì´ë‹¤. ê° ê±°ëž˜ 후ì—, ê·¸ í™”í는 다시 새로운 í™”íë¡œ ì°ì–´ë‚´ê¸° 위해 중앙기관으로 회수ë˜ì–´ì•¼ 하고, ì´
ì¤‘ì§€ë¶ˆì´ ì•„ë‹ˆëž€ 걸 ë¯¿ì„ ìˆ˜ 있ë„ë¡ ì¤‘ì•™ê¸°ê´€ì—서만 ì§ì ‘ í™”í를 발행하여 ì“°ë„ë¡ í•œë‹¤. ì´ëŸ¬í•œ 방법ì˜
문제는 í™”í 시스템 ì „ì²´ê°€ 바로 ì€í–‰ ê°™ì€ ì¤‘ì•™ê¸°ê´€ì— ëª¨ë“  거래 ë‚´ì—­ì´ ê±°ì³ê°€ë„ë¡ í•˜ëŠ” ë°©ë²•ì— ì˜ì¡´
하게 ëœë‹¤ëŠ” 것ì´ë‹¤.
ê²°êµ­ ëˆì„ 받는 ì‚¬ëžŒì´ ì´ì „ 소유ìžê°€ ê·¸ ì „ì—ë„ ì–´ë–¤ 거래ì—ë„ ì„œëª…ì„ í•˜ì§€ 않았는지를 확ì¸í•  ë°©
ë²•ì´ í•„ìš”í•˜ë‹¤. 그러려면 가장 먼저 ì¼ì–´ë‚œ 거래 ë‚´ì—­ì„ ì°¾ê¸°ë§Œ í•´ë„ ê·¸ ì´í›„ì— ì´ì¤‘ì§€ë¶ˆì„ ì‹œë„했는지
확ì¸í•  필요가 없게 ëœë‹¤. 거래 ë‚´ì—­ì´ í•˜ë‚˜ë¼ë„ 비어있는지 확ì¸í•˜ëŠ” 유ì¼í•œ ë°©ë²•ì€ ëª¨ë“  거래 ë‚´ì—­ì„
살펴보는 것ì´ë‹¤. 바로 ì°ì–´ë‚¸ í™”í를 기반으로 í•œ 모ë¸ì—서는 모든 거래를 확ì¸í•˜ê³  ì–´ëŠ ê²ƒì´ ë¨¼ì €
ì´ë¤„졌는지를 결정하면 ëœë‹¤. ì‹ ìš©ê¸°ê´€ì„ í†µí•˜ì§€ ì•Šê³ ë„ ì´ëŸ° ë°©ë²•ì„ ê°€ëŠ¥í•˜ê²Œ 하기 위해서는, 모든 ê±°
래가 공개ì ìœ¼ë¡œ 알려져야 하고[1], 참여ìžë“¤ì´ 시간 ìˆœì„œì— ë”°ë¼ ë‹¨ì¼ ê±°ëž˜ë‚´ì—­ìœ¼ë¡œ 수용하는 시스템ì´
필요하다. ëˆì„ 받는 ì‚¬ëžŒì€ ë§¤ 거래 시마다, 과반수 ì´ìƒì˜ ë…¸ë“œë“¤ì´ ìµœì´ˆì˜ ê±°ëž˜ë¼ê³  ì¸ì •í•´ì£¼ëŠ” ì‹œ
ê°„ ì¦ëª…ì´ í•„ìš”í•˜ê²Œ ëœë‹¤.

3. 타임스탬프 서버
우리가 제안하는 í•´ê²° ë°©ë²•ì€ íƒ€ìž„ìŠ¤íƒ¬í”„ 서버ì—ì„œ 시작ëœë‹¤. 타임스탬프 서버는 시간 ë‚´ì—­ì´ ê¸°ë¡ëœ
í•­ëª©ë“¤ì˜ ë¸”ë¡ í•´ì‹œë¥¼ 취합하고, 신문ì´ë‚˜ 유즈넷 í¬ìŠ¤íŠ¸ì²˜ëŸ¼ ê·¸ 해시를 ë„리 발행하는 ì—­í• ì„ í•œë‹¤
[2~5]. ì´ëŸ¬í•œ 타임스탬프 ë‚´ì—­ì€ í•´ì‹œì— í¬í•¨ë  수 있ë„ë¡ ê·¸ ì‹œê°„ì— ë°ì´í„°ê°€ 명백히 존재했다는 것
ì„ ìž…ì¦í•œë‹¤. ê° íƒ€ìž„ìŠ¤íƒ¬í”„ ë‚´ì—­ì€ ì´ì „ 타임스탬프로부터 ë°›ì€ í•´ì‹œ ë‚´ì—­ì„ í¬í•¨ì‹œí‚´ìœ¼ë¡œì¨ 보강하는
ì²´ì¸ì„ 형성한다.

2
4. ìž‘ì—…ì¦ëª…
P2P를 기반으로 하는 분산 ë„¤íŠ¸ì›Œí¬ íƒ€ìž„ìŠ¤íƒ¬í”„ 서버를 구현하기 위해서는 신문ì´ë‚˜ 유즈넷 í¬ìŠ¤íŠ¸
대신 Adam Back’s Hashcash[6]와 비슷한 ìž‘ì—…ì¦ëª… ì‹œìŠ¤í…œì„ ì´ìš©í•  필요가 있다. ìž‘ì—…ì¦ëª…ì—는 SHA256ê³¼ ê°™ì€ ì•Œê³ ë¦¬ì¦˜ìœ¼ë¡œ ë‹¤ìˆ˜ì˜ 0비트들로 시작ë˜ëŠ” 암호화 í•´ì‹œê°’ì„ ì°¾ëŠ” ê³¼ì •ì´ í¬í•¨ëœë‹¤. í‰ê· ì 
으로 ì´ëŸ¬í•œ ìž‘ì—…ì— ë“œëŠ” ì‹œê°„ì€ ì—°ì†ë˜ëŠ” 0ë¹„íŠ¸ì˜ ìš”êµ¬ ê°œìˆ˜ì— ë”°ë¼ ì§€ìˆ˜ì ìœ¼ë¡œ ì¦ê°€í•˜ë©°, 암호화 í•´
시를 한번 수행하는 것으로 확ì¸í•  수 있다.
타임스탬프 네트워í¬ì—서는 ìž‘ì—…ì¦ëª…ì˜ ë°©ë²•ìœ¼ë¡œ ë¸”ë¡ í•´ì‹œ 결과가 0ë¹„íŠ¸ë“¤ì„ ê°–ë„ë¡ í•˜ëŠ” 해시값ì„
ì°¾ì„ ë•Œê¹Œì§€ 블ë¡ì— 임시값(nonce)ì„ ì¦ê°€ì‹œì¼œê°€ëŠ” ê³¼ì •ì„ êµ¬í˜„í•œë‹¤. CPUê°€ 노력한 결과가 한번 ìž‘ì—…
ì¦ëª… ì¡°ê±´ì— ë„달하게 ë˜ë©´, ê·¸ 블ë¡ì€ 다시 ê³¼ì •ì„ ë²ˆë³µí•˜ì§€ 않는 í•œ ê³ ì •ëœë‹¤. ê·¸ ë‹¤ìŒ ë¸”ë¡ë“¤ì´ ì²´
ì¸ì„ 형성함으로ì¨, í•˜ë‚˜ì˜ ë¸”ë¡ì„ 변경하기 위해서는 ê·¸ 블ë¡ì„ í¬í•¨í•œ ë‹¤ìŒ ëª¨ë“  블ë¡ë“¤ì— 대해 ìž‘ì—…
ì¦ëª… ê³¼ì •ì„ ë‹¤ì‹œ 수행해야 하게 ëœë‹¤.

ìž‘ì—…ì¦ëª…ì€ ë˜í•œ ë‹¤ìˆ˜ê²°ì— ì˜í•œ ì˜ì‚¬ê²°ì • 과정ì—ì„œ 대표ìžë¥¼ 결정하는 문제를 해결한다. 다수가 í•œ
IP주소당 í•œë²ˆì˜ íˆ¬í‘œë¥¼ í•  수 있는 시스템 기반으로 ê²°ì •ëœë‹¤ë©´, IP주소를 ë§Žì´ í™•ë³´í•˜ëŠ” 방법으로 누
구나 ì‹œìŠ¤í…œì„ ë’¤ì—Žì–´ë²„ë¦´ 수 있다. 그러나 ìž‘ì—…ì¦ëª…ì€ ë³¸ì§ˆì ìœ¼ë¡œ í•œ ê°œì˜ CPU당 í•œ ë²ˆì˜ íˆ¬í‘œë¥¼ 하
는 구조ì´ë‹¤. ë‹¤ìˆ˜ì˜ ê²°ì •ì€ ê°€ìž¥ 긴 ì²´ì¸ì„ 나타내며, ì´ëŠ” 가장 ë§Žì€ ìž‘ì—…ì¦ëª…ì— ë…¸ë ¥ì´ íˆ¬ìž…ëœ ê²ƒì´
ëœë‹¤. 컴퓨팅 íŒŒì›Œì˜ ê³¼ë°˜ìˆ˜ê°€ ì •ì§í•œ ë…¸ë“œë“¤ì— ì˜í•´ 제어ë˜ê³  있다면, ì •ì§í•œ ì²´ì¸ì´ 가장 빠르게 늘
어나, ê²½ìŸ ì²´ì¸ì„ ì••ë„하게 ë  ê²ƒì´ë‹¤. (ì—­ìž ì£¼: 실제로는 Emin Gün Sirer, Ittay Eyalì— ì˜í•´ ì „ì²´ 컴퓨팅 파
ì›Œì˜ ê³¼ë°˜ìˆ˜ì¸ 50% ì´ìƒì´ ì•„ë‹ˆë¼ 25% ì´ìƒë§Œ ì ìœ í•´ë„ ëœë‹¤ê³  ë°í˜€ì¡ŒëŠ”ë°, 현재 ì „ì²´ 순위 1~2ìœ„ì˜ ë§ˆì´ë‹
í’€ ì§‘ë‹¨ì€ 25% ì´ìƒì— 달하고 있ìŒ.) ê³¼ê±°ì˜ ë¸”ë¡ì„ 수정하기 위해서는 공격ìžëŠ” 수정할 블ë¡ê³¼ ê·¸ ì´í›„

ì— ì´ì–´ì§„ 모든 블ë¡ì— 대해 ìž‘ì—…ì¦ëª… ê³¼ì •ì„ ë²ˆë³µí•œ 다ìŒì— ì´ì–´ì„œ 다른 ì •ì§í•œ ë…¸ë“œë“¤ì´ ì´ë£¨ê³  있는
ì²´ì¸ë³´ë‹¤ ë” ë¹ ë¥¸ ì†ë„ë¡œ ë”°ë¼ìž¡ì•„ 추월해야 한다. ëŠë¦° 공격ìžì˜ 추격 ê°€ëŠ¥ì„±ì€ ë¸”ë¡ë“¤ì´ ì´ì–´ì„œ 추가
ë  ìˆ˜ë¡ ì§€ìˆ˜ì ìœ¼ë¡œ ê°ì†Œí•˜ëŠ” ê²ƒì— ëŒ€í•´ ë’¤ì—ì„œ 언급하기로 한다.
ì‹œê°„ì´ íë¦„ì— ë”°ë¼ í•˜ë“œì›¨ì–´ ì†ë„ ì¦ê°€ì™€ ë…¸ë“œë“¤ì˜ ì°¸ì—¬ë„ ì¦ê°€ìœ¨ì„ ë³´ìƒí•˜ê¸° 위해서, ìž‘ì—…ì¦ëª…ì˜
ë‚œì´ë„는 시간당 í‰ê·  ë¸”ë¡ ìƒì„± 수를 기준으로 하는 ì´ë™í‰ê· ì„ 타깃으로 결정한다. 블ë¡ì´ 너무 빠르
게 ìƒì„±ë˜ë©´ ë‚œì´ë„는 급ì¦í•œë‹¤.

5. 네트워í¬
네트워í¬ì˜ ë™ìž‘ì€ ë‹¤ìŒê³¼ ê°™ì€ ê³¼ì •ìœ¼ë¡œ ì´ë£¨ì–´ì§„다:
1) 새로운 거래 ë‚´ì—­ì´ ëª¨ë“  ë…¸ë“œì— ì•Œë ¤ì§„ë‹¤.
2) ê° ë…¸ë“œë“¤ì€ ìƒˆë¡œìš´ 거래 ë‚´ì—­ì„ ë¸”ë¡ì— 취합한다.
3) ê° ë…¸ë“œë“¤ì€ ê·¸ 블ë¡ì— 대한 ìž‘ì—…ì¦ëª…ì„ ì°¾ëŠ” ê³¼ì •ì„ ìˆ˜í–‰í•œë‹¤.
4) ì–´ë–¤ 노드가 ìž‘ì—…ì¦ëª…ì„ ì„±ê³µì ìœ¼ë¡œ ìˆ˜í–‰í–ˆì„ ë•Œ, 모든 노드ì—게 ê·¸ 블ë¡ì„ 전송한다.
5) ë…¸ë“œë“¤ì€ ê·¸ 블ë¡ì´ 모든 거래가 ì´ì „ì— ì“°ì´ì§€ ì•Šê³  유효한 경우ì—만 승ì¸í•œë‹¤.
6) ë…¸ë“œë“¤ì€ ìžì‹ ì´ 승ì¸í•œ 블ë¡ì˜ 해시를 ì´ì „ 해시로 사용하여 ë‹¤ìŒ ë¸”ë¡ì„ ìƒì„±í•˜ëŠ” 과정ì„
통해 ê·¸ 블ë¡ì´ 승ì¸ë˜ì—ˆë‹¤ëŠ” ì˜ì‚¬ë¥¼ 나타낸다.
ë…¸ë“œë“¤ì€ í•­ìƒ ê°€ìž¥ 긴 ì²´ì¸ì„ ì˜³ì€ ê²ƒìœ¼ë¡œ 간주하며 ê·¸ ì²´ì¸ì´ ê³„ì† í™•ìž¥í•˜ë„ë¡ ìž‘ì—…ì„ ìˆ˜í–‰í•œë‹¤.

3
만약 ë‘ ê°œì˜ ë…¸ë“œê°€ 서로 다른 ë²„ì „ì˜ ë‹¤ìŒ ë¸”ë¡ì„ ë™ì‹œì— 알리게 ë  ê²½ìš°, ì–´ë–¤ ë…¸ë“œë“¤ì€ ë‘˜ 중 하나
를 먼저 전달받게 ëœë‹¤. ì´ëŸ¬í•œ 경우 ê° ë…¸ë“œë“¤ì€ ìžì‹ ì´ 먼저 ë°›ì€ ë¸”ë¡ì— 대해 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ì§€ë§Œ,
ì²´ì¸ì˜ 다른 ê°ˆëž˜ë„ ë” ê¸¸ì–´ì§ˆ ê²½ìš°ì— ëŒ€ë¹„í•˜ì—¬ 저장해둔다. ì²´ì¸ì˜ ì–´ëŠ í•œìª½ 갈래가 ë” ê¸¸ê²Œ ìƒì„±ë˜
는 ìž‘ì—…ì¦ëª…ì´ ì•Œë ¤ì§€ë©´ ì²´ì¸ ê°ˆëž˜ì˜ ê¸¸ì´ëŠ” ë” ì´ìƒ 대등하지 않게 ë˜ê³ , ê° ë…¸ë“œë“¤ì€ ì²´ì¸ì´ ë” ê¸´
갈래로 ìž‘ì—…ì„ ì „í™˜í•œë‹¤.
새로운 거래 ë‚´ì—­ ì•Œë¦¼ì´ ê¼­ 모든 노드ì—까지 ì „ë‹¬ë  í•„ìš”ëŠ” 없으며, ë§Žì€ ë…¸ë“œì— ì „ë‹¬ë ìˆ˜ë¡ ë” ë¹¨
리 블ë¡ì— í¬í•¨ë  것ì´ë‹¤. ë¸”ë¡ ì•Œë¦¼ì€ ë˜í•œ 누ë½ë˜ëŠ” 경우ì—ë„ ì·¨ì•½í•˜ì§€ 않다. 만약 í•œ 노드가 블ë¡ì„
받지 ëª»í–ˆì„ ê²½ìš°, ë‹¤ìŒ ë¸”ë¡ì„ 받고 하나가 ë¹ ì¡ŒìŒì„ 알아차려 다시 요청해 ë°›ì„ ê²ƒì´ë‹¤.

6. ë³´ìƒ
블ë¡ì˜ 첫번째 거래 ë‚´ì—­ì€ ì•½ì†ì— ì˜í•´ 최초 ë¸”ë¡ ìƒì„±ìžì—게 새로운 ëˆì„ 소유할 수 있게 해주는
특별한 거래가 ëœë‹¤. ì´ë ‡ê²Œ 하면 ëˆì„ 발행하는 중앙기관 ì—†ì´ë„ 네트워í¬ë¥¼ 구성하는 모든 노드들ì—
게 ë³´ìƒì„ 지급하고, ìœ í†µë  ëˆì„ 처ìŒì— 배분하는 ë°©ë²•ì´ ëœë‹¤. 지ì†ì ì¸ ì¼ì •ëŸ‰ì˜ 새 ëˆì„ 추가하는
ê±´ ê¸ˆì„ ìœ í†µí•  수 있게 ê´‘ë¶€ë“¤ì´ ìžì›ì„ ìŸëŠ” 것과 유사하다. ì´ ê²½ìš°ì—는 컴퓨팅 ìžì›ê³¼ ì „ë ¥ì´ ì†Œë¹„
ëœë‹¤.
ë³´ìƒì—는 ë˜í•œ 거래 수수료가 ë  ìˆ˜ë„ ìžˆë‹¤. 거래 ë‚´ì—­ì—ì„œ 출력ë˜ëŠ” ëˆì´ ìž…ë ¥ë˜ëŠ” ëˆë³´ë‹¤ ì ë‹¤ë©´,
ê·¸ ì°¨ì•¡ì€ ìˆ˜ìˆ˜ë£Œì²˜ëŸ¼ 작용하여 ê·¸ 거래 ë‚´ì—­ì„ í¬í•¨í•˜ëŠ” ë¸”ë¡ ìƒì„±ì˜ ë³´ìƒ ê°€ì¹˜ë¡œ 추가ëœë‹¤. 정해진
ì´ëŸ‰ì˜ ëˆì´ ìœ í†µëœ ë‹¤ìŒë¶€í„°ëŠ”, ë³´ìƒì€ 거래 수수료만으로 ì´ë¤„지며 ì¸í”Œë ˆì´ì…˜ìœ¼ë¡œë¶€í„° 완전히 ìžìœ 
롭게 ëœë‹¤.
ì´ëŸ¬í•œ ë³´ìƒ ì‹œìŠ¤í…œì€ ê° ë…¸ë“œë“¤ì´ ì •ì§í•˜ê²Œ 참여를 유지할 수 있ë„ë¡ í•œë‹¤. ìš•ì‹¬ì„ ë‚¸ 공격ìžê°€ 다
른 ì •ì§í•œ ì „ì²´ 노드들보다 ë” ë§Žì€ ì»´í“¨íŒ… 파워를 만들어낼 수 있다면, 그는 ì•„ë§ˆë„ ë‹¤ë¥¸ 사람들로부
í„° ì§€ë¶ˆì„ ì² íšŒí•˜ì—¬ ëˆì„ 사취하거나 새로운 ëˆì„ ìƒì„±í•˜ë ¤ 해야 í•  것ì´ë‹¤. 하지만 그런 ì‹ìœ¼ë¡œ 다른
ì‚¬ëžŒë“¤ì´ ì—®ì´ì§€ ì•Šê³  ì‹œìŠ¤í…œì„ ì•½í™”ì‹œì¼œ ìžì‹ ì˜ 부를 축ì í•˜ëŠ” ì´ê¸°ì ì¸ 방법보다는 약ì†ëŒ€ë¡œ ì •ì§í•˜
게 ì‹œìŠ¤í…œì— ì°¸ì—¬í•˜ëŠ” ê²ƒì´ ë” ì´ë“ì´ë¼ëŠ” 걸 알게 ë  ê²ƒì´ë‹¤.

7. 저장 공간 재확보
최근 거래 ë‚´ì—­ì— ìžˆë˜ ëˆì´ 충분히 ë§Žì€ ë¸”ë¡ì— ì˜í•´ 묻히게 ë˜ë©´, 지나간 거래 ë‚´ì—­ì€ ì €ìž¥ 공간
확보를 위해 ë²„ë ¤ì ¸ë„ ëœë‹¤. ë¸”ë¡ í•´ì‹œë¥¼ 다시 헤집지 ì•Šê³ ë„ ì´ë¥¼ 수월하게 하기 위해서는, 거래 ë‚´ì—­
ì€ ë¨¸í´íŠ¸ë¦¬(Merkle Tree) 구조로 해시가 ë˜ë©°[7][2][5], 머í´íŠ¸ë¦¬ êµ¬ì¡°ì˜ ë£¨íŠ¸ 부분만 ë¸”ë¡ í•´ì‹œì— í¬í•¨
ë˜ì–´ì•¼ 한다. ì˜¤ëž˜ëœ ë¸”ë¡ì€ 트리 구조ì—ì„œ 가지를 ì³ëƒ„ìœ¼ë¡œì¨ ë” ìž‘ì•„ì§€ê²Œ ë˜ë©°, 하위 해시는 저장할
필요가 없게 ëœë‹¤.

4
거래 ë‚´ì—­ì´ ì—†ëŠ” ë¸”ë¡ í—¤ë”는 약 80ë°”ì´íŠ¸ ì •ë„ì´ë‹¤. 매 10분마다 블ë¡ì´ ìƒì„±ëœë‹¤ê³  가정할 경우,
80ë°”ì´íŠ¸ * 6 * 24 * 365 = 4.2MBê°€ 매년 소요ëœë‹¤. 2008ë…„ 기준으로 ì‹œì¤‘ì— íŒë§¤ë˜ê³  있는, 2GB
메모리가 ìž¥ì°©ëœ ì»´í“¨í„° 시스템과, 매년 1.2GBê°€ ì¦ê°€í•  ê±°ë¼ ì˜ˆì¸¡í•œ ë¬´ì–´ì˜ ë²•ì¹™ì— ì˜í•˜ë©´, ë¸”ë¡ í—¤
ë”ê°€ 메모리를 ì ìœ í•˜ê³  있어야 하ë”ë¼ë„ 문제가 ë˜ì§€ 않는다. (ì—­ìž ì£¼: ë¬´ì–´ì˜ ë²•ì¹™ì€ ë³¸ë¬¸ê³¼ 달리 18ê°œ
ì›”ì— ë‘ ë°°ê°€ ëœë‹¤ëŠ” 예측ì´ë‹¤. 즉, 매년 약 1.59ë°°ë¡œ ì¦ê°€)

8. 지불 ìž…ì¦ ê°„ì†Œí™”
êµ³ì´ ì „ì²´ ë„¤íŠ¸ì›Œí¬ ë…¸ë“œë¥¼ 쓰지 ì•Šë”ë¼ë„, ëˆì´ ì§€ë¶ˆëœ ì‚¬ì‹¤ì„ ìž…ì¦í•˜ëŠ” ê²ƒì´ ê°€ëŠ¥í•˜ë‹¤. 사용ìžëŠ”
가장 긴 ìž‘ì—…ì¦ëª… ì²´ì¸ì˜ ë¸”ë¡ í—¤ë”ì˜ ì‚¬ë³¸ë§Œ ê°–ê³  있으면, ìžì‹ ì´ 가장 긴 ì²´ì¸ì´ë¼ 확ì¸í•  때까지 네
íŠ¸ì›Œí¬ ë…¸ë“œë“¤ì—게 요청하고, ê·¸ 거래 ë‚´ì—­ì´ ê¸°ë¡ëœ 블ë¡ì— ì—°ê²°ëœ ë¨¸í´íŠ¸ë¦¬ ì¼ë¶€ë§Œ 받아오면 ëœë‹¤.
그는 스스로 거래 ë‚´ì—­ì„ í™•ì¸í•  수는 없고, ì²´ì¸ì— ì—°ê²°ë˜ì–´ ë„¤íŠ¸ì›Œí¬ ë…¸ë“œê°€ ê·¸ê²ƒì„ ìŠ¹ì¸í–ˆëŠ”지, ì´
후ì—ë„ ê³„ì† ë¸”ë¡ì´ 추가로 확ì¦ë˜ì–´ 승ì¸ëœ 지로 ì•Œ 수 있다.

ì´ë ‡ê²Œ ì •ì§í•œ ë…¸ë“œë“¤ì— ì˜í•´ 네트워í¬ê°€ 제어ë˜ëŠ” í•œ 거래 ì¸ì¦ì€ 신뢰할 수 있지만, 공격ìžì— ì˜í•´
네트워í¬ê°€ ì••ë„당하면 취약하다. ë„¤íŠ¸ì›Œí¬ ë…¸ë“œë“¤ì€ ìŠ¤ìŠ¤ë¡œ 거래 ë‚´ì—­ì„ ìž…ì¦í•  수 있지만, 단순히 ê³µ
격ìžì— ì˜í•´ ê³¼ì ëœ 네트워í¬ë¡œ 거래를 조작하고 ìœ ì§€í•¨ìœ¼ë¡œì¨ ë¬´ë ¥í™”ë  ìˆ˜ 있다. ì´ëŸ¬í•œ ë°©ë²•ì„ ë³´í˜¸
하는 전략으로는 사용ìžì˜ 소프트웨어ì—ì„œ ë¸”ë¡ ì „ì²´ë¥¼ 다운로드 받고 ëª¨ìˆœìž„ì´ í™•ì¦ëœ 유효하지 ì•Šì€
블ë¡ì„ ë°œê²¬í–ˆì„ ë•Œ ë„¤íŠ¸ì›Œí¬ ë…¸ë“œë“¤ì´ ê²½ê³  ì•Œë¦¼ì„ ë°›ëŠ” 것ì´ë‹¤. ìž¦ì€ ì§€ë¶ˆì„ ë°›ëŠ” 사업ìžì˜ 경우ì—는
ì•„ë§ˆë„ ìžì²´ 노드ì—ì„œ ë…ë¦½ëœ ë³´ì•ˆ 체계와 빠른 ì¸ì¦ ë°©ë²•ì„ ë” ì›í•  것ì´ë‹¤.

9. ê¸ˆì•¡ì˜ ê²°í•©ê³¼ 분할
ëˆì„ 개별로 관리하는 ê²ƒë„ ê°€ëŠ¥í•˜ê² ì§€ë§Œ, 거래ì—ì„œ ìž‘ì€ ê°œë³„ 단위까지 êµ³ì´ ë‚˜ëˆ„ì–´ 다루는 ê²ƒì€ ê±°
추장스럽다. ê¸ˆì•¡ì„ ë‚˜ëˆ„ê³  í•©ì¹  수 있ë„ë¡ ê±°ëž˜ ë‚´ì—­ì€ ë³µìˆ˜ì˜ ìž…ë ¥ê³¼ 출력으로 ì´ë¤„진다. 대개는 í°
ê¸ˆì•¡ì˜ ë‹¨ì¼ ìž…ë ¥ì´ê±°ë‚˜, 소액 ëª¨ê¸ˆì„ ìœ„í•œ 여러 ìž…ë ¥ì´ê±°ë‚˜, í•œ ì¶œë ¥ì€ ì§€ë¶ˆ 다른 ì¶œë ¥ì€ ê±°ìŠ¤ë¦„ëˆ ê°™
ì€ ë‘ ê°œì˜ ì¶œë ¥ ë°©ë²•ì´ ë  ê²ƒì´ë‹¤.

5
ì´ë¥¼ 팬아웃ì´ë¼ 하며, 거래가 여러 ê±°ëž˜ë“¤ì— ê¸°ë°˜í•˜ê³  ê° ê±°ëž˜ë“¤ì´ ë‹¤ìˆ˜ì— ì˜ì¡´í•˜ëŠ” 경우ë”ë¼ë„ ì—¬
기서는 문제가 ë˜ì§€ 않는다. 거래 기ë¡ì˜ 완전히 ë…ë¦½ëœ ì‚¬ë³¸ì„ ì¶”ì¶œí•  필요가 없다.

10. ê°œì¸ ì •ë³´ 보호
ê¸°ì¡´ì˜ ì€í–‰ 모ë¸ì€ 당사ìžë“¤ê³¼ ì œ 3ìž ì‹ ìš©ê¸°ê´€ì— ì •ë³´ ì ‘ê·¼ ê¶Œí•œì„ ì œí•œí•˜ì—¬ ê°œì¸ ì •ë³´ 보호가 ì–´
ëŠ ì •ë„ ê°€ëŠ¥í•˜ë„ë¡ í–ˆë‹¤. 모든 거래를 공개ì ìœ¼ë¡œ 알려야 하는 ì¤‘ìš”ì„±ì€ ì´ëŸ¬í•œ ê²ƒì„ ë¶ˆê°€ëŠ¥í•˜ê²Œ 하지
만, 공개키를 ìµëª…으로 소유하ë„ë¡ í•¨ìœ¼ë¡œì¨ ì •ë³´ì˜ íë¦„ì„ ì°¨ë‹¨í•˜ê³  ê°œì¸ ì •ë³´ê°€ ìœ ì§€ë  ìˆ˜ 있다. 외
부ì—서는 누가 다른 누군가ì—게 얼마를 보냈단 ì‚¬ì‹¤ì„ ë³¼ 수는 있으나, ê·¸ 거래 당사ìžë“¤ì˜ 신분으로
ì—°ê²°ë˜ì§€ 않으면 ì•Œ 수가 없다. ì´ëŠ” ì¦ì‹œì—ì„œ 공개ë˜ëŠ”, 시간과 거래 목ë¡ë§Œ í™•ì¸ ê°€ëŠ¥í•œ 거래 ì²´ê²°
정보 공개 수준과 비슷하다.

추가ì ì¸ ì•ˆì „ìž¥ì¹˜ì˜ ì¼í™˜ìœ¼ë¡œ, 매번 거래마다 새로운 공개키-비밀키 ìŒì„ 사용하여 ê³µí†µì˜ ì†Œìœ ìžì—
게 ì—°ê²°ë˜ë„ë¡ í•˜ë©´ ëœë‹¤. 여러 ê°œì˜ ìž…ë ¥ì„ ê°–ëŠ” ê±°ëž˜ì˜ ê²½ìš°ì—는 여전히 연결고리를 남기는 ê²ƒì´ ë¶ˆ
가피하게ë„, ê·¸ ìž…ë ¥ë“¤ì´ ë™ì¼ 소유ìžë¼ëŠ” ì‚¬ì‹¤ì„ ê³µê°œëœë‹¤. 소유ìžì˜ 암호키가 공개ë˜ë©´ 그러한 ì—°ê´€
ì„±ì´ ë‹¤ë¥¸ 거래 ë‚´ì—­ì—ì„œë„ ë™ì¼ì¸ì— ì˜í•œ 것ì´ë¼ëŠ” 게 알려지게 ëœë‹¤.

11. 계산
공격ìžê°€ 다른 ì²´ì¸ì˜ 갈래를 빠르게 ìƒì„±í•˜ë ¤ê³  ì‹œë„하여 ì •ì§í•œ ë…¸ë“œë“¤ì˜ ì²´ì¸ì„ 앞질러 가장 긴
ì²´ì¸ì„ ìƒì„±í•  시나리오를 간주해보ìž. ì´ê²ƒì´ 성공한다 하ë”ë¼ë„, 그렇게 가짜 ê¸ˆì•¡ì„ ë§Œë“¤ê±°ë‚˜ 공격
ìž ì†Œìœ ì˜€ë˜ ì ì´ 없는 ëˆì„ 사취하ë”ë¼ë„, ìž„ì˜ì˜ 시스템 변화 ìƒíƒœë¡œëŠ” 남겨ë‘지 않는다. 노드들ì€
유효하지 ì•Šì€ ê±°ëž˜ë¥¼ 지불로 승ì¸í•˜ì§€ ì•Šì„ ê²ƒì´ë©°, ì •ì§í•œ ë…¸ë“œë“¤ì€ ê·¸ëŸ¬í•œ 거래 ë‚´ì—­ì„ í¬í•¨í•˜ëŠ” 블
ë¡ì„ 절대 받아들ì´ì§€ ì•Šì„ ê²ƒì´ë‹¤. 공격ìžëŠ” ì˜¤ì§ ìµœê·¼ì— ì§€ë¶ˆí•œ ëˆì„ ë„ë¡œ ë˜ì°¾ê¸° 위해 ê·¸ì˜ ê±°ëž˜ ë‚´
ì—­ 하나만 바꾸려고 ì‹œë„í•  수 있다.
ì •ì§í•œ ë…¸ë“œë“¤ì˜ ì²´ì¸ê³¼ 공격ìžì˜ ì²´ì¸ ê°„ì˜ ê²½ìŸì€ ì´í•­ëžœë¤ì›Œí¬(Binomial Random Walk)ë¡œ 특정
ì§€ì„ ìˆ˜ 있다. ì •ì§í•œ ì²´ì¸ì´ í•˜ë‚˜ì˜ ë¸”ë¡ì„ 성공ì ìœ¼ë¡œ ìƒì„±í•˜ëŠ” ì‚¬ê±´ì´ ì¼ì–´ë‚˜ë©´ +1, 실패하여 공격
ìžì˜ ì²´ì¸ì´ 블ë¡ì„ 하나 ìƒì„±í•˜ëŠ” ì‚¬ê±´ì´ ì¼ì–´ë‚˜ë©´ -1ì´ë¼ 한다.
공격ìžê°€ ê°–ê³  ìžˆì§€ë„ ì•Šì€ ê¸ˆì•¡ìœ¼ë¡œ 성공할 í™•ë¥ ì€ ë„ë°•ì‚¬ì˜ íŒŒì‚° 문제(Gambler’s Ruin problem)
와 비슷하다. ë¬´ì œí•œì˜ ì‹ ìš©ì„ ê°€ì§„ ë„박사가 ì ìž ìƒíƒœë¡œ 시작하여 ê±°ì˜ ë¬´ì œí•œì˜ ê²Œìž„ì„ ì‹œë„하여 ì†
ìµë¶„기ì ì— ë„달한다 가정하ìž. 그가 ì†ìµë¶„기ì ì— ë„달할 확률, 즉 공격ìžê°€ ì •ì§í•œ ì²´ì¸ì„ ë”°ë¼ìž¡ì„
수 있는 ê°€ëŠ¥ì„±ì€ ë‹¤ìŒê³¼ ê°™ì´ ê³„ì‚°í•  수 있다[8]:

p = ì •ì§í•œ 노드가 ë‹¤ìŒ ë¸”ë¡ì„ ì°¾ì„ í™•ë¥ 
q = 공격ìžì˜ 노드가 ë‹¤ìŒ ë¸”ë¡ì„ ì°¾ì„ í™•ë¥ 
qz = zê°œì˜ ë‹¤ìŒ ë¸”ë¡ë“¤ì„ 빨리 ì°¾ì„ í™•ë¥ 

6
p > q ë¼ëŠ” ê°€ì •ì´ ì£¼ì–´ì§„ë‹¤ë©´, 공격ìžê°€ ë¸”ë¡ ì¦ê°€ë¥¼ ë”°ë¼ìž¡ì„ 수 있는 í™•ë¥ ì€ ë¸”ë¡ ìˆ˜ì— ì§€ìˆ˜ì ìœ¼
ë¡œ ê°ì†Œí•˜ê²Œ ëœë‹¤. 공격ìžê°€ 먼저 달려들어 ìš´ì´ ì¢‹ê²Œ 성공하지 못한다면, ê°€ëŠ¥ì„±ì€ ë’¤ë¡œ ê°ˆìˆ˜ë¡ ì ì 
í¬ë°•í•´ì§„다.
ì´ë²ˆì—는 새로운 거래ì—ì„œ ëˆì„ 받는 사람 입장ì—ì„œ 송금ìžê°€ 거래를 바꾸지 못할 ê±°ë¼ëŠ” ê²ƒì´ ì¶©ë¶„
히 확ì¦í•˜ë ¤ë©´ 얼마나 기다려야 하는지 ìƒê°í•´ë³´ê¸°ë¡œ 한다. 송금ìžê°€ 받는 ì‚¬ëžŒì´ ì¼ì‹œì ìœ¼ë¡œ ëˆì„ ë°›
았다 믿게 만들고 ì¼ì • 시간 ë’¤ì— ë‹¤ì‹œ ëˆì„ ìžê¸° ìžì‹ ì—게 ë˜ëŒë¦¬ê²Œ ì‹œë„하려는 공격ìžë¼ 가정하ìž.
받는 ì‚¬ëžŒì€ ê·¸ëŸ¬í•œ ì¼ì´ 벌어지면 경고 ì•Œë¦¼ì„ ë°›ì„ ê²ƒì´ê³ , 공격ìžëŠ” 그게 늦기를 바랄 것ì´ë‹¤.
받는 ì‚¬ëžŒì€ ìƒˆë¡œìš´ 암호키 ìŒì„ ìƒì„±í•˜ì—¬ 송금ìžì—게 서명하기 ì§ì „ì— ê³µê°œí‚¤ë¥¼ 넘긴다. ì´ëŸ¬í•œ ë°©
ë²•ì€ ê³µê²©ìžê°€ 미리 충분한 시간 ì „ì— ê°€ì§œ ë¸”ë¡ ì²´ì¸ ìƒì„±ì„ 준비해ë‘ì–´ 가짜 거래를 성립시키는 것ì„
방지한다. ì†¡ê¸ˆì´ ì´ë¤„질 ë•Œ, ì •ì§í•˜ì§€ ì•Šì€ ì†¡ê¸ˆìžëŠ” ì€ë°€ížˆ ê·¸ì˜ ë‹¤ë¥¸ 거래 ë‚´ì—­ì„ í¬í•¨í•˜ëŠ” ì²´ì¸ì„
ë™ì‹œì— ìƒì„±ì„ 시작한다.
ëˆì„ 받는 ì‚¬ëžŒì€ ê±°ëž˜ê°€ 블ë¡ì— í¬í•¨ë˜ê³  추가로 zê°œì˜ ì¶”ê°€ 블ë¡ë“¤ì´ ì—°ê²°ë  ë•Œê¹Œì§€ 기다린다. ê·¸
는 공격ìžê°€ 얼마나 ë§Žì€ ìž‘ì—…ì„ ì§„ì²™ì‹œì¼°ëŠ”ì§€ 정확히 모르지만, ì •ì§í•œ 블ë¡ë“¤ì´ 매 í‰ê·  시간 간격마
다 ìƒì„±ë  것ì´ê³ , 공격ìžì˜ ìž ìž¬ì  ì§„í–‰ë¥ ì€ í¬ì•„송 분í¬ì˜ ê¸°ëŒ€ê°’ì¸ ë‹¤ìŒê³¼ ê°™ì„ ê²ƒì´ë‹¤.

공격ìžê°€ ê·¸ 순간ì—ë„ ì—¬ì „ížˆ ë”°ë¼ìž¡ì„ 수 있는 í™•ë¥ ì„ ê³„ì‚°í•˜ê¸° 위해, í¬ì•„송 분í¬ë¥¼ 공격ìžê°€ ê·¸
ì‹œì ì— ë¸”ë¡ ì²´ì¸ ìƒì„±ì„ ë”°ë¼ìž¡ì„ 매 ì§„í–‰ë¥ ì— ê°ê° 곱하ë„ë¡ í•œë‹¤.

분í¬ì˜ 무한급수를 ë”하지 않기 위해 ì‹ì„ 정리하면…

ì´ë¥¼ C언어 코드로 구현하면…

#include <math.h>
double AttackerSuccessProbability(double q, int z)
{
double p = 1.0 - q;
double lambda = z * (q / p);
double sum = 1.0;
int i, k;
for (k = 0; k <= z; k++)
{
double poisson = exp(-lambda);
for (i = 1; i <= k; i++)
poisson *= lambda / i;
sum -= poisson * (1 - pow(q / p, z - k));
}
return sum;
}

7
결과를 ëŒë ¤ë³´ë©´ zê°’ì— ë”°ë¼ ì§€ìˆ˜ì ìœ¼ë¡œ í™•ë¥ ì´ ê°ì†Œí•¨ì„ ì•Œ 수 있다.

q=0.1
z=0
z=1
z=2
z=3
z=4
z=5
z=6
z=7
z=8
z=9
z=10

P=1.0000000
P=0.2045873
P=0.0509779
P=0.0131722
P=0.0034552
P=0.0009137
P=0.0002428
P=0.0000647
P=0.0000173
P=0.0000046
P=0.0000012

q=0.3
z=0
z=5
z=10
z=15
z=20
z=25
z=30
z=35
z=40
z=45
z=50

P=1.0000000
P=0.1773523
P=0.0416605
P=0.0101008
P=0.0024804
P=0.0006132
P=0.0001522
P=0.0000379
P=0.0000095
P=0.0000024
p=0.0000006

Pê°€ 0.1%보다 ìž‘ì„ ê²½ìš°ë¥¼ 풀면…
P < 0.001
q=0.10
z=5
q=0.15
z=8
q=0.20
z=11
q=0.25
z=15
q=0.30
z=24
q=0.35
z=41
q=0.40
z=89
q=0.45
z=340

12. ê²°ë¡ 
지금까지 ì‹ ìš©ì— ê¸°ë°˜í•˜ì§€ ì•Šì€ ì „ìž ê±°ëž˜ ì‹œìŠ¤í…œì„ ì œì•ˆí•˜ì˜€ë‹¤. 디지털 서명으로 ì´ë¤„진 ì¼ë°˜ì ì¸
í™”í 구조ì—ì„œ 출발했다. ì†Œìœ ê¶Œì„ ê°•ë ¥ížˆ 제어하는 ë°©ë²•ì„ ì œê³µí•˜ì§€ë§Œ ì´ì¤‘ì§€ë¶ˆì„ ë°©ì§€í•  방법ì´
ì—†ì´ëŠ” 완벽하지가 않다. ì´ëŸ¬í•œ 문제를 해결하기 위해, ê³¼ë°˜ìˆ˜ì˜ ì»´í“¨íŒ… 파워를 ì •ì§í•œ 노드들ì´
제어한다면 계산ìƒìœ¼ë¡œ 공격ìžê°€ 빠르게 ì¡°ìž‘í•  수 ì—†ì´ ê³µê°œì ìœ¼ë¡œ 거래를 기ë¡í•  수 있ë„ë¡
ìž‘ì—…ì¦ëª…ì„ ìˆ˜í–‰í•˜ëŠ” P2P 네트워í¬ë¥¼ 제안하였다. 네트워í¬ëŠ” 구조ì ì´ì§€ ì•Šì€ ë‹¨ìˆœí•¨ì—ì„œ ë¯¿ì„ ìˆ˜
있다. ë…¸ë“œë“¤ì€ ì¡°ì§í™”í•  í•„ìš”ë„ ì—†ì´ í˜‘ë ¥í•˜ë„ë¡ ë˜ì–´ìžˆë‹¤. 특정 ìœ„ì¹˜ì— ë©”ì‹œì§€ê°€ 전달ë˜ì§€ ì•Šë”ë¼ë„
ìµœì„ ì„ ê¸°ë°˜ìœ¼ë¡œ 전달ë˜ê¸°ë§Œ 하면 ë˜ê¸° 때문ì—, 정체를 확ì¸í•  í•„ìš”ë„ ì—†ë‹¤. ë…¸ë“œë“¤ì€ ìžë°œì ìœ¼ë¡œ
네트워í¬ë¥¼ 떠났다가 합류할 수 있으며, ìž‘ì—…ì¦ëª… ì²´ì¸ì„ ê·¸ ë™ì•ˆì— ë²Œì–´ì¡Œë˜ ì‚¬ì‹¤ì— ëŒ€í•œ ì¦ëª…으로
받아들ì´ê¸°ë§Œ 하면 ëœë‹¤. 컴퓨팅 파워를 통해 ì˜ì‚¬ê²°ì •ì„ 하고, 유효한 블ë¡ì— 대해서만 ìž‘ì—…ì„
ìˆ˜í–‰í•¨ìœ¼ë¡œì¨ ìœ íš¨í•˜ì§€ ì•Šì€ ë¸”ë¡ë“¤ì€ 거부하게 ë¨ìœ¼ë¡œì¨ 거래 승ì¸ì„ 표시하게 ëœë‹¤. ì´ëŸ¬í•œ í•©ì˜
ë©”ì»¤ë‹ˆì¦˜ì„ ìœ„í•´ ì–´ë–¤ 규칙ì´ë‚˜ ë³´ìƒì´ ì„±ë¦½ë  ìˆ˜ 있다.

8
참고문헌

[1]

W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998.

[2]

H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal
trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999.

[3]

S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no
2, pages 99-111, 1991.

[4]

D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping,"
In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.

[5]

S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference
on Computer and Communications Security, pages 28-35, April 1997.

[6]

A. Back, "Hashcash - a denial of service counter-measure,"
http://www.hashcash.org/papers/hashcash.pdf, 2002.

[7]

R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and
Privacy, IEEE Computer Society, pages 122-133, April 1980.

[8]

W. Feller, "An introduction to probability theory and its applications," 1957.

ì›ë¬¸

S. Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System,†http://bitcoin.org/bitcoin.pdf, 2009.

번역 - 츄ì´ìŠ¤

9

More Related Content

Bitcoin satoshi kor_chewers

  • 1. 비트코ì¸: ê°œì¸ê°„ ì „ìží™”í 시스템 사토시 나카모토 satoshin@gmx.com www.bitcoin.org ì´ˆë¡. 순 ê°œì¸ê³¼ ê°œì¸ê°„ì˜ ì „ìží™”í는 í•œ 집단ì—ì„œ 다른 곳으로 ê¸ˆìœµê¸°ê´€ì„ ê±°ì¹˜ì§€ ì•Šê³  ì§ì ‘ 온ë¼ì¸ ì§€ë¶ˆì„ ê°€ëŠ¥í•˜ê²Œ í•  것ì´ë‹¤. 디지털 서명 ê¸°ìˆ ì´ ì¼ë¶€ 해결해주지만, ë¯¿ì„ ìˆ˜ 있는 ì œ 3ìžê°€ ì´ì¤‘ì§€ë¶ˆì„ ë°©ì§€í•´ì•¼ 한다면 ê·¸ 주요한 장ì ì€ 사ë¼ì§€ê²Œ ëœë‹¤. 우리는 ì´ ë…¼ë¬¸ì—ì„œ P2P 네트워í¬ë¥¼ ì´ìš©í•œ ì´ì¤‘지불 ë¬¸ì œì˜ í•´ ê²° ë°©ë²•ì„ ì œì•ˆí•˜ê³ ìž í•œë‹¤. ê³„ì† ì§„í–‰ë˜ê³  있는 암호화 기반 ìž‘ ì—…ì¦ëª… ê³¼ì •ì˜ ì—°ì‡„ ìƒì—ì„œ ë„¤íŠ¸ì›Œí¬ ì‹œê°„ ë° ê±°ëž˜ë¥¼ 암호화하여 기ë¡ì„ ìƒì„±í•˜ê²Œ ë˜ë©´ ìž‘ì—…ì¦ëª… ê³¼ì •ì„ ë˜í’€ì´í•˜ì§€ 않는 í•œ 바꿀 수 없게 ëœë‹¤. 가장 긴 ì²´ì¸ì€ ê° ì‚¬ê±´ 순서를 ìž…ì¦í•´ì£¼ê¸°ë„ 하 ë©°, 가장 ë§Žì€ ì»´í“¨íŒ… 파워가 ìž…ì¦í–ˆë‹¤ëŠ” 뜻ì´ê¸°ë„ 하다. 노드들 ì— ì˜í•´ 제어ë˜ëŠ” 컴퓨터 ì „ë ¥ì˜ ê³¼ë°˜ìˆ˜ê°€ 협력하여 네트워í¬ë¥¼ 공격하지 않는 í•œ, ê·¸ë“¤ì€ ê°€ìž¥ 긴 ì²´ì¸ì„ ìƒì„±í•˜ë©° ë„¤íŠ¸ì›Œí¬ ê³µ 격ìžë¥¼ 능가하게 ë  ê²ƒì´ë‹¤. ì´ëŸ¬í•œ 네트워í¬ëŠ” ìµœì†Œí•œì˜ êµ¬ì¡°ë¥¼ 필요로 한다. ê° ë…¸ë“œë“¤ì€ ìžë°œì ìœ¼ë¡œ ê·¸ 네트워í¬ë¥¼ 떠나거나 다시 합류할 수 있고, ì–´ë–¤ ì¼ì´ ë²Œì–´ì¡ŒëŠ”ì§€ì— ëŒ€í•œ ìž…ì¦ìœ¼ë¡œ ê°€ 장 긴 ìž‘ì—…ì¦ëª… ì²´ì¸ì„ 받아들ì´ëŠ” ë…¸ë“œë“¤ì˜ ë©”ì‹œì§€ê°€ 최대한 ê³µ 유ëœë‹¤. 1. 서론 ì¸í„°ë„·ì—ì„œì˜ ìƒê±°ëž˜ëŠ” ê±°ì˜ ê¸ˆìœµê¸°ê´€ì„ ì œ 3ìž ì‹ ìš©ê¸°ê´€ìœ¼ë¡œ 하는 ì „ìžì§€ë¶ˆ ë°©ì‹ì— ì „ì ìœ¼ë¡œ ì˜ì¡´ 하게 ë˜ì—ˆë‹¤. ëŒ€ë¶€ë¶„ì˜ ê±°ëž˜ì— ì‹œìŠ¤í…œì€ ì¶©ë¶„ížˆ ìž‘ë™í•˜ê³  있지만, 여전히 신용기반 모ë¸ì´ë¼ëŠ” ë‚´ìž¬ì  ì¸ ì•½ì ì„ ê°–ê³  있다. 완전히 취소 가능한 거래는 ì‚¬ì‹¤ìƒ ë¶ˆê°€ëŠ¥í•œë°, ê¸ˆìœµê¸°ê´€ì€ ê±°ëž˜ ìƒì˜ 분ìŸì„ 중 재하는 ì¼ì„ 피할 수 없기 때문ì´ë‹¤. ì´ëŸ¬í•œ 중재 ë¹„ìš©ì€ ê²°êµ­ 거래 수수료를 올리고, 실질ì ì¸ 최소 ê±°ëž˜ê¸ˆì•¡ì„ ì œí•œí•˜ì—¬ 소액 ê±°ëž˜ì˜ ê°€ëŠ¥ì„±ì„ ë§‰ëŠ”ë°ë‹¤ê°€, 회수가 불가능한 서비스ì—ê¹Œì§€ë„ ë²ˆë³µ 가능한 ì§€ë¶ˆì„ í•˜ê²Œ 만들어 ë” ë§Žì€ ë¹„ìš©ì„ ë°œìƒì‹œí‚¨ë‹¤. 즉, 지불 ë²ˆë³µì„ ìœ„í•´ ë” ë§Žì€ ì‹ ìš©ì„ ìš”êµ¬í•˜ê²Œ ëœë‹¤. ìƒì—…ìžë“¤ì€ 불필요한 ë” ë§Žì€ ì •ë³´ë¥¼ 요구하여 ê³ ê°ì„ 귀찮게 만들고 경계하게 ëœë‹¤. ì¼ì •í•œ 비율로 ê°€ 짜 ì§€ë¶ˆì´ ë˜ëŠ” ê²ƒì€ ë¶ˆê°€í”¼í•œ 현실ì´ë‹¤. ì´ëŸ¬í•œ 비용과 ì§€ë¶ˆì˜ ë¶ˆí™•ì‹¤ì„±ì€ ì‚¬ëžŒì´ ì§ì ‘ 물리ì ìœ¼ë¡œ í™” í를 지불하여 피할 수 있으나, 신용기관 ì—†ì´ í†µì‹ ìƒìœ¼ë¡œ 지불하는 ë°©ë²•ì€ ì¡´ìž¬í•˜ì§€ 않는다. ì´ëŸ¬í•œ 문제는 바로 신용보다는 암호화 ê¸°ìˆ ì— ê¸°ë°˜í•œ ì „ìžì§€ë¶ˆ ì‹œìŠ¤í…œì„ ì´ìš©í•˜ì—¬ ìžë°œì ì¸ ë‘ ê±° 래ìžê°€ ì œ 3ìžì¸ 신용기관 ì—†ì´ë„ ì§ì ‘ì ì¸ 거래를 가능하게 만든다. ì „ì‚°ì ìœ¼ë¡œ ë²ˆë³µì´ ë¶ˆê°€ëŠ¥í•œ 송금 ì€ íŒë§¤ìžë¥¼ 가짜 지불로부터 보호할 수 있으며, 구매ìžëŠ” ì¼ë°˜ ì—스í¬ë¡œ ë°©ì‹ì„ 통해 ë³´í˜¸ë°›ì„ ìˆ˜ 있 다. ì´ ë…¼ë¬¸ì—ì„œ 우리는 ê±°ëž˜ë“¤ì˜ ì‹œê°„ 순서를 ì „ì‚°ì ìœ¼ë¡œ ìž…ì¦í•˜ê²Œ 만들ë„ë¡ í•˜ëŠ” P2P 분산 ë„¤íŠ¸ì›Œí¬ ê¸°ë°˜ 타임스탬프 서버를 ì´ìš©í•˜ì—¬ ì´ì¤‘지불 문제를 방지하는 í•´ë²•ì„ ì œì•ˆí•˜ê³ ìž í•œë‹¤. ì´ ì‹œìŠ¤í…œì€ ì•… ì˜ì ìœ¼ë¡œ 협력하는 노드 그룹보다 ì •ì§í•œ ë…¸ë“œë“¤ì´ ë” ë§Žì€ ì»´í“¨íŒ… 파워를 ì´ì²´ì ìœ¼ë¡œ 제어하는 í•œ 안 전하다. 1
  • 2. 2. 거래 우리는 ì „ìž í™”í를 디지털 ì„œëª…ì˜ ì—°ì†ìœ¼ë¡œ ì •ì˜í•œë‹¤. ê° ì•”í˜¸í‚¤ 소유ìžë“¤ì€ ê·¸ ì „ê¹Œì§€ì˜ ê±°ëž˜ ë‚´ì—­ ì— ë‹¤ìŒ ì†Œìœ ìžì˜ 공개키를 ë§ë¶™ì¸ ë’¤ì— ìžì‹ ì˜ 비밀키로 암호화하는 디지털 ì„œëª…ì„ í•˜ê³  넘긴다. ëˆì„ 받는 ì‚¬ëžŒì€ ì„œëª… 소유ìžë“¤ì˜ ì²´ì¸ê³¼, ì„œëª…ë“¤ì„ ê²€ì¦í•  수 있다. ë¬¸ì œì˜ ê³¼ì •ì€ ëˆì„ 받는 ì‚¬ëžŒì€ ì†Œìœ ìžë“¤ 중 í•œ ëª…ì´ ì´ì¤‘ì§€ë¶ˆì„ í•˜ì§€ 않았는지 ê²€ì¦í•  수가 없는 ìƒí™©ì—ì„œ ë°œìƒí•œë‹¤. 공통ì ì¸ í•´ë²•ì€ ê° ê±°ëž˜ê°€ ì´ì¤‘ì§€ë¶ˆì´ ë˜ì—ˆëŠ”지 신용해주는 ì¤‘ì•™ê¸°ê´€ì„ ë„입하는 것ì´ë‹¤. ê° ê±°ëž˜ 후ì—, ê·¸ í™”í는 다시 새로운 í™”íë¡œ ì°ì–´ë‚´ê¸° 위해 중앙기관으로 회수ë˜ì–´ì•¼ 하고, ì´ ì¤‘ì§€ë¶ˆì´ ì•„ë‹ˆëž€ 걸 ë¯¿ì„ ìˆ˜ 있ë„ë¡ ì¤‘ì•™ê¸°ê´€ì—서만 ì§ì ‘ í™”í를 발행하여 ì“°ë„ë¡ í•œë‹¤. ì´ëŸ¬í•œ ë°©ë²•ì˜ ë¬¸ì œëŠ” í™”í 시스템 ì „ì²´ê°€ 바로 ì€í–‰ ê°™ì€ ì¤‘ì•™ê¸°ê´€ì— ëª¨ë“  거래 ë‚´ì—­ì´ ê±°ì³ê°€ë„ë¡ í•˜ëŠ” ë°©ë²•ì— ì˜ì¡´ 하게 ëœë‹¤ëŠ” 것ì´ë‹¤. ê²°êµ­ ëˆì„ 받는 ì‚¬ëžŒì´ ì´ì „ 소유ìžê°€ ê·¸ ì „ì—ë„ ì–´ë–¤ 거래ì—ë„ ì„œëª…ì„ í•˜ì§€ 않았는지를 확ì¸í•  ë°© ë²•ì´ í•„ìš”í•˜ë‹¤. 그러려면 가장 먼저 ì¼ì–´ë‚œ 거래 ë‚´ì—­ì„ ì°¾ê¸°ë§Œ í•´ë„ ê·¸ ì´í›„ì— ì´ì¤‘ì§€ë¶ˆì„ ì‹œë„했는지 확ì¸í•  필요가 없게 ëœë‹¤. 거래 ë‚´ì—­ì´ í•˜ë‚˜ë¼ë„ 비어있는지 확ì¸í•˜ëŠ” 유ì¼í•œ ë°©ë²•ì€ ëª¨ë“  거래 ë‚´ì—­ì„ ì‚´íŽ´ë³´ëŠ” 것ì´ë‹¤. 바로 ì°ì–´ë‚¸ í™”í를 기반으로 í•œ 모ë¸ì—서는 모든 거래를 확ì¸í•˜ê³  ì–´ëŠ ê²ƒì´ ë¨¼ì € ì´ë¤„졌는지를 결정하면 ëœë‹¤. ì‹ ìš©ê¸°ê´€ì„ í†µí•˜ì§€ ì•Šê³ ë„ ì´ëŸ° ë°©ë²•ì„ ê°€ëŠ¥í•˜ê²Œ 하기 위해서는, 모든 ê±° 래가 공개ì ìœ¼ë¡œ 알려져야 하고[1], 참여ìžë“¤ì´ 시간 ìˆœì„œì— ë”°ë¼ ë‹¨ì¼ ê±°ëž˜ë‚´ì—­ìœ¼ë¡œ 수용하는 ì‹œìŠ¤í…œì´ í•„ìš”í•˜ë‹¤. ëˆì„ 받는 ì‚¬ëžŒì€ ë§¤ 거래 시마다, 과반수 ì´ìƒì˜ ë…¸ë“œë“¤ì´ ìµœì´ˆì˜ ê±°ëž˜ë¼ê³  ì¸ì •í•´ì£¼ëŠ” ì‹œ ê°„ ì¦ëª…ì´ í•„ìš”í•˜ê²Œ ëœë‹¤. 3. 타임스탬프 서버 우리가 제안하는 í•´ê²° ë°©ë²•ì€ íƒ€ìž„ìŠ¤íƒ¬í”„ 서버ì—ì„œ 시작ëœë‹¤. 타임스탬프 서버는 시간 ë‚´ì—­ì´ ê¸°ë¡ëœ í•­ëª©ë“¤ì˜ ë¸”ë¡ í•´ì‹œë¥¼ 취합하고, 신문ì´ë‚˜ 유즈넷 í¬ìŠ¤íŠ¸ì²˜ëŸ¼ ê·¸ 해시를 ë„리 발행하는 ì—­í• ì„ í•œë‹¤ [2~5]. ì´ëŸ¬í•œ 타임스탬프 ë‚´ì—­ì€ í•´ì‹œì— í¬í•¨ë  수 있ë„ë¡ ê·¸ ì‹œê°„ì— ë°ì´í„°ê°€ 명백히 존재했다는 것 ì„ ìž…ì¦í•œë‹¤. ê° íƒ€ìž„ìŠ¤íƒ¬í”„ ë‚´ì—­ì€ ì´ì „ 타임스탬프로부터 ë°›ì€ í•´ì‹œ ë‚´ì—­ì„ í¬í•¨ì‹œí‚´ìœ¼ë¡œì¨ 보강하는 ì²´ì¸ì„ 형성한다. 2
  • 3. 4. ìž‘ì—…ì¦ëª… P2P를 기반으로 하는 분산 ë„¤íŠ¸ì›Œí¬ íƒ€ìž„ìŠ¤íƒ¬í”„ 서버를 구현하기 위해서는 신문ì´ë‚˜ 유즈넷 í¬ìŠ¤íŠ¸ 대신 Adam Back’s Hashcash[6]와 비슷한 ìž‘ì—…ì¦ëª… ì‹œìŠ¤í…œì„ ì´ìš©í•  필요가 있다. ìž‘ì—…ì¦ëª…ì—는 SHA256ê³¼ ê°™ì€ ì•Œê³ ë¦¬ì¦˜ìœ¼ë¡œ ë‹¤ìˆ˜ì˜ 0비트들로 시작ë˜ëŠ” 암호화 í•´ì‹œê°’ì„ ì°¾ëŠ” ê³¼ì •ì´ í¬í•¨ëœë‹¤. í‰ê· ì  으로 ì´ëŸ¬í•œ ìž‘ì—…ì— ë“œëŠ” ì‹œê°„ì€ ì—°ì†ë˜ëŠ” 0ë¹„íŠ¸ì˜ ìš”êµ¬ ê°œìˆ˜ì— ë”°ë¼ ì§€ìˆ˜ì ìœ¼ë¡œ ì¦ê°€í•˜ë©°, 암호화 í•´ 시를 한번 수행하는 것으로 확ì¸í•  수 있다. 타임스탬프 네트워í¬ì—서는 ìž‘ì—…ì¦ëª…ì˜ ë°©ë²•ìœ¼ë¡œ ë¸”ë¡ í•´ì‹œ 결과가 0ë¹„íŠ¸ë“¤ì„ ê°–ë„ë¡ í•˜ëŠ” í•´ì‹œê°’ì„ ì°¾ì„ ë•Œê¹Œì§€ 블ë¡ì— 임시값(nonce)ì„ ì¦ê°€ì‹œì¼œê°€ëŠ” ê³¼ì •ì„ êµ¬í˜„í•œë‹¤. CPUê°€ 노력한 결과가 한번 ìž‘ì—… ì¦ëª… ì¡°ê±´ì— ë„달하게 ë˜ë©´, ê·¸ 블ë¡ì€ 다시 ê³¼ì •ì„ ë²ˆë³µí•˜ì§€ 않는 í•œ ê³ ì •ëœë‹¤. ê·¸ ë‹¤ìŒ ë¸”ë¡ë“¤ì´ ì²´ ì¸ì„ 형성함으로ì¨, í•˜ë‚˜ì˜ ë¸”ë¡ì„ 변경하기 위해서는 ê·¸ 블ë¡ì„ í¬í•¨í•œ ë‹¤ìŒ ëª¨ë“  블ë¡ë“¤ì— 대해 ìž‘ì—… ì¦ëª… ê³¼ì •ì„ ë‹¤ì‹œ 수행해야 하게 ëœë‹¤. ìž‘ì—…ì¦ëª…ì€ ë˜í•œ ë‹¤ìˆ˜ê²°ì— ì˜í•œ ì˜ì‚¬ê²°ì • 과정ì—ì„œ 대표ìžë¥¼ 결정하는 문제를 해결한다. 다수가 í•œ IP주소당 í•œë²ˆì˜ íˆ¬í‘œë¥¼ í•  수 있는 시스템 기반으로 ê²°ì •ëœë‹¤ë©´, IP주소를 ë§Žì´ í™•ë³´í•˜ëŠ” 방법으로 누 구나 ì‹œìŠ¤í…œì„ ë’¤ì—Žì–´ë²„ë¦´ 수 있다. 그러나 ìž‘ì—…ì¦ëª…ì€ ë³¸ì§ˆì ìœ¼ë¡œ í•œ ê°œì˜ CPU당 í•œ ë²ˆì˜ íˆ¬í‘œë¥¼ 하 는 구조ì´ë‹¤. ë‹¤ìˆ˜ì˜ ê²°ì •ì€ ê°€ìž¥ 긴 ì²´ì¸ì„ 나타내며, ì´ëŠ” 가장 ë§Žì€ ìž‘ì—…ì¦ëª…ì— ë…¸ë ¥ì´ íˆ¬ìž…ëœ ê²ƒì´ ëœë‹¤. 컴퓨팅 íŒŒì›Œì˜ ê³¼ë°˜ìˆ˜ê°€ ì •ì§í•œ ë…¸ë“œë“¤ì— ì˜í•´ 제어ë˜ê³  있다면, ì •ì§í•œ ì²´ì¸ì´ 가장 빠르게 늘 어나, ê²½ìŸ ì²´ì¸ì„ ì••ë„하게 ë  ê²ƒì´ë‹¤. (ì—­ìž ì£¼: 실제로는 Emin Gün Sirer, Ittay Eyalì— ì˜í•´ ì „ì²´ 컴퓨팅 파 ì›Œì˜ ê³¼ë°˜ìˆ˜ì¸ 50% ì´ìƒì´ ì•„ë‹ˆë¼ 25% ì´ìƒë§Œ ì ìœ í•´ë„ ëœë‹¤ê³  ë°í˜€ì¡ŒëŠ”ë°, 현재 ì „ì²´ 순위 1~2ìœ„ì˜ ë§ˆì´ë‹ í’€ ì§‘ë‹¨ì€ 25% ì´ìƒì— 달하고 있ìŒ.) ê³¼ê±°ì˜ ë¸”ë¡ì„ 수정하기 위해서는 공격ìžëŠ” 수정할 블ë¡ê³¼ ê·¸ ì´í›„ ì— ì´ì–´ì§„ 모든 블ë¡ì— 대해 ìž‘ì—…ì¦ëª… ê³¼ì •ì„ ë²ˆë³µí•œ 다ìŒì— ì´ì–´ì„œ 다른 ì •ì§í•œ ë…¸ë“œë“¤ì´ ì´ë£¨ê³  있는 ì²´ì¸ë³´ë‹¤ ë” ë¹ ë¥¸ ì†ë„ë¡œ ë”°ë¼ìž¡ì•„ 추월해야 한다. ëŠë¦° 공격ìžì˜ 추격 ê°€ëŠ¥ì„±ì€ ë¸”ë¡ë“¤ì´ ì´ì–´ì„œ 추가 ë  ìˆ˜ë¡ ì§€ìˆ˜ì ìœ¼ë¡œ ê°ì†Œí•˜ëŠ” ê²ƒì— ëŒ€í•´ ë’¤ì—ì„œ 언급하기로 한다. ì‹œê°„ì´ íë¦„ì— ë”°ë¼ í•˜ë“œì›¨ì–´ ì†ë„ ì¦ê°€ì™€ ë…¸ë“œë“¤ì˜ ì°¸ì—¬ë„ ì¦ê°€ìœ¨ì„ ë³´ìƒí•˜ê¸° 위해서, ìž‘ì—…ì¦ëª…ì˜ ë‚œì´ë„는 시간당 í‰ê·  ë¸”ë¡ ìƒì„± 수를 기준으로 하는 ì´ë™í‰ê· ì„ 타깃으로 결정한다. 블ë¡ì´ 너무 빠르 게 ìƒì„±ë˜ë©´ ë‚œì´ë„는 급ì¦í•œë‹¤. 5. ë„¤íŠ¸ì›Œí¬ ë„¤íŠ¸ì›Œí¬ì˜ ë™ìž‘ì€ ë‹¤ìŒê³¼ ê°™ì€ ê³¼ì •ìœ¼ë¡œ ì´ë£¨ì–´ì§„다: 1) 새로운 거래 ë‚´ì—­ì´ ëª¨ë“  ë…¸ë“œì— ì•Œë ¤ì§„ë‹¤. 2) ê° ë…¸ë“œë“¤ì€ ìƒˆë¡œìš´ 거래 ë‚´ì—­ì„ ë¸”ë¡ì— 취합한다. 3) ê° ë…¸ë“œë“¤ì€ ê·¸ 블ë¡ì— 대한 ìž‘ì—…ì¦ëª…ì„ ì°¾ëŠ” ê³¼ì •ì„ ìˆ˜í–‰í•œë‹¤. 4) ì–´ë–¤ 노드가 ìž‘ì—…ì¦ëª…ì„ ì„±ê³µì ìœ¼ë¡œ ìˆ˜í–‰í–ˆì„ ë•Œ, 모든 노드ì—게 ê·¸ 블ë¡ì„ 전송한다. 5) ë…¸ë“œë“¤ì€ ê·¸ 블ë¡ì´ 모든 거래가 ì´ì „ì— ì“°ì´ì§€ ì•Šê³  유효한 경우ì—만 승ì¸í•œë‹¤. 6) ë…¸ë“œë“¤ì€ ìžì‹ ì´ 승ì¸í•œ 블ë¡ì˜ 해시를 ì´ì „ 해시로 사용하여 ë‹¤ìŒ ë¸”ë¡ì„ ìƒì„±í•˜ëŠ” ê³¼ì •ì„ í†µí•´ ê·¸ 블ë¡ì´ 승ì¸ë˜ì—ˆë‹¤ëŠ” ì˜ì‚¬ë¥¼ 나타낸다. ë…¸ë“œë“¤ì€ í•­ìƒ ê°€ìž¥ 긴 ì²´ì¸ì„ ì˜³ì€ ê²ƒìœ¼ë¡œ 간주하며 ê·¸ ì²´ì¸ì´ ê³„ì† í™•ìž¥í•˜ë„ë¡ ìž‘ì—…ì„ ìˆ˜í–‰í•œë‹¤. 3
  • 4. 만약 ë‘ ê°œì˜ ë…¸ë“œê°€ 서로 다른 ë²„ì „ì˜ ë‹¤ìŒ ë¸”ë¡ì„ ë™ì‹œì— 알리게 ë  ê²½ìš°, ì–´ë–¤ ë…¸ë“œë“¤ì€ ë‘˜ 중 하나 를 먼저 전달받게 ëœë‹¤. ì´ëŸ¬í•œ 경우 ê° ë…¸ë“œë“¤ì€ ìžì‹ ì´ 먼저 ë°›ì€ ë¸”ë¡ì— 대해 ìž‘ì—…ì„ ìˆ˜í–‰í•˜ì§€ë§Œ, ì²´ì¸ì˜ 다른 ê°ˆëž˜ë„ ë” ê¸¸ì–´ì§ˆ ê²½ìš°ì— ëŒ€ë¹„í•˜ì—¬ 저장해둔다. ì²´ì¸ì˜ ì–´ëŠ í•œìª½ 갈래가 ë” ê¸¸ê²Œ ìƒì„±ë˜ 는 ìž‘ì—…ì¦ëª…ì´ ì•Œë ¤ì§€ë©´ ì²´ì¸ ê°ˆëž˜ì˜ ê¸¸ì´ëŠ” ë” ì´ìƒ 대등하지 않게 ë˜ê³ , ê° ë…¸ë“œë“¤ì€ ì²´ì¸ì´ ë” ê¸´ 갈래로 ìž‘ì—…ì„ ì „í™˜í•œë‹¤. 새로운 거래 ë‚´ì—­ ì•Œë¦¼ì´ ê¼­ 모든 노드ì—까지 ì „ë‹¬ë  í•„ìš”ëŠ” 없으며, ë§Žì€ ë…¸ë“œì— ì „ë‹¬ë ìˆ˜ë¡ ë” ë¹¨ 리 블ë¡ì— í¬í•¨ë  것ì´ë‹¤. ë¸”ë¡ ì•Œë¦¼ì€ ë˜í•œ 누ë½ë˜ëŠ” 경우ì—ë„ ì·¨ì•½í•˜ì§€ 않다. 만약 í•œ 노드가 블ë¡ì„ 받지 ëª»í–ˆì„ ê²½ìš°, ë‹¤ìŒ ë¸”ë¡ì„ 받고 하나가 ë¹ ì¡ŒìŒì„ 알아차려 다시 요청해 ë°›ì„ ê²ƒì´ë‹¤. 6. ë³´ìƒ ë¸”ë¡ì˜ 첫번째 거래 ë‚´ì—­ì€ ì•½ì†ì— ì˜í•´ 최초 ë¸”ë¡ ìƒì„±ìžì—게 새로운 ëˆì„ 소유할 수 있게 해주는 특별한 거래가 ëœë‹¤. ì´ë ‡ê²Œ 하면 ëˆì„ 발행하는 중앙기관 ì—†ì´ë„ 네트워í¬ë¥¼ 구성하는 모든 ë…¸ë“œë“¤ì— ê²Œ ë³´ìƒì„ 지급하고, ìœ í†µë  ëˆì„ 처ìŒì— 배분하는 ë°©ë²•ì´ ëœë‹¤. 지ì†ì ì¸ ì¼ì •ëŸ‰ì˜ 새 ëˆì„ 추가하는 ê±´ ê¸ˆì„ ìœ í†µí•  수 있게 ê´‘ë¶€ë“¤ì´ ìžì›ì„ ìŸëŠ” 것과 유사하다. ì´ ê²½ìš°ì—는 컴퓨팅 ìžì›ê³¼ ì „ë ¥ì´ ì†Œë¹„ ëœë‹¤. ë³´ìƒì—는 ë˜í•œ 거래 수수료가 ë  ìˆ˜ë„ ìžˆë‹¤. 거래 ë‚´ì—­ì—ì„œ 출력ë˜ëŠ” ëˆì´ ìž…ë ¥ë˜ëŠ” ëˆë³´ë‹¤ ì ë‹¤ë©´, ê·¸ ì°¨ì•¡ì€ ìˆ˜ìˆ˜ë£Œì²˜ëŸ¼ 작용하여 ê·¸ 거래 ë‚´ì—­ì„ í¬í•¨í•˜ëŠ” ë¸”ë¡ ìƒì„±ì˜ ë³´ìƒ ê°€ì¹˜ë¡œ 추가ëœë‹¤. 정해진 ì´ëŸ‰ì˜ ëˆì´ ìœ í†µëœ ë‹¤ìŒë¶€í„°ëŠ”, ë³´ìƒì€ 거래 수수료만으로 ì´ë¤„지며 ì¸í”Œë ˆì´ì…˜ìœ¼ë¡œë¶€í„° 완전히 ìžìœ  롭게 ëœë‹¤. ì´ëŸ¬í•œ ë³´ìƒ ì‹œìŠ¤í…œì€ ê° ë…¸ë“œë“¤ì´ ì •ì§í•˜ê²Œ 참여를 유지할 수 있ë„ë¡ í•œë‹¤. ìš•ì‹¬ì„ ë‚¸ 공격ìžê°€ 다 른 ì •ì§í•œ ì „ì²´ 노드들보다 ë” ë§Žì€ ì»´í“¨íŒ… 파워를 만들어낼 수 있다면, 그는 ì•„ë§ˆë„ ë‹¤ë¥¸ 사람들로부 í„° ì§€ë¶ˆì„ ì² íšŒí•˜ì—¬ ëˆì„ 사취하거나 새로운 ëˆì„ ìƒì„±í•˜ë ¤ 해야 í•  것ì´ë‹¤. 하지만 그런 ì‹ìœ¼ë¡œ 다른 ì‚¬ëžŒë“¤ì´ ì—®ì´ì§€ ì•Šê³  ì‹œìŠ¤í…œì„ ì•½í™”ì‹œì¼œ ìžì‹ ì˜ 부를 축ì í•˜ëŠ” ì´ê¸°ì ì¸ 방법보다는 약ì†ëŒ€ë¡œ ì •ì§í•˜ 게 ì‹œìŠ¤í…œì— ì°¸ì—¬í•˜ëŠ” ê²ƒì´ ë” ì´ë“ì´ë¼ëŠ” 걸 알게 ë  ê²ƒì´ë‹¤. 7. 저장 공간 재확보 최근 거래 ë‚´ì—­ì— ìžˆë˜ ëˆì´ 충분히 ë§Žì€ ë¸”ë¡ì— ì˜í•´ 묻히게 ë˜ë©´, 지나간 거래 ë‚´ì—­ì€ ì €ìž¥ 공간 확보를 위해 ë²„ë ¤ì ¸ë„ ëœë‹¤. ë¸”ë¡ í•´ì‹œë¥¼ 다시 헤집지 ì•Šê³ ë„ ì´ë¥¼ 수월하게 하기 위해서는, 거래 ë‚´ì—­ ì€ ë¨¸í´íŠ¸ë¦¬(Merkle Tree) 구조로 해시가 ë˜ë©°[7][2][5], 머í´íŠ¸ë¦¬ êµ¬ì¡°ì˜ ë£¨íŠ¸ 부분만 ë¸”ë¡ í•´ì‹œì— í¬í•¨ ë˜ì–´ì•¼ 한다. ì˜¤ëž˜ëœ ë¸”ë¡ì€ 트리 구조ì—ì„œ 가지를 ì³ëƒ„ìœ¼ë¡œì¨ ë” ìž‘ì•„ì§€ê²Œ ë˜ë©°, 하위 해시는 저장할 필요가 없게 ëœë‹¤. 4
  • 5. 거래 ë‚´ì—­ì´ ì—†ëŠ” ë¸”ë¡ í—¤ë”는 약 80ë°”ì´íŠ¸ ì •ë„ì´ë‹¤. 매 10분마다 블ë¡ì´ ìƒì„±ëœë‹¤ê³  가정할 경우, 80ë°”ì´íŠ¸ * 6 * 24 * 365 = 4.2MBê°€ 매년 소요ëœë‹¤. 2008ë…„ 기준으로 ì‹œì¤‘ì— íŒë§¤ë˜ê³  있는, 2GB 메모리가 ìž¥ì°©ëœ ì»´í“¨í„° 시스템과, 매년 1.2GBê°€ ì¦ê°€í•  ê±°ë¼ ì˜ˆì¸¡í•œ ë¬´ì–´ì˜ ë²•ì¹™ì— ì˜í•˜ë©´, ë¸”ë¡ í—¤ ë”ê°€ 메모리를 ì ìœ í•˜ê³  있어야 하ë”ë¼ë„ 문제가 ë˜ì§€ 않는다. (ì—­ìž ì£¼: ë¬´ì–´ì˜ ë²•ì¹™ì€ ë³¸ë¬¸ê³¼ 달리 18ê°œ ì›”ì— ë‘ ë°°ê°€ ëœë‹¤ëŠ” 예측ì´ë‹¤. 즉, 매년 약 1.59ë°°ë¡œ ì¦ê°€) 8. 지불 ìž…ì¦ ê°„ì†Œí™” êµ³ì´ ì „ì²´ ë„¤íŠ¸ì›Œí¬ ë…¸ë“œë¥¼ 쓰지 ì•Šë”ë¼ë„, ëˆì´ ì§€ë¶ˆëœ ì‚¬ì‹¤ì„ ìž…ì¦í•˜ëŠ” ê²ƒì´ ê°€ëŠ¥í•˜ë‹¤. 사용ìžëŠ” 가장 긴 ìž‘ì—…ì¦ëª… ì²´ì¸ì˜ ë¸”ë¡ í—¤ë”ì˜ ì‚¬ë³¸ë§Œ ê°–ê³  있으면, ìžì‹ ì´ 가장 긴 ì²´ì¸ì´ë¼ 확ì¸í•  때까지 네 íŠ¸ì›Œí¬ ë…¸ë“œë“¤ì—게 요청하고, ê·¸ 거래 ë‚´ì—­ì´ ê¸°ë¡ëœ 블ë¡ì— ì—°ê²°ëœ ë¨¸í´íŠ¸ë¦¬ ì¼ë¶€ë§Œ 받아오면 ëœë‹¤. 그는 스스로 거래 ë‚´ì—­ì„ í™•ì¸í•  수는 없고, ì²´ì¸ì— ì—°ê²°ë˜ì–´ ë„¤íŠ¸ì›Œí¬ ë…¸ë“œê°€ ê·¸ê²ƒì„ ìŠ¹ì¸í–ˆëŠ”지, ì´ í›„ì—ë„ ê³„ì† ë¸”ë¡ì´ 추가로 확ì¦ë˜ì–´ 승ì¸ëœ 지로 ì•Œ 수 있다. ì´ë ‡ê²Œ ì •ì§í•œ ë…¸ë“œë“¤ì— ì˜í•´ 네트워í¬ê°€ 제어ë˜ëŠ” í•œ 거래 ì¸ì¦ì€ 신뢰할 수 있지만, 공격ìžì— ì˜í•´ 네트워í¬ê°€ ì••ë„당하면 취약하다. ë„¤íŠ¸ì›Œí¬ ë…¸ë“œë“¤ì€ ìŠ¤ìŠ¤ë¡œ 거래 ë‚´ì—­ì„ ìž…ì¦í•  수 있지만, 단순히 ê³µ 격ìžì— ì˜í•´ ê³¼ì ëœ 네트워í¬ë¡œ 거래를 조작하고 ìœ ì§€í•¨ìœ¼ë¡œì¨ ë¬´ë ¥í™”ë  ìˆ˜ 있다. ì´ëŸ¬í•œ ë°©ë²•ì„ ë³´í˜¸ 하는 전략으로는 사용ìžì˜ 소프트웨어ì—ì„œ ë¸”ë¡ ì „ì²´ë¥¼ 다운로드 받고 ëª¨ìˆœìž„ì´ í™•ì¦ëœ 유효하지 ì•Šì€ ë¸”ë¡ì„ ë°œê²¬í–ˆì„ ë•Œ ë„¤íŠ¸ì›Œí¬ ë…¸ë“œë“¤ì´ ê²½ê³  ì•Œë¦¼ì„ ë°›ëŠ” 것ì´ë‹¤. ìž¦ì€ ì§€ë¶ˆì„ ë°›ëŠ” 사업ìžì˜ 경우ì—는 ì•„ë§ˆë„ ìžì²´ 노드ì—ì„œ ë…ë¦½ëœ ë³´ì•ˆ 체계와 빠른 ì¸ì¦ ë°©ë²•ì„ ë” ì›í•  것ì´ë‹¤. 9. ê¸ˆì•¡ì˜ ê²°í•©ê³¼ 분할 ëˆì„ 개별로 관리하는 ê²ƒë„ ê°€ëŠ¥í•˜ê² ì§€ë§Œ, 거래ì—ì„œ ìž‘ì€ ê°œë³„ 단위까지 êµ³ì´ ë‚˜ëˆ„ì–´ 다루는 ê²ƒì€ ê±° 추장스럽다. ê¸ˆì•¡ì„ ë‚˜ëˆ„ê³  í•©ì¹  수 있ë„ë¡ ê±°ëž˜ ë‚´ì—­ì€ ë³µìˆ˜ì˜ ìž…ë ¥ê³¼ 출력으로 ì´ë¤„진다. 대개는 í° ê¸ˆì•¡ì˜ ë‹¨ì¼ ìž…ë ¥ì´ê±°ë‚˜, 소액 ëª¨ê¸ˆì„ ìœ„í•œ 여러 ìž…ë ¥ì´ê±°ë‚˜, í•œ ì¶œë ¥ì€ ì§€ë¶ˆ 다른 ì¶œë ¥ì€ ê±°ìŠ¤ë¦„ëˆ ê°™ ì€ ë‘ ê°œì˜ ì¶œë ¥ ë°©ë²•ì´ ë  ê²ƒì´ë‹¤. 5
  • 6. ì´ë¥¼ 팬아웃ì´ë¼ 하며, 거래가 여러 ê±°ëž˜ë“¤ì— ê¸°ë°˜í•˜ê³  ê° ê±°ëž˜ë“¤ì´ ë‹¤ìˆ˜ì— ì˜ì¡´í•˜ëŠ” 경우ë”ë¼ë„ ì—¬ 기서는 문제가 ë˜ì§€ 않는다. 거래 기ë¡ì˜ 완전히 ë…ë¦½ëœ ì‚¬ë³¸ì„ ì¶”ì¶œí•  필요가 없다. 10. ê°œì¸ ì •ë³´ 보호 ê¸°ì¡´ì˜ ì€í–‰ 모ë¸ì€ 당사ìžë“¤ê³¼ ì œ 3ìž ì‹ ìš©ê¸°ê´€ì— ì •ë³´ ì ‘ê·¼ ê¶Œí•œì„ ì œí•œí•˜ì—¬ ê°œì¸ ì •ë³´ 보호가 ì–´ ëŠ ì •ë„ ê°€ëŠ¥í•˜ë„ë¡ í–ˆë‹¤. 모든 거래를 공개ì ìœ¼ë¡œ 알려야 하는 ì¤‘ìš”ì„±ì€ ì´ëŸ¬í•œ ê²ƒì„ ë¶ˆê°€ëŠ¥í•˜ê²Œ 하지 만, 공개키를 ìµëª…으로 소유하ë„ë¡ í•¨ìœ¼ë¡œì¨ ì •ë³´ì˜ íë¦„ì„ ì°¨ë‹¨í•˜ê³  ê°œì¸ ì •ë³´ê°€ ìœ ì§€ë  ìˆ˜ 있다. 외 부ì—서는 누가 다른 누군가ì—게 얼마를 보냈단 ì‚¬ì‹¤ì„ ë³¼ 수는 있으나, ê·¸ 거래 당사ìžë“¤ì˜ 신분으로 ì—°ê²°ë˜ì§€ 않으면 ì•Œ 수가 없다. ì´ëŠ” ì¦ì‹œì—ì„œ 공개ë˜ëŠ”, 시간과 거래 목ë¡ë§Œ í™•ì¸ ê°€ëŠ¥í•œ 거래 ì²´ê²° ì •ë³´ 공개 수준과 비슷하다. 추가ì ì¸ ì•ˆì „ìž¥ì¹˜ì˜ ì¼í™˜ìœ¼ë¡œ, 매번 거래마다 새로운 공개키-비밀키 ìŒì„ 사용하여 ê³µí†µì˜ ì†Œìœ ìžì— 게 ì—°ê²°ë˜ë„ë¡ í•˜ë©´ ëœë‹¤. 여러 ê°œì˜ ìž…ë ¥ì„ ê°–ëŠ” ê±°ëž˜ì˜ ê²½ìš°ì—는 여전히 연결고리를 남기는 ê²ƒì´ ë¶ˆ 가피하게ë„, ê·¸ ìž…ë ¥ë“¤ì´ ë™ì¼ 소유ìžë¼ëŠ” ì‚¬ì‹¤ì„ ê³µê°œëœë‹¤. 소유ìžì˜ 암호키가 공개ë˜ë©´ 그러한 ì—°ê´€ ì„±ì´ ë‹¤ë¥¸ 거래 ë‚´ì—­ì—ì„œë„ ë™ì¼ì¸ì— ì˜í•œ 것ì´ë¼ëŠ” 게 알려지게 ëœë‹¤. 11. 계산 공격ìžê°€ 다른 ì²´ì¸ì˜ 갈래를 빠르게 ìƒì„±í•˜ë ¤ê³  ì‹œë„하여 ì •ì§í•œ ë…¸ë“œë“¤ì˜ ì²´ì¸ì„ 앞질러 가장 긴 ì²´ì¸ì„ ìƒì„±í•  시나리오를 간주해보ìž. ì´ê²ƒì´ 성공한다 하ë”ë¼ë„, 그렇게 가짜 ê¸ˆì•¡ì„ ë§Œë“¤ê±°ë‚˜ 공격 ìž ì†Œìœ ì˜€ë˜ ì ì´ 없는 ëˆì„ 사취하ë”ë¼ë„, ìž„ì˜ì˜ 시스템 변화 ìƒíƒœë¡œëŠ” 남겨ë‘지 않는다. ë…¸ë“œë“¤ì€ ìœ íš¨í•˜ì§€ ì•Šì€ ê±°ëž˜ë¥¼ 지불로 승ì¸í•˜ì§€ ì•Šì„ ê²ƒì´ë©°, ì •ì§í•œ ë…¸ë“œë“¤ì€ ê·¸ëŸ¬í•œ 거래 ë‚´ì—­ì„ í¬í•¨í•˜ëŠ” 블 ë¡ì„ 절대 받아들ì´ì§€ ì•Šì„ ê²ƒì´ë‹¤. 공격ìžëŠ” ì˜¤ì§ ìµœê·¼ì— ì§€ë¶ˆí•œ ëˆì„ ë„ë¡œ ë˜ì°¾ê¸° 위해 ê·¸ì˜ ê±°ëž˜ ë‚´ ì—­ 하나만 바꾸려고 ì‹œë„í•  수 있다. ì •ì§í•œ ë…¸ë“œë“¤ì˜ ì²´ì¸ê³¼ 공격ìžì˜ ì²´ì¸ ê°„ì˜ ê²½ìŸì€ ì´í•­ëžœë¤ì›Œí¬(Binomial Random Walk)ë¡œ 특정 ì§€ì„ ìˆ˜ 있다. ì •ì§í•œ ì²´ì¸ì´ í•˜ë‚˜ì˜ ë¸”ë¡ì„ 성공ì ìœ¼ë¡œ ìƒì„±í•˜ëŠ” ì‚¬ê±´ì´ ì¼ì–´ë‚˜ë©´ +1, 실패하여 공격 ìžì˜ ì²´ì¸ì´ 블ë¡ì„ 하나 ìƒì„±í•˜ëŠ” ì‚¬ê±´ì´ ì¼ì–´ë‚˜ë©´ -1ì´ë¼ 한다. 공격ìžê°€ ê°–ê³  ìžˆì§€ë„ ì•Šì€ ê¸ˆì•¡ìœ¼ë¡œ 성공할 í™•ë¥ ì€ ë„ë°•ì‚¬ì˜ íŒŒì‚° 문제(Gambler’s Ruin problem) 와 비슷하다. ë¬´ì œí•œì˜ ì‹ ìš©ì„ ê°€ì§„ ë„박사가 ì ìž ìƒíƒœë¡œ 시작하여 ê±°ì˜ ë¬´ì œí•œì˜ ê²Œìž„ì„ ì‹œë„하여 ì† ìµë¶„기ì ì— ë„달한다 가정하ìž. 그가 ì†ìµë¶„기ì ì— ë„달할 확률, 즉 공격ìžê°€ ì •ì§í•œ ì²´ì¸ì„ ë”°ë¼ìž¡ì„ 수 있는 ê°€ëŠ¥ì„±ì€ ë‹¤ìŒê³¼ ê°™ì´ ê³„ì‚°í•  수 있다[8]: p = ì •ì§í•œ 노드가 ë‹¤ìŒ ë¸”ë¡ì„ ì°¾ì„ í™•ë¥  q = 공격ìžì˜ 노드가 ë‹¤ìŒ ë¸”ë¡ì„ ì°¾ì„ í™•ë¥  qz = zê°œì˜ ë‹¤ìŒ ë¸”ë¡ë“¤ì„ 빨리 ì°¾ì„ í™•ë¥  6
  • 7. p > q ë¼ëŠ” ê°€ì •ì´ ì£¼ì–´ì§„ë‹¤ë©´, 공격ìžê°€ ë¸”ë¡ ì¦ê°€ë¥¼ ë”°ë¼ìž¡ì„ 수 있는 í™•ë¥ ì€ ë¸”ë¡ ìˆ˜ì— ì§€ìˆ˜ì ìœ¼ ë¡œ ê°ì†Œí•˜ê²Œ ëœë‹¤. 공격ìžê°€ 먼저 달려들어 ìš´ì´ ì¢‹ê²Œ 성공하지 못한다면, ê°€ëŠ¥ì„±ì€ ë’¤ë¡œ ê°ˆìˆ˜ë¡ ì ì  í¬ë°•í•´ì§„다. ì´ë²ˆì—는 새로운 거래ì—ì„œ ëˆì„ 받는 사람 입장ì—ì„œ 송금ìžê°€ 거래를 바꾸지 못할 ê±°ë¼ëŠ” ê²ƒì´ ì¶©ë¶„ 히 확ì¦í•˜ë ¤ë©´ 얼마나 기다려야 하는지 ìƒê°í•´ë³´ê¸°ë¡œ 한다. 송금ìžê°€ 받는 ì‚¬ëžŒì´ ì¼ì‹œì ìœ¼ë¡œ ëˆì„ ë°› 았다 믿게 만들고 ì¼ì • 시간 ë’¤ì— ë‹¤ì‹œ ëˆì„ ìžê¸° ìžì‹ ì—게 ë˜ëŒë¦¬ê²Œ ì‹œë„하려는 공격ìžë¼ 가정하ìž. 받는 ì‚¬ëžŒì€ ê·¸ëŸ¬í•œ ì¼ì´ 벌어지면 경고 ì•Œë¦¼ì„ ë°›ì„ ê²ƒì´ê³ , 공격ìžëŠ” 그게 늦기를 바랄 것ì´ë‹¤. 받는 ì‚¬ëžŒì€ ìƒˆë¡œìš´ 암호키 ìŒì„ ìƒì„±í•˜ì—¬ 송금ìžì—게 서명하기 ì§ì „ì— ê³µê°œí‚¤ë¥¼ 넘긴다. ì´ëŸ¬í•œ ë°© ë²•ì€ ê³µê²©ìžê°€ 미리 충분한 시간 ì „ì— ê°€ì§œ ë¸”ë¡ ì²´ì¸ ìƒì„±ì„ 준비해ë‘ì–´ 가짜 거래를 성립시키는 ê²ƒì„ ë°©ì§€í•œë‹¤. ì†¡ê¸ˆì´ ì´ë¤„질 ë•Œ, ì •ì§í•˜ì§€ ì•Šì€ ì†¡ê¸ˆìžëŠ” ì€ë°€ížˆ ê·¸ì˜ ë‹¤ë¥¸ 거래 ë‚´ì—­ì„ í¬í•¨í•˜ëŠ” ì²´ì¸ì„ ë™ì‹œì— ìƒì„±ì„ 시작한다. ëˆì„ 받는 ì‚¬ëžŒì€ ê±°ëž˜ê°€ 블ë¡ì— í¬í•¨ë˜ê³  추가로 zê°œì˜ ì¶”ê°€ 블ë¡ë“¤ì´ ì—°ê²°ë  ë•Œê¹Œì§€ 기다린다. ê·¸ 는 공격ìžê°€ 얼마나 ë§Žì€ ìž‘ì—…ì„ ì§„ì²™ì‹œì¼°ëŠ”ì§€ 정확히 모르지만, ì •ì§í•œ 블ë¡ë“¤ì´ 매 í‰ê·  시간 간격마 다 ìƒì„±ë  것ì´ê³ , 공격ìžì˜ ìž ìž¬ì  ì§„í–‰ë¥ ì€ í¬ì•„송 분í¬ì˜ ê¸°ëŒ€ê°’ì¸ ë‹¤ìŒê³¼ ê°™ì„ ê²ƒì´ë‹¤. 공격ìžê°€ ê·¸ 순간ì—ë„ ì—¬ì „ížˆ ë”°ë¼ìž¡ì„ 수 있는 í™•ë¥ ì„ ê³„ì‚°í•˜ê¸° 위해, í¬ì•„송 분í¬ë¥¼ 공격ìžê°€ ê·¸ ì‹œì ì— ë¸”ë¡ ì²´ì¸ ìƒì„±ì„ ë”°ë¼ìž¡ì„ 매 ì§„í–‰ë¥ ì— ê°ê° 곱하ë„ë¡ í•œë‹¤. 분í¬ì˜ 무한급수를 ë”하지 않기 위해 ì‹ì„ 정리하면… ì´ë¥¼ C언어 코드로 구현하면… #include <math.h> double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7
  • 8. 결과를 ëŒë ¤ë³´ë©´ zê°’ì— ë”°ë¼ ì§€ìˆ˜ì ìœ¼ë¡œ í™•ë¥ ì´ ê°ì†Œí•¨ì„ ì•Œ 수 있다. q=0.1 z=0 z=1 z=2 z=3 z=4 z=5 z=6 z=7 z=8 z=9 z=10 P=1.0000000 P=0.2045873 P=0.0509779 P=0.0131722 P=0.0034552 P=0.0009137 P=0.0002428 P=0.0000647 P=0.0000173 P=0.0000046 P=0.0000012 q=0.3 z=0 z=5 z=10 z=15 z=20 z=25 z=30 z=35 z=40 z=45 z=50 P=1.0000000 P=0.1773523 P=0.0416605 P=0.0101008 P=0.0024804 P=0.0006132 P=0.0001522 P=0.0000379 P=0.0000095 P=0.0000024 p=0.0000006 Pê°€ 0.1%보다 ìž‘ì„ ê²½ìš°ë¥¼ 풀면… P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340 12. ê²°ë¡  지금까지 ì‹ ìš©ì— ê¸°ë°˜í•˜ì§€ ì•Šì€ ì „ìž ê±°ëž˜ ì‹œìŠ¤í…œì„ ì œì•ˆí•˜ì˜€ë‹¤. 디지털 서명으로 ì´ë¤„진 ì¼ë°˜ì ì¸ í™”í 구조ì—ì„œ 출발했다. ì†Œìœ ê¶Œì„ ê°•ë ¥ížˆ 제어하는 ë°©ë²•ì„ ì œê³µí•˜ì§€ë§Œ ì´ì¤‘ì§€ë¶ˆì„ ë°©ì§€í•  ë°©ë²•ì´ ì—†ì´ëŠ” 완벽하지가 않다. ì´ëŸ¬í•œ 문제를 해결하기 위해, ê³¼ë°˜ìˆ˜ì˜ ì»´í“¨íŒ… 파워를 ì •ì§í•œ ë…¸ë“œë“¤ì´ ì œì–´í•œë‹¤ë©´ 계산ìƒìœ¼ë¡œ 공격ìžê°€ 빠르게 ì¡°ìž‘í•  수 ì—†ì´ ê³µê°œì ìœ¼ë¡œ 거래를 기ë¡í•  수 있ë„ë¡ ìž‘ì—…ì¦ëª…ì„ ìˆ˜í–‰í•˜ëŠ” P2P 네트워í¬ë¥¼ 제안하였다. 네트워í¬ëŠ” 구조ì ì´ì§€ ì•Šì€ ë‹¨ìˆœí•¨ì—ì„œ ë¯¿ì„ ìˆ˜ 있다. ë…¸ë“œë“¤ì€ ì¡°ì§í™”í•  í•„ìš”ë„ ì—†ì´ í˜‘ë ¥í•˜ë„ë¡ ë˜ì–´ìžˆë‹¤. 특정 ìœ„ì¹˜ì— ë©”ì‹œì§€ê°€ 전달ë˜ì§€ ì•Šë”ë¼ë„ ìµœì„ ì„ ê¸°ë°˜ìœ¼ë¡œ 전달ë˜ê¸°ë§Œ 하면 ë˜ê¸° 때문ì—, 정체를 확ì¸í•  í•„ìš”ë„ ì—†ë‹¤. ë…¸ë“œë“¤ì€ ìžë°œì ìœ¼ë¡œ 네트워í¬ë¥¼ 떠났다가 합류할 수 있으며, ìž‘ì—…ì¦ëª… ì²´ì¸ì„ ê·¸ ë™ì•ˆì— ë²Œì–´ì¡Œë˜ ì‚¬ì‹¤ì— ëŒ€í•œ ì¦ëª…으로 받아들ì´ê¸°ë§Œ 하면 ëœë‹¤. 컴퓨팅 파워를 통해 ì˜ì‚¬ê²°ì •ì„ 하고, 유효한 블ë¡ì— 대해서만 ìž‘ì—…ì„ ìˆ˜í–‰í•¨ìœ¼ë¡œì¨ ìœ íš¨í•˜ì§€ ì•Šì€ ë¸”ë¡ë“¤ì€ 거부하게 ë¨ìœ¼ë¡œì¨ 거래 승ì¸ì„ 표시하게 ëœë‹¤. ì´ëŸ¬í•œ í•©ì˜ ë©”ì»¤ë‹ˆì¦˜ì„ ìœ„í•´ ì–´ë–¤ 규칙ì´ë‚˜ ë³´ìƒì´ ì„±ë¦½ë  ìˆ˜ 있다. 8
  • 9. 참고문헌 [1] W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998. [2] H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999. [3] S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. [4] D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping," In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. [5] S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997. [6] A. Back, "Hashcash - a denial of service counter-measure," http://www.hashcash.org/papers/hashcash.pdf, 2002. [7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, "An introduction to probability theory and its applications," 1957. ì›ë¬¸ S. Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System,†http://bitcoin.org/bitcoin.pdf, 2009. 번역 - 츄ì´ìŠ¤ 9