Translated in Korean from bitcoin.org/bitcoin.pdf by senetor88@hanmir.com 비트코인 : P2P 전자현금시스템 Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto www.bitcoin.org 초록. 순수한 P2P(peer-to-peer) 방식의전자통화가있다면한당사자가금융기관을거치지않고다른당사자에게곧바로금전을전송할수있다. 본래전자서명을통해온라인직접거래를달성할수있지만이경우에도중복사용 (double-spending) 을막기위해여전히신뢰되는제3자가요구된다면온라인직접거래의주요한장점은사라진다. 본연구에서는 P2P 네트워크를활용하여중복사용을방지하는솔루션을제안한다. 이네트워크는해시 (hash) 기반작업증명 (proof-of-work) 정보를담은연속된체인 (chain) 에전송시각을기록함으로써작업증명자체를다시행하지않는이상변경불가능한기록을생성한다. 여러체인중가장긴체인은기록된전송의순서를증명하는동시에최대규모의 CPU 성능을출처로한다는사실도증명한다. 네트워크공격에참여하지않는각노드 (node, 전산처리지점 ) 가 CPU 성능의주요부분을통제하는한이들노드를통해가장긴체인이생성되어공격자를앞지를수있다. 네트워크자체는최소한의구조만으로운용될수있다. 메시지는최선형 (best effort) 기반으로전파되고각노드는네트워크탈퇴및재가입여부를자유롭게선택할수있으며이경우탈퇴와재가입사이의전송정보에대해서는가장긴작업증명체인을따르게된다. 1. 서 인터넷을통한상거래는전자결제처리를위해신뢰되는제3자로금융기관을수반할수밖에없다. 이방식은대부분의거래에서잘작동하지만신뢰기반모델의본질적인약점에서벗어날수없다. 이경우금융기관은분쟁해결을피할수없기때문에완전히비가역적인거래는현실적으로불가능하다. 따라서분쟁해결비용으로인해거래비용이늘어남으로써실질적인최소거래규모의범위가제한되고일상적인소액거래의가능성이위축되며또한비가역적서비스에대한비가역적결제를실현할수있는역량의상실이라는거시적인비용문제도발생한다. 거래에가역성이있는한신뢰는불가피하게요구된다. 판매자는고객을완전히신뢰할수없기때문에필요이상의정보를요구하게된다. 또한어느정도의사기는불가피한부분으로인식된다. 당사자가상호접촉하는직접거래에서는물리적통화를통해이러한비용및결제의불확실성을극복할수있으나통신채널을통한결제의경우신뢰되는제 3자없이이를실행할수있는방법은없다. 신뢰가아닌암호학적증명에기반을둔전자결제시스템이있다면양당사자가신뢰되는제3자없이상호직접적으로거래를실행할수있다. 이방식을따른다면전산적으로가역성이사실상없는거래를통해판매자를사기로부터보호할수있으며구매자를보호하기위한상시적인거래중계 (escrow) 대책의적용도용이해진다. 본연구에서는 P2P 방식의분산형시점기록 (timestamp) 서버를통해거래의시간적순서에대한전산적증명을생성함으로써중복사용문제를방지하는솔루션을제안한다. 이시스템은선의 (honest) 의노드가총체적으로통제가능한 CPU 성능이집단적으로협조하는공격자노드보다높은한안전하게유지될수있다. 1
2. 전송 본연구에서전자적코인 (electronic coin) 은디지털서명의체인으로정의된다. 각소유자는앞선전송 (transaction) 및다음소유자의공개키 (public key) 에대한해시에전자서명을추가하고이를코인말단에첨부하여전송한다. 코인을받는측에서는소유권이전을확인하기위해해당전자서명을확인할수있다. 이경우수령자는전소유자의코인중복사용여부를확인할수없다는문제가있다. 이에대한일반적인해결방법으로는신뢰되는중앙통제주체혹은민트 (mint, 코인발행주체 ) 가모든전송을일일이확인하여중복사용여부를가려내도록하는방법이있다. 이경우각전송이종료되고나면코인은민트에게반환되고새로운코인으로대체되며민트가직접발행한코인만이중복사용되지않았다고본다. 이러한방식은금전시스템전체가민트운영자에게의존하고모든전송이그운영자를거칠수밖에없는데이는결국은행과다를바없다. 따라서전소유자가수령자와의전송에앞선다른전송에서명하지않았다는사실을수령자가알수있도록하는방법이필요하다. 이경우최선순위의전송만이문제되며이후의중복사용시도는고려하지않는다. 전송의공백을확인하려면모든전송을파악하는것이유일한방법이다. 민트모델의경우민트자체가모든거래를파악하게되며어떤거래가먼저도달했는지결정한다. 신뢰되는제3자없이이를달성하려면모든전송이공개전파되어야하며 [1] 참여자들이이러한전파내용의도달순서에대한통일된이력 (history) 에동의할수있는시스템이필요하다. 수령자에게는각전송시점마다노드의다수가해당전송의최선도달에동의했는지에대한증명이필요하다. 3. 시점기록서버 본연구에서제안하는솔루션은시점기록 (timestamp) 서버에서개시된다. 시점기록서버는전송시점이기록될항목을담은블록 (block) 의해시를산출하고이를신문이나유즈넷 (Usenet) 게시글처럼널리전파한다 [2~5]. 이러한시점기록을통해해당데이터가해당시점에존재했고그렇기때문에해시에포함될수있었다는사실이증명된다. 각시점기록의해시에는선행시점기록이포함되며이를통해추가시점기록이선행시점기록에계속이어짐으로써체인이형성된다. 2
4. 작업증명 분산형시점기록서버를 P2P 기반으로적용하기위해서는신문이나유즈넷기술보다는 Adam Back의해시캐시 (Hashcash)[6] 와유사한작업증명시스템을활용해야한다. 여기에는예컨대 SHA-256으로해시가산출될경우해시값이 0비트숫자들로개시되도록하는값에대한조사 (scan) 가수반된다. 이때요구되는평균작업량은필요한 0비트숫자의양과지수적 (exponential) 관계가되며하나의해시를실행하여확인가능하다. 본연구에서제안하는시점기록네트워크에서는블록에임의의값 (nonce) 을대입하여그블록의해시에서필요한 0비트숫자가나올때까지이과정을반복하는방식의작업증명을적용한다. CPU 사용량이작업증명을충족할정도에도달할경우해당작업을재실행하지않는한블록을변경할수없다. 이후블록이계속체인에추가됨에따라어떤블록을변경하려면이에대한선행블록까지모두재처리해야하는결과가된다. 이러한작업증명은다수결 (majority decision) 에대한진위판정문제도해결할수있다. 만약다수가 1 개 IP주소당 1투표원칙을따른다면대량의 IP를확보할수있는측에서시스템을장악할수있게된다. 그러나작업증명은기본적으로 1개 CPU당 1투표원칙을따른다. 이경우다수결은가장많은작업증명노력이투입된최장체인을통해나타난다. 선의의노드에서제어한다면 CPU 성능의대부분을제어한다면선의의체인이가장빠르게연장되어다른모든체인에앞서갈수있다. 공격자가선행블록을변경하기위해서는해당블록그리고그에이어지는모든블록의작업증명을재실행하고나서선의의노드에서실행하는작업증명을따라잡고또한앞서야만한다. 이하에서는공격자가선의의노드를따라잡을가능성은블록이체인에추가됨에따라급격히감소한다는점을설명한다. 하드웨어처리속도의향상그리고시간경과에따른노드운용이해관계의변동을보상하기위해작업증명의난이도는시간당블록의평균생성속도를고려하여조절된다. 블록이너무빨리생성될경우작업증명난이도는상승한다. 5. 네트워크 네트워크작동과정은다음과같다. 1) 새로운전송이전노드에전파된다. 2) 각노드는새로운전송을수집하여각자의블록에포함시킨다. 3) 각노드는각자의블록에대한작업증명을찾는작업을실행한다. 4) 작업증명을찾아낸노드는해당블록을전노드에전파한다. 5) 노드는모든전송이유효하고중복사용이없는경우에만해당블록을인정 (accept) 한다. 6) 노드는대상블록해시를선행해시로하여후속블록생성을개시함으로써대상블록을인정한다. 노드는언제나가장긴체인을올바른체인으로인식하고이를연장하기위한작업을계속한다. 만약두노드가서로다른블록을동시에전파할경우개별노드는각기다른블록을먼저전파받게된다. 이경우각노드는각자우선전파받은블록에대한작업을실행하지만다른블록이들어간체인이더길어질수도있기때문에다른블록을일단유지한다. 다음작업증명이발견되고체인하나가더길어질경우이러한균형은깨지게되며다른체인에서작업하고있던노드도모두더긴체인으로갈아타게된다. 새로운전송의전파가반드시모든노드에도달해야만하는건아니다. 전송이다수노드에전달되기만하면금방블록에포함될수있다. 블록전파는아울러전파메시지가누락되는경우에도작동한다. 어떤노드가블록을전파받지못할경우해당노드는블록을받지못했다는알림과함께다음블록을전파받는시점이언제일지에대한요청을보내게된다. 3
6. 보상 블록의첫전송은그블록의생성자가보유한새로운코인의유동을개시하는특별한성격의전송이다. 이는노드의네트워크유지에대한보상 (incentive) 이되며코인을발행하는중앙주체가없기때문에코인의유동을개시할수있는방법이기도하다. 새로운코인의지속적인추가는마치금광채굴자들이금유동량을늘리기위해자원을소모하는경우와같다. 본시스템의경우 CPU 처리시간및전력이그러한소모자원이된다. 전송수수료또한보상수단이될수있다. 만약전송의출금 (output) 값이입금 (input) 값보다적을경우그차액은해당전송을포함한블록의보상액수에전송수수료로서추가된다. 사전지정된수량의코인이모두유동에들어가면보상은전적으로전송수수료에의존하게되며인플레이션은완전히차단된다. 보상은노드가선의를유지하도록할수있다. 만약욕심을가진공격자가모든선의의노드보다더많은 CPU 성능을확보할수있다면그는이자원을통해지급금액을빼돌려사기를실행할지아니면새로운코인을생성할지정해야한다. 이경우시스템을공격하고자신이보유한부의유효성을저해하기보다는다른모두보다도더많은코인을확보할수있도록해주는원칙을따르는선택이결국더높은수익을가져온다는점을깨달을수있다. 7. 디스크용량절감 최신의코인전송이후에블록이충분히누적되면이미소비된전송의이력을삭제하여디스크용량을절감할수있다. 이때블록해시의손상을피하기위해전송정보해시는 Merkle 트리 (tree) 에들어가고 [7, 2, 5] 트리의뿌리 (root) 만이블록해시에포함된다. 낡은블록은이트리에서가지를잘라냄으로써압축가능하다. 뿌리외의내부해시는보관할필요가없다. 전송정보가없는블록헤더의용량은 80바이트가량이다. 블록이 10분마다생성된다고가정하면 80*6*24*365로계산하여연간 4.2MB의정보가생성된다. 2008년기준으로개인용컴퓨터는대체로 2GB 램을보유하고무어의법칙 (Moore s Law) 에따라매년 1.2GB씩용량이늘어단다고생각한다면블록헤더를메모리에보관한다해도용량이문제될일은없다고하겠다. 4
8. 결제확인간소화 네트워크노드를완전히가동하지않고도지급의확인 (verification) 이가능하다. 사용자는가장긴작업증명체인의블록헤더 (header) 사본만유지하면되는데네트워크노드를조사하여자신이가장긴체인에들어가있다고확신할때확인하려는전송과그전송이기록된블록을연결시키는 Merkle 가지 (branch) 를획득함으로써이사본을얻을수있다. 사용자는전송을직접확인할수는없지만그전송이체인의어느부분에있는지연결시킴으로써네트워크노드에서그전송을인정했음을알수있으며이후에블록이추가됨으로써네트워크의인정사실을더욱확실히할수있다. 이렇게보면선의의노드가네트워크를제어하는한전송확인을신뢰할수있으며반대로공격자가네트워크를장악한경우그러한신뢰성을담보할수없게된다. 네트워크노드가자체적으로전송을확인할수도있으나공격자가네트워크를계속장악할수있다면전송을조작함으로써위와같은간소화된방식을기만할수있다. 이를막기위한전략으로는네트워크노드가무효 (invalid) 블록을탐지할때발령하는경보를수집하도록하고사용자소프트웨어가전체블록그리고경보가울린전송정보를다운받아이러한불일치를확인할수있도록하는방법을생각할수있다. 지급수령이잦은회사의경우독립된보안과신속한전송확인을위해자체적인노드운용을선호할수도있다. 9. 금액의결합및분리 물론각코인을개별적으로처리할수도있겠지만모든단위마다일일이전송을실행하기는어렵다. 모든전송은금액의결합및분리가가능해지도록입금 (input) 과출금 (output) 으로구성된다. 하나의전송에는보통선행고액전송에의한단일입금이나여러소액전송에의한다수의입금이있을수있으며출금은최대두건으로각각본액의지급그리고경우에따라지급자에대한잔액 (change) 의환금이있을수있다. 이경우어떤전송이여러선행전송에의존하고이들선행전송또한더많은선행전송에의존함에따 른정보확장 (fan-out) 은문제가되지않는다. 이렇게모든내용이담긴전송이력의완전한사본을추출 할이유가없기때문이다. 5
10. 프라이버시 전통적인금융모델은정보에대한당사자와신뢰받는제3자의접근을제한함으로써일정수준의프라이버시를달성한다. 모든전송의공개전파필요성은이러한종래방식과전면배치되지만이경우공개키를익명으로유지함으로써다른측면에서정보의흐름을차단하여프라이버시를유지할수있다. 누군가가다른누군가에게어떤양의금액을보내는지는공개되지만이러한전송을그누구와도연결시킬수없다. 이는주식거래소의정보공개수준과비슷하다고할수있는데주식거래에서는개별거래의시점과규모그리고 " 테이프 " 가공개되지만해당당사자가누구인지는알수없기때문이다. 아울러개별전송마다새로운공개키와개인키가사용되어야한다는추가안전대책이적용되며이를통해각전송이동일한소유자에게연관 (linking) 되는결과를막을수있다. 여러입금이수반되는전송에서는각입금이동일소유자를거친다는점이밝혀질수밖에없으므로어느정도의연관은불가피하다. 이경우어떤공개키의보유자가밝혀지면위와같은연관을통해해당보유자가실행한다른전송도알아낼위험이있다. 11. 연산 이제공격자가선의의체인이아닌다른체인을더빠르게생성하려는경우를가정한다. 만약이러한시나리오가실제로실현된다해도당장없는값이생겨나거나본래공격자소유에속하지않은금전이탈취되는등시스템이임의로변경되는건아니다. 노드는유효하기않은전송을지급으로인정하지않으며선의의노드는이러한무효의전송이포함된블록을인정하지않는다. 공격자는다만자신의전송사실을변경하여자신이이미사용한돈을돌려받으려는시도를할수있을뿐이다. 선의의체인과공격자체인의경주는이항급수랜덤워크 (Binomial Random Walk) 로표현될수있다. 이때성공의결과는선의의체인이 1블록연장되어 +1만큼간격이변경되는경우로, 실패의결과는공격자체인이 1블록연장되어간격이 -1만큼변경되는경우로가정한다. 어떤주어진간격에서공격자가따라잡을확률의문제는이른바도박사의파산 (Gambler s Ruin) 문제와유사하다. 도박사가어떤간격에서무한정의밑천을가지고도박을시작하여동점에도달하기위해무한횟수의시도를한다고가정한다. 이경우그가동점에도달하는확률, 혹은공격자가선의의체인을따라잡는확률을계산할수있으며그과정은다음과같다 [8]. P = 선의의노드가다음블록을찾아낼확률 q = 공격자가다음블록을찾아낼확률 qz = z 블록만큼뒤쳐진공격자가따라잡을확률 6
p>q라고가정하면공격자가따라잡아야할블록의수가늘어날수록따라잡는확률은지수적으로 (exponentially) 감소한다. 이렇게불리한조건에서만약공격자가초반에행운을잡지않는이상그가뒤쳐질수록따라잡는확률은거의무의미할정도로작아지게된다. 이제새로운전송의수령자가지급자측이전송을변경할수없다고확실히믿을수있으려면얼마나기다려야하는지가문제된다. 이때지급자는공격자로서수령자가지급을정상적으로받았다고한동안착각하게한다음그지급대상을자기자신으로바꾸려한다고가정한다. 이경우수령자는결국그러한사기를알수있긴하지만공격자는자신의행적이늦게발각되기를바라게된다. 수령자는전송승인직전새로운공개키와개인키를생성하고지급자에게공개키를보낸다. 이방식을통해지급자가사전에블록을준비하여충분히앞서간다음사기전송을실행하는수법을막을수있다. 일단전송이이루어지고나면악의의지급자는그가원하는사기전송내용을담은평행체인에대한작업을개시하게된다. 수령자는전송이블록에추가되고그이후의 z만큼의블록이추가될때까지기다린다. 수령자는공격자의진행도를알수없으나선의의블록생성에블록당예상평균시간이소요됐다고가정한다면공격자의예상진행도는푸아송 (Poisson) 분포를따르게되며해당예상값은다음과같다. 이경우공격자가따라잡을수있는가능성을구하기위해서는공격자의각진행도값에대한 Poisson 밀도에공격자가그시점으로부터추격할수따라잡을있는가능성과곱한다. 분포의무한부분의합을없애기위해수식을다시쓰면 이를 C 코드로바꾸면 7
결과를측정하면 z 에지수적인관계로확률이감소함을알수있다. P 가 0.1% 보다낮은경우를계산하면 12. 결론 이상과같이본연구에서는신뢰에의존하지않는전자거래시스템을제안했다. 본시스템은전자서명으로생성되는코인의일반적인프레임워크에서출발하는데전자서명방식은소유권통제는우수하지만중복사용방지대책이없는한불완전할수밖에없다. 이부분을해결하기위해본연구에서는작업증명을통해거래에대한공개이력을기록하는 P2P 네트워크를제안했으며이방식에서는선의의노드가과반 (majority) 의 CPU 성능을확보할경우공격자에의한변경가능성은금방전산적현실성을잃게된다. 이러한방식의네트워크는별도의구조설계가없는단순성측면에서견고하다고할수있다. 노드는약간의협조만으로도모두동시에작동한다. 노드가전달하는메시지는특정지점으로전송 (route) 되지않고최선형기반으로만전파되기때문에각노드가별도로식별될필요가없다. 노드는자의에따라네트워크에대한가입또는탈퇴를정할수있으며탈퇴기간동안의네트워크의내부이력에대해서는작업증명체인을따르게된다. 노드는 CPU 성능을통해투표를하는데유효한블록에대해서는해당블록을체인에추가하는작업을수행함으로써이를인정하는한편유효하지않은블록에대해서는해당블록에대한작업을거절함으로써이를인정하지않는방식으로작동하게된다. 그외에필요한규칙과보상은합의 (consensus) 방식을통해실행될수있다. 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. 원문 https://bitcoin.org/en/bitcoin-paper 역자 senetor88@hanmir.com 9