Satosh Nakamoto의 Bitcoin을 원문으로 읽으면서 블록체인도 공부하고 영어도 공부하고 (1편)
<들어가는 글>
사토시 나카모토라는 이름으로 2008년에 발표한 <비트코인: 피어투피어 전자화폐시스템>은 최근 광풍을 일으키고 있는 비트코인, 그리고 그 핵심 기술인 블록체인과 관련하여 역사적인? 문서로 인정받고 있습니다. 따라서 저처럼 최근의 중요한 기술에 관심을 갖고 있는 일반인이나, 이 분야에서 활동하는 개발자 분들이나 모두 읽어 둬서 손해볼 일은 없을 겁니다. 문제는 이게 영어로 발표되었다는 거지요. 그래서 이걸 영어로 읽으면서 같이 공부해 보면 좋겠다고 생각했습니다. 세상의 흐름도 공부하고 영어도 공부하고..
보니까 인터넷에 한글로 해석된 문서도 있고, 나름 공들여 번역한 것이긴 하지만, 그래도 이렇게 중요한 문서는 영어 원문을 직접 읽어 두는 것이 여러모로 좋겠습니다.
그 이유는 이렇습니다.
번역자는 먼저 영어 원문을 원문으로 읽고 이해합니다. 그러므로 번역자는 원문을 잘 이해할 수 있습니다.
그러나 번역자가 영어 원문을 아무리 잘 이해했어도 그것을 한국어로 번역할 경우,
번역문을 읽는 사람이 원작의 취지를 번역자 자신만큼 이해하게 하는 것은 불가능에 가깝습니다. 가장 중요한 이유는 영어와 한국어는 언어의 구조가 다르기 때문입니다.
영어와 한국어는 구조가 다르기 때문에 번역과정에서 원작자가 원래 했던 생각의 순서를 반드시 뒤틀어야 합니다. 생각의 순서가 뒤틀리면 그 생각을 이해하는데 반드시 문제가 생깁니다.
예를 들어 [a book on the desk] 와 그것을 번역한 [책상 위에 있는 책]을 봅시다.
영어 원문은 어휘가 놓인 순서로 인해 ‘다른 것이 아니라 바로 book’이라는 의미를 전달하지만, 번역문은 ‘다른 데가 아니라 바로 책상 위’라는 의미를 전달합니다.
영어와 한국어는 의미를 구성하는 말의 구조가 다르기 때문에 번역을 하면 불가피하게 생각의 순서를 바꾸어야 하고, 그것이 이처럼 의미의 미세한 차이를 가져옵니다.
이 예는 너무나 단순하여 ‘좀 달라도’ 전체를 이해하는 데는 큰 문제가 없다고 할 수 있습니다. 그러나 복잡한, 세심한 묘사나 복잡한 논리를 전달하는 문장을 번역해 놓으면 정확하게 이해하는데 반드시 심각한 애로가 생기게 됩니다.
이해와 번역은 서로 다른 작업입니다. 그러므로 우리는 중요한 문서를 볼 때에는 가능하다면 원문 - 이해 - 번역 보다는 원문 - 이해 로 가는 게 좋겠습니다. 그래야 작자의 생각을 가장 정확하게 이해할 수 있습니다.
또 하나, 이 과정을 시작한 본인은 개발자가 아니며 따라서 기술에서는 완전 문외한입니다. 뉴스 같은 걸 보다가 주워듣고 잊어버리고 한 것이 블록체인에 대해 알고 있는 것의 전부지요. 하지만 이건, 감으로 보건데, 뭔가 앞으로 사는데 매우 중요한 변화를 가져올 것 같아서 좀 알아보려고 하는 중입니다.
그러므로 제가 학교 다닐 때 영어를 조금 공부했다고 하여 이러한 기술적인 문서를 정확히 이해한다는 것은 불가능한 일입니다. 문법을 알고 어휘의 사전적 의미를 아는 것은 메시지를 이해하는 데 필요조건은 되어도 충분조건은 결코 될 수 없습니다.
다음 한글을 읽어 봅시다.
“소크라테스 이전의 그리스 사상가들이 남긴 단편들에서는 존재가 현존으로, 곧 현존하는 것을 현존하게 해주는 운동 내지 사건으로서 이해되었으나, 플라톤 이후에는 존재가 실체로 이해되어 존재가 지닌 사건의 성격이 상실되었다”
이거 뭔 신문에 난 기사를 그대로 옮긴 건데, 잘 이해되나요? 단어는 다 알겠는데 결정적인 의미가 안 들어옵니다. 난 뭔 말인지 당최...^^ 철학을 전공했거나 평소 철학책을 즐겨 읽지 않았던 나같은 사람은 이게 어느 별나라 말이냐 하고 생각할 수 밖에 없지요. 문법 이해되고, 단어도 대충 아는 건데 말이지요.
어떤 말들은 그것이 어떤 컨텍스트에서 사용되는가를 알지 못하면, 즉 그 개념을 알지 못하면, 이해할 수 없습니다. 이 원전에 나오는 기술적 용어나 개념들은 제가 이해할 수 있는 범위를 넘어서는 것이 대부분이기 때문에 저는 절대로 이 원문을 100% 이해할 수 없습니다.
그래서 혹시 이 글을 읽는 분들 중에 이 분야를 아시는 분이 있으면 도움을 좀 주시기 바랍니다. 제가 번역하다가 잘 모르는 부분이 있으면 ‘질문’을 해 놓겠습니다. 그 때 도움을. 제가 워낙 무식하여 뭘 모르는지도 모르고 넘어가는 부분이 있다면 그 때 지적을. 그렇게 해서 저처럼 개발자가 아니지만, 시대의 흐름을 이해하고 싶어하는 사람들에게 도움을 주시면 살아서나 저세상에 가서나 큰 복을 받을 겁니다.^^
그럼. 시작해 볼까요? 원문을 ‘생각의 단위’로 나누어 표시하고, 각각의 생각의 단위를 우리말로 표시하기로 하겠습니다. 누구든 생각이 떠오르는 대로 말하고 씁니다. 즉 생각의 순서와 표현의 순서가 같다는 겁니다. 따라서 저자가 말하거나 써나가는 순서대로 이해해 나가는 것이 저자의 생각을 가장 잘 이해할 수 있는 방법입니다. 여기에다가 여러분이 알고 있는 영어 문법 지식을 활용하면 저자의 생각을 이해하는데 어려움이 없을 것입니다. 문법 설명은 최소화했습니다. 만약 질문이 있으면 댓글에 알려 주시기 바랍니다. 서로 답변하셔도 좋고 저도 할 수 있으면 하겠습니다.
오늘 공부할 내용은 맨 앞부분 abstract(요약)입니다. 사실 요약문은 이 원문 중 가장 읽기 어려운 부분이라고도 할 수 있습니다. 전체 내용을 읽지도 않았고 내용도 모르는데 요약문을 이해한다는 것은 어불성설이지요. 하지만 완벽한 이해를 목적으로 하기보다는 이 글이 대충 어떤 이야기를 하고자 하는지 감이나 잡아보자 하는 심정으로 읽어 보면 되겠습니다.
Bitcoin: A Peer-to-Peer Electronic Cash System
Satoshi Nakamoto
Abstract.
A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone
====================================
Abstract.
초록 혹은 요약
(1) A purely peer-to-peer version of electronic cash / would allow online payments to be sent directly / from one party to another / without going through a financial institution.
순전히 피어투피어 버전인 전자화폐는 / (존재한다면) 온라인 지불이 직접적으로 보내어질 수 있게 할 것이다./ 한 편에서 다른 편으로 / 금융기관을 통하지 않고도.
*would allow 가정법 과거의 would: 저자가 글을 쓰고 있는 시점에서는 그런 서비스가 없다는 것을 의미한다.
사실만 전달하는 기술 과학적 문서에서 would should could might 같은 말이 나오면 주의해야 합니다.
(2) Digital signatures provide part of the solution,/ but the main benefits are lost / if a trusted third party is still required / to prevent double-spending.
전자서명은 그 해법의 일부를 제공, / 그러나 주된 benefits은 없다/ 만약 여전히 신뢰받는 제3자가 요구된다면 / 이중 지불을 막기 위해.
여기까지를 보면, 필자가 이 글을 발표할 때는 p to p 네트웍을 사용하는 전자화폐가 있기는 했지만, 이중지불을 방지하기 위해 여전히 신뢰받는 제3자, 즉 신뢰받는 중개인이 필요했다는 것 같습니다. 그런가요?
공부해야 할 내용이 크게 3개가 나왔습니다. 전자서명, 이중지불, 신뢰받는 제3자
전자서명 digital signature
이것을 이해하려면 먼저 개인키-공개키 암호의 개념을 알고 있어야 합니다.
거래당사자 A와 B는 각각 자신만의 공개키public key와 개인키private key의 쌍을 갖고 있다.
A의 공개키로 암호화 한 것은 A의 개인키로만 복호할 수 있고, A의 개인키로 암호화한 것은 A의 공개키로만 복호할 수 있다. (B도 마찬가지)
3.각자의 개인키는 오직 자신만 알고 아무에게도 공개하지 않는다.
각자의 공개키는 거래당사자인 A와 B가 서로 교환한다(즉 상대에게 공개한다).
여기까지가 서론, 본론으로 가면,
- A가 사전에 받아 두었던 B의 공개키로 중요한 메시지[예, 입금계좌번호]를 암호화하여 B에게 전송한다. 암호화된 메시지를 받은 B는 그 메시지를 자신의 개인키를 이용하여 복호해서 내용을 확인할 수 있지만, 그 메시지를 정말 A가 보낸 건지는 확신할 수 없다. 공개키는 당사자 아닌 제3자가 입수할 수 있기 때문이다.
2.따라서 A의 전자서명이 필요하다.
A는 자신의 서명[여기서 서명은 디지털 문자열이라고 해 두자]을 자신의 개인키로 암호화해서 B에게 전송하는 메시지에 첨부한다. B는 사전에 받아 두었던 A의 공개키로 A의 서명을 확인해서[실제로는 서명 문자열을 읽을 수 있게 보여 주는 것이 아니라, “이것은 A가 보낸 문서입니다” 정도로 알려 줄 것이다.] 이것이 A가 보냈다는 것을 확인한다.
이중지불 double spending
모든 digital contents는 무한 복제가 가능하다. 따라서 digital cash는 별다른 장치가 없는 한 이중 삼중의 지불, 즉 사기fraud 지불이 가능하다.
신뢰할 수 있는 제3자
은행, 카드회사 등.
(3) We propose a solution / to the double-spending problem / using a peer-to-peer network.
그래서 우리는 해법을 제안한다/ 이중 지불 문제에 대하여/ 피어투피어 네트웍을 사용하는, 혹은 사용하면서도.
*using~ 은 a solution을 꾸며준다.
*a solution to ~ = an answer to ~
즉 피어투피어네트웍을 사용하면서도 신뢰할 수 있는 제 3자 없이 이중지불문제를 해결할 수 있는 해법을 제안한다는 것.
이하에서는 앞으로 본문에서 다룰 내용들이 언급되는 듯. 따라서 낯선 개념들이 나와도 여기서 해결할 수는 없고, 앞으로 이어질 본문을 보면서 이해해 나가야 하겠습니다.
(4) The network timestamps transactions / by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work.
이 네트웍은 거래들에 대해 타임스탬프를 찍는다 / 거래들을 해쉬하여 이어지는 체인에 집어넣음으로써 (어떤 체인?)/ 해쉬에 기반한 작업증명 체인, / 이것은 기록을 만들어낸다/ 바꾸어질 수 없는 기록/ 작업증명을 다시 하지 않고는/
-->이 네트웍은 거래들에 타임스태프를 찍는다. (어떻게?)
거래들을 해쉬하여, 이어지는, 해쉬에 기반한 작업증명 체인에 집어넣음으로써.
(타임스태프를 찍는다=작업증명 체인에 집어넣는다)
이것은 작업증명을 다시 하지 않고는 바꿀 수 없는 기록을 만들어낸다.
*forming = which forms which는 앞에 나온 내용 전부를 받는다.
(5) The longest chain not only serves as proof / of the sequence of events witnessed, / but proof that it came from the largest pool of CPU power.
가장 긴 체인은 증명으로서만 기능하는 것이 아니라 / 옳다는 것이 증명된 이벤트들의 순서에 대한 증명 / 그것(가장 긴 체인)이 가장 큰 cpu power의 풀에서 왔다는 것에 대한 증명으로서도 기능한다.
->가장 긴 체인은 옳다는 것이 증명된 이벤트들의 순서에 대한 증명으로서만 기능하는 것이 아니라,
그것(가장 긴 체인)이 가장 큰 cpu power의 풀에서 왔다는 것에 대한 증거로서도 기능한다.
*witness = verify 옳다는 것을 증명하다.
*proof 여기서는 증명이라고 표현했지만, 실은 ‘보장한다’는 뉴앙스가 들어 있다.
예문)Lawyers can witness documents, verifying that the signature on the document belongs to the person who has signed it.
(6) As long as a majority of CPU power is controlled / by nodes that are not cooperating to attack the network, they'll generate the longest chain / and outpace attackers.
과반의 cpu 파워가 통제된다면 / 네트웍을 공격하는데 협조하지 않는 node들에 의해 / 그 node들은 가장 긴 체인을 형성할 것이고 / 공격자들을 따돌릴 것이다.
->과반의 cpu 파워가 네트웍을 공격하는데 협조하지 않는 node에 의해 통제된다면,
그 node들은 가장 긴 체인을 형성할 것이고 공격자들을 따돌릴 것이다.
*they = nodes 복수형...주의해야 함.
질문 있습니다!
node가 과반일 필요는 없다. cpu가 과반이어야...그렇다면 초기에 블록체인은 과반의 cpu를 장악한 소수의 node에 의해 맘먹은 대로 작성되었을 수 있을까요. 예를 들어 실제는 거래가 없었는데 거래가 있는 것으로 하여 자산을 분산시킨다는가...
(7) The network itself requires minimal structure./ Messages are broadcast on a best effort basis, / and nodes can leave and rejoin the network at will, / accepting the longest proof-of-work chain as proof / of what happened while they were gone.
네트웍 자체는 최소의 구조를 요구한다. (이하는 최소의 구조에 대한 설명) 메시지들은 best effor basis 로 브로드캐스트된다/ 노드들은 네트웍을 떠났다가 돌아올 수 있다. 마음대로 / 가장 긴 작업증명 체인을 증거로 받아들인다면 / 그들이 떠나 있을 때 무슨 일이 있었는지에 대한 증거로.
--->노드들은 마음대로 네트웍을 떠났다가 돌아올 수 있다.
그들이 떠나 있는 동안 형성된 가장 긴 작업증명 체인을 유효한 것으로 받아들이는 한.
*best effort basis 명확히 수량을 정해 놓은 것이 아니라 주어진 여건에서 최대한으로,,..
오늘은 여기까지, 내일은 본문으로 들어갑니다.
<쉬어가기>
“You can tell more about a person / by what he says about others / than you can by what others say about him.”
어떤 사람에 대해 더 많은 걸 알 수 있다 / 그가 다른 사람들에 대해 말하는 것에 의해 / 다른 사람들이 그에 대해 말하는 것에 의해서 (알 수 있는 것)보다.
*tell: 여기서는 ‘알다’의 뜻
*~than you can 뒤에 tell 생략되어 있음.
오드리헵번이라는 여배우가 한 말입니다. 다른 사람들도 이런 말을 했겠지만, 여하튼 아름다웠던 것만큼이나 생각이 깊은 배우였습니다.
이런 표현은 외워 둡니다. 그래서 적절한 경우에, 예를 들어 누군가가 다른 사람 등 뒤에서 안 좋은 소리를 할 때, 상대에게 이렇게 말하는 겁니다. Audrey Hepburn said, " ". 그럼 상대방이 눈을 동그랗게 뜨겠지요^^
오........
논문도 읽고, 영어도 공부하고...
좋네요...?!
!!!!! 다음 글 기대할게요!!
교과서 공부하는 느낌이네요. 저도 도전하려고 아껴두고 있어서 다 읽진 않았습니다. 대신 베네치아 글만 다 보고 가네요ㅋㅋㅋ 사진 너무 좋습니다.