- 한계효용과 컴퓨터 2019.12.14
- 2019.12.7 2019.12.07
- 2019.11.24 2019.11.24
- 거 그래서 블록체인이 뭐란 말이오? (1) 2019.11.10
- 2019.11.09 2019.11.09
- 「래디컬 마켓」, 에릭 포즈너, 글렌 웨일 2019.11.09
- 뻘글이 빵하고 터질 때 2019.11.04
- 블록체인 거 쓸만하긴 해요? 2019.11.04
- 2019.10.22 인터넷 안에 사람있어요! 2019.10.22
- 2019.10.03 2019.10.03
이런 저런 이야기를 하려다가, 사실 컴퓨터가 무엇을 하느냐에 대한 질문들에 대한 이야기가 나와서 잠시 글을 쓰게 되었다. 한계 효용이라는 단어를 썼지만, 실제로 한계 효용이라는 것보다는 한계 효용으로인한 효용 감소에 대한 이야기겠지만 말이다. 여튼, 이야기를 시작해보자.
경제학에서는 한계 효용이라는 용어가 있다. 한계 효용은 재화의 가치에 대한 부분이다. 뭐 편하게 생각한다면 위키피디아에 언급된 것처럼, 갈증을 느낄 때의 물 한 모금과 그 다음의 한 모금과, 그 다음의.... 최종적으로 갈증을 해결했을 때의 물 한 모금의 가치는 분명히 다르다는 것이다. 즉, 재화가 어느정도 쌓이게 된다면, 재화의 가치는 선형적으로 증가하는 것이 아니라 점점 가치가 증가하는 속도가 떨어진다는 것이라고 하면 되겠다.
"한계 효용을 왜 컴퓨터 공학에 대해서 이야기를 하느냐"라고 묻는다면, 실제로 많은 컴퓨터 공학에 대한 담론들은 7~80년 대에 형성이 되었고, 이 이후에 담론의 진보나 변화가 있는 것처럼 보이지는 않는다 혹은 왜 구시대적 담론이 컴퓨터 공학에 대한 평가 잣대로 쓰이는가에 대한 질문으로부터 시작된다. 일반적으로 7~80년대라고 칠 경우, 제일 먼저 떠오르는 것은 애플][ 컴퓨터나, 그에 준하는 PC들일 것이다. 매킨토시를 필두로 하여, IBM이나 GE 등의 거대 기업의 컴퓨터 사업 자체를 박살내 버린 정보화 혁명은 충분히 세상을 바꾸었다고 할 수 있을 것이다. 그리고, 그에 따라서 컴퓨터 공학에 대한 철학계나 사회과학계의 비판과 경영학적 접근 혹은 방법론들이 생기기 시작하였고, 아직도 그 의견들이 주류적인 모양새를 지니고 있는 것처럼 보인다. 이는 아마도, 한계 효용이라는 개념을 적확하게 설명하는 무언가라고 생각하고 있다.
사실 이 글은 컴퓨터의 한계를 인용한 트친의 트윗으로부터 시작이 되었는데, 실제로 이러한 시각이나 이러한 방법론을 탈피해야한다는 주장에 대해서는 충분히 이해가 간다. 일반적으로, 기술 고도화가 되거나 집약화가 된 경우 그 기술이 세상을 바꾸는 모습은 잘 보이지 않지만, 실제로는 세상을 엄청나게 바꾸고 있는 경우가 허다하기 때문이다. 그렇기에 두 가지 접근법을 사용하여 분석을 시도를 하려고 한다. 첫째, 기존 주장과 같은 형태로 21세기의 컴퓨터 기술의 발전은 20세기 컴퓨터 기술의 발전과 동일하며, 실질적으로 20세기 발전의 연장선상이므로 기존 담론과 방법론의 재적용에 무리가 없어야한다. 둘째, 21세기의 컴퓨터 기술은 20세기와 분명히 다르며, 이에 따른 변화는 4차 산업...아니아니... 그거 말고 새로운 기술 혁명 혹은 기술의 발전으로 꼽을 수 있다. 로 글을 전개해 보는 것이다.
일단 첫 의견을 시작을 하자면, 실제로 정보 혁명이라고 부르는 7~80년대의 혁명은 실제로 21세기의 컴퓨터 기술 발전을 실질적으로 예상을 하였으며, 실제로 20세기의 기술 발전이 가져온 것들의 알레고리에 불과하다는 시각만을 갖는 것은 아니다. 분명히, 기술적 변화는 생활의 변화를 야기하고, 이 생활의 변화는 시간이 지날수록 계속된다는 것을 모두가 알고 있다. 다만, 이러한 변화의 폭이 크지 않거나, 기술의 영향력이 Leap 혹은 변혁이라고 할 수 있는 수준에 다다르지 못할 때가 많다는 것을 상기 하고, 실제로 이런 극단적 변화에 대해서 집중을 하는 경향성이 크다는 것이다.
7~80년대의 정보 혁명과 실제로 2010년도의 디바이스, ML 혁명 (일단 이렇게 명명했다)이 있다고 가정한다면, 실제로 7~80년대와 2010년도의 발전량을 직접적으로 비교를 하는 것 뿐만 아니라, 이것이 어떻게 세상을 변화시켰는가, 혹은 이것이 얼마나 문화나 사회에 충격을 주었는가를 평가해야한다고 보는 입장인 것이고, 이 때문에 한계 효용이라는 이야기가 나오는 것이다. 7~80년대의 경우 인공위성을 통한 실시간 TV 중계가 성공적으로 시행이 되었고, 미국인들은 신문이나 녹화된 테이프를 통해서 방송하는 TV 속보를 보는 것이 아닌 실시간으로 안방에서 전쟁을 보게 되었다. 걸프전이 그 대표적인 예인데, 미국인들은 지구 반대편에 있는 중동의 전쟁 상황을 실시간으로 볼 수 있었다. 이러한 변화는 지구촌이라는 단어나, 세계가 하나로 엮일 수 있다는 희망을 던져주었다. 컴퓨터 기술의 발전은 단순히 계산 기계의 발전이 아닌, 서로간을 연결할 수 있는 통신망의 구축이나, 이런 시스템에 기반한 공론장을 만든다는 것에 기반한다. 이러한 형태는 뉴스그룹이나 인트라넷 (이후에는 인터넷)의 형태로 발전하게 되었으며, 세계화를 가속했다는 점이다. 이제 사람들은 56Kbpps 모뎀을 이용한다면, 지구 반대편에서 친구를 만들고, 의견을 교환할 수도 있고, 체스를 둘 수도 있다. 이러한 변화는 이웃이나 남이라는 장벽을 부순 진전이라고 할 수 있다. 또한, 컴퓨터는 회계에서만 쓰인 것이 아닌, 공정관리나 시스템 관리에도 쓰이기 시작하였다. 공정의 최적 효율을 찾는 방법이나, 컴퓨터를 이용한 계산은 생산이라는 분야에 대해서 새로운 혁명을 일으켰다. 전사적 데이터 통합과 이를 통한 데이터 웨어하우스 구축은 경영에 있어서 일종의 혁신과 같았다. 전사적 데이터 통합과 이를 기반한 의사 결정 체계는 기존의 회사 시스템을 효율화 시켰으며, 의사 소통이나 데이터 취합의 문제를 대부분 해결해 주었다. 인트라넷의 도입은 사내 의사 소통 및 데이터 관리의 개선을 가져왔으며, 이메일은 협업을 개선하는 도구로써 사용이 되었다.
그러나, 2000년대를 보라. 광통신 케이블들이 해저를 지나가면서, 세계가 더 촘촘히 엮인다고는 하지만, 기존의 생산 방법론의 변화나, 더 나은 공론장은 존재하지 않는다. 뉴스그룹이나 메일그룹이 WWW 형태의 게시판으로 옮겨갔을 뿐이며, 개인의 저널리즘이라고 주장하는 블로그가 등장했지만, 기성 매체의 위력은 아직도 강력하다. 데이터의 수집 및 가공에 대한 방법론은 발전된 컴퓨터 성능에 힘입어 개선이 되었지만, 이는 1~2%p 정도의 개선만을 약속할 뿐이다. 전사적 정보시스템은 7~80년대처럼 도입하기 비싼 시스템은 아니고, 누구나 노트북을 한 대씩 들고 다니면서 작업을 하지만, 사람들의 대부분은 리모트나 원격 근무가 아닌 출근을 한다. 아직도 사람들은 토크빌이나 하버마스의 주박을 벗어나지 못하고 있으며, 공론장은 카페에서 인터넷으로 옮겨간 것 뿐이다.
한계 효용적으로 봤을 때, ML이나 최신 컴퓨터 기술들이 사람들에게 주는 효용이 무엇인가에 대해서 궁금한 것들이 많은 것이다. 다품종 소량 생산이나, JIT 같은 헛소리들은 이미 다 작살이 난지 오래고, 사람들은 아직도 7~80년대의 질서 혹은 방향성에 의존해서 산다. 뉴스를 종이로 보는게 아니라 아이패드나 스마트폰으로 볼 수는 있어도, 그것이 저널리즘을 바꾸지는 않았다. 광통신이 세상을 엮었다고 하지만, 그 엮인 세상이 없었던 것은 아니다. 전신이나 팩스로도 시스템은 굴러갔으며, 그것이 좀 더 빠르게 굴러가고 변화한다는 것을 의미한다. 인터넷은 세상을 평등하게 연결한 것처럼 보이지만, 법적, 제도적, 문화적 차이는 개선이 되지 않는다. 기술은 모두에게 영화를 볼 수 있도록 스트리밍 사이트들을 공급하지만, 그것이 할리우드의 파괴를 의미하지 않는다. 많은 사람들은 미국산 할리우드 영화를 보며, 독립 영화들은 아직도 힘들어하고, 상업성에 쫒기고 있다. 그렇다면 세상이 변화한 것은 무엇인가? 대량의 중앙 집중식 웨어하우스를 통해서 2일 배송을 하는 아마존? MBA에서 C를 받은 아이디어로 창업한 DHL은 웨어하우스 개념을 처음으로 만들고, 이를 통해서 비행기를 통한 특급 배송을 성공적으로 만들어냈다. 아마존은 개선인가? 아니면 재적용인가?
이에 대한 반박은 존재하는가?
2010년도를 기점으로 여러 키워드들이 떠오르고 있긴하다. 한국에서는 4차 산업혁명이라는 얼척없는 이야기를 하지만, 정보화 혁명의 연장 선상으로 봐야하지 않을까싶다. 어쨌든, ML은 효율적으로 발전하였고, 이제 7~80년대에서는 생각도 하지 못한 형태의 영상처리들을 하기 시작하였다. 실시간으로 사람들을 구분해내고, 물건들을 분류하고, 그리고 자율 주행을 시도할만한 수준까지 갔다. 광통신망과 무선통신망의 확장은 제한된 계층들만 사용하던 시스템을 대중에게 개방을 하였고, 누구나 스마트폰 한 대로 게임뿐만 아니라 이를 이용한 서비들을 쓰기 시작했다. 거의 모든 일들은 전자화 되어가고 있다. 항공권 예약부터, 건물 임대까지 많은 것들은 스마트폰과 컴퓨터를 통해서 이용된다. 컴퓨터가 없는 삶으로 돌아가기는 힘들며, 대부분 이런 시스템 뒤에는 ML과 거대한 데이터 웨어하우스들이 놓여있다. 사용자들의 데이터는 분석되고 분류되어, 타겟 광고에 사용되고, 추천에 사용된다. 사람들은 단위 시간당 더 많은 일들을 할 수 있게 되었다. 더 이상 영화 잡지를 뒤적이지 않아도, 스트리밍 사이트에서 추천 받은 영화들을 골라서 보면 되고, 신문을 사들 필요가 없이 인터넷 커뮤니티들을 돌아다니고, 네이버 뉴스란을 뒤지면 된다. 기업적인 측면에서는 다양한 물류나 공정 개선들을 겪고 있다. 스마트 팩토리를 통해서 실시간으로 재고 확인이나 물류 관리는 기본적으로 하고, 로봇이나 기계의 수명 또한 예측해서 공장 가동률을 최대한 끌어 올릴 수 있을 것이다. 모든 물건들은 트랙킹 번호로 추적이 되며, 생산부터 통관, 국내 배송까지 모든 것들은 전자동화 되었다.
사실 이런 주장을 별로 좋아하지 않는 쪽이라서 글을 더 쓰지를 못 하겠는데, 실제로 여기서 얻는 질문들은 대부분 비슷할 것이다. 그렇다면, 세상이 변한다는 것을 어떤 것을 의미하며, 일주일 배송이 걸리던 것이 하루 걸린다는 것이 무엇인가라는 것이다. 그리고 그것이, 나의 삶을 행복하게 해주는가에 대한 질문을 할 수 밖에 없다. 사실, 나는 국내외 기업에서 혁신 사례로 들고 나왔던 것 중에서 중개업이나 공정 개선을 제외한 형태의 비즈니스로 IT 관련 산업을 하는 걸 본 적이 없다. 심지어 저널리즘까지도 중개업을 하려는 미친X들의 온상인데, 사실 IT라는 게 뭘 의미하는지 잘 모르겠다.
마켓컬리와 쿠팡이 당일 배송으로 세상을 바꾸었는가? 사실 옆에 편의점이나 마트 가면 살 수 있는 물건들이 대부분인데? 이 기술 뒤에는 사용자 추천 시스템과 물류 관리 시스템, 배송 추적 시스템, 수요 예측, 제품 QC, 대체재 찾기 등등이 있을 것이다. 이게 다 전산화 되었고, 누군가가 대규모 데이터 웨어하우스에 접근해서 ML 모델 수정하면서 계속 돌아가고 있는 것이다. 이런 시스템의 도입으로 사람들은 에어비앤비나, 우버나, 타다나, 넷플릭스나 뭐 사실 대부분 비슷한 형태를 지니는 중개 서비스를 이용하게 된다. IT 기술로 데이터 처리와 추천, 최적화에 비교 우위를 두고, 이를 이용하여 독점적 위치를 차지한다. 일종의 플랫폼을 구축하고, 규모의 경제를 달성한다. 아마존의 1%p 공정 개선은 수 억 달러를 절약한다. 이 앞에서 5~6%p의 공정 개선 이런건 타 기업이나 경쟁사나 하는 것이고 실질적으로 변하는 건 없다고 볼 정도로 미미한 개선이 될 뿐이다. 이 때문에 한계 효용에 대해서 이야기를 하는 것이다. 실제로 IT가 개선 해주었던 것들은 정보 혁명이라고 불리우던 70년대, 80년대, 90년대가 지니고 있는 특색의 연장선상에 불과하다. 더 나은 방식으로 데이터를 처리하거나 제공하여 이를 이용하여 사용성을 개선하고, 공정을 개선하는 것. 그것이 디지털화가 갖는 장점이나 최종 목표이다.
이런 면에서 IT가 세상을 바꾼다는 소리를 하는걸 별로 안 좋아한다. 도대체 무엇을 바꾸는가? 무엇을 바꿔주는가? 배달의 민족이 바꾼 것은 무엇인가. 전단지에서 모바일 전단지로 바뀐 것일 뿐 실제로 바뀐 것은 존재하지 않는다. 거기다가 모바일 전단지는 전단지 갯수가 아니라 매출의 n%를 요구한다. 그것이 상생인것인가? 효율화인가? 아님 무엇인가?
이는 새로운 비즈니스가 아니다. 대부분 경영을 배우다보면 알게되는 플랫폼이나 중개자 비즈니스의 역할이고, 데이터를 통한 장사일 뿐이다. 뭐 거기서 뭐가 변하겠는가. 개선은 되겠지. 근데 그게 인류 처음으로 인공위성을 발사하거나, 인류 처음으로 화상통화를 하거나 그런 것에 비견할 만한 무언가는 되지 않는다는 것이다.
'일상생활 > 끄적끄적' 카테고리의 다른 글
2019년 회고 (0) | 2019.12.30 |
---|---|
뻘글이 빵하고 터질 때 (0) | 2019.11.04 |
블로그의 전체적인 기조를 바꿨습니다. (0) | 2019.08.24 |
경영학 허투로 배운건 아니더라 (0) | 2019.06.14 |
그래서 무엇을 원했니 (0) | 2018.09.11 |
좋은 글이란 (0) | 2018.05.18 |
청와대 국민청원과 KISS (0) | 2018.02.23 |
Comments
1. 광기야말로 나라는 존재를 제대로 잘 정의하는 단어라는 생각이 종종든다. 미쳐있지 않고서야 이런 일을 왜 하고, 이런 일을 하지 않을 수만 있는가라는 걸 잘 표현하는데, 사실 이런 것 덕분에 캐미라고 하는 게 잘 맞는 사람과 안 맞는 사람들이 극단적으로 갈리는 경향이 크다. 뭐 여튼, 이런 성격 덕분에 좋은 사람들을 만날 수 있었고, 좋은 일들이 많이 있었으니 그렇지, 상당히 극단적인 모양새로 삶을 살았던건 사실이다.
2. 뭐, 그래도 운이라는게 많이 있어서, 대부분 밤새서 노력을 하거나 타이밍 잘 맞춰서 들어가면 대부분 일은 잘 풀리는 것도 지금까지의 삶에 큰 영향을 미친거 같다. 뭐, 99번 실패를 해도 1번 정도는 성공을 했고, 이게 대부분 한 건 한 건이 큰 건수라서 대부분 실패를 만회했던 것도 있고, 역시 성격이 공격적이긴 해도 보수적으로 판을 짜고 테스트를 여러번 하는 식으로 리스크 헷징을 해서 그런 것도 있다. 뭐, 그렇다고 하더라도, 거의 마지막에는 일단 될 때까지 막 던지다가 우연치 않게 맞거나, 한 방에 우연치 않게 성공하는 경우로 대부분 뭔가를 만회했던 기억이 많다. 뭐 이런 느낌을 설명하면 모든 감각이 "그래야만 할 것 같다"을 가리키고 있을 때가 종종 있다. 안개 속을 정처없이 떠돌다가 등대 불빛을 봤다는게 정확할 것이다.
3. 요번 건도 그렇다. 2017년도의 선택이, 2015년도의 선택이, 2011년도의 선택이... 그 외에도 무수히 많은 선택들이 우연치 않게 엮이면서 여기까지 왔다. 삶이라는게 참 오래 살아봐야할 일이라는 건 알지만, 에전의 나에게 종종 감사할 때가 많다. 생각지도 못한 부분에서 도움을 받고, 우연치 않게 그 자리에 그 사람이 있는 일들을 보면서, 참 나도 인복과 운이 많은 사람이라고 느낀다.
4. 다음 운은 어디서 올지 궁금하다. :)
Comments
1. 번역을 할 일이 생겼다. 하나는 자의 반 타의 반으로 들어가게 된 번역이고, 하나는 솔직히 뚜껑이 열려서 번역을 시작을 하게 된 케이스이다. 뭐, 그러나 저러나 번역을 원해서 해 본 적은 그렇게 많이 없는 것 같다. 정확히 말하자면, 번역은 대부분 읽기가 너무 불편하거나, 너무 거지 같이 했거나, 아니면 너무 오래전에 했기에 다시 할 필요가 있는 것들을 찾게 되고, 필요에 따라서 기계적으로 한 경우가 많은 것이다.
2. 번역 관련 문제를 생각하다가, 수능 국어 문제 25번에 대한 해석으로 뉴스 기사가 나온 것이 퍼뜩 생각이 났다. 1타 강사가 잘못된 해석으로 풀이를 가르쳤고, 이에 따라 많은 (?) 학생들이 그대로 문제를 풀어서 틀렸다는 이야기인데, 사실 이 기사를 보면서 수능 국어가 변별력을 갖고 있는지, 그 전에 글에 대한 해석이라는 게 명료하게 하나로 정의 될 수 있는지에 대한 고민이 먼저 들었었다. 실제로, 문학 지문들을 다 드러내고, 비문학만 남겨놓고 시험을 보는 것이 낫겠다는 주장을 하는 모교 교수(님)도 있었고, (무려 수능검토위원장이다 -_-, PSAT도 그 분의 손을 거쳤으니 뭐 이해를 충분히 한다.) 사실 많은 부분에서 문학에서 해석이라는 부분에 대해서 만큼은, 특히 고전 시가에 대해서 만큼은 해석이 옳고 그름에 대해서 의문을 품지 않을 수 없는 것이다.
일반적으로, 수능 문제가 갖고 있는 문제는 출제자의 의도와 글쓴이의 의도가 상이하다는 것이고, 이에 따라서 수험생(혹은 풀이자)는 이 두 가지 간극을 메꿔가면서 논리적인 추론을 해야한다는 부분이다. 일반적으로, EBS 연계 이전의 수능들에서 자주 나타나는 현상이기도 하였는데, 문제들 하나하나가 대부분 논리적 정합성을 묻는 형태의 문제였던 걸로 기억을 한다. 하지만, EBS 연계 이후에는 지문을 이미 외우고 있거나, 이미 알고 있는 상태에서 이러한 (처음 보는 글에 대한) 논리적 추론 능력에 대한 검증은 무력화 된다. 그렇기에, 대부분 트리비얼하거나, 다른 지문과의 병행을 통해서 새로운 정보들에 대한 비교를 해야하는데, 이런 부분에 있어서 같은 계를 공유하지 않는 두 지문을 어거지로 끼워 맞추는 과정이 수반되게 된다.
아마도 25번 문제의 경우 그 지문만을 놓고 봤을 때에는 1타 강사의 해석이나 추론이 유효했으리라고 본다. 하지만, 다른 지문과 같이 곂쳐놓고 봤을 때에는 분명히 해석이 틀어질 것이고, 이를 이용해서 이런 지문을 외운 학생들을 내치려는 행동으로 보인다는 것이다. (아님, 뭐 영어 출제 오류처럼 대형 실수를 저질렀거나)
3. 여하튼, 글이라는 것은 짜증나는 존재이다. 글은 단순히 형식 논리로 환원될 수 없는 형태를 지니고 있는데, 이를 해결하기 위해서 다양한 형태의 도구들을 쓰거나, 아님 그냥 그것조차 포기하고 인간의 뇌라는 제일 원시적이자 근원적인 도구를 사용하여 해석과 해설을 달고, 그에 기반하여 글을 옮기고 다시 쓰는 것일 것이다.
번역이란 존재도 비슷하다. 테크니컬 라이팅에 대한 번역을 주로 맡고 있지만, 글을 그대로 옮기는 것이 아니라는 점, 엄밀성과 정밀성이라는 부분에서는 양보를 못 하지만, 비유나 백그라운드 지식, 혹은 그와 연관된 기술에 대한 사전 지식에 대한 독자의 수준 등을 고민한다면, 번역되어서 나오는 글은 원문과는 상당히 상이한 형태가 될 것이다.
그렇기에, 문장을 쪼개거나, 다시 재 배열하거나, 뜻을 휘발 시키거나, 뜻을 고착화 시키는 작업들이 요구되어진다. 사실 이 이야기의 발단은 번역 중인 문서에서 typically와 generally가 병용되고 있는 문서에서 둘 다 "일반적으로"라는 단어로 해석을 하는 상황을 봤을 때, 이것이 기술 문서이기에 둘 다 일반적으로라는 단어를 써서 번역을 해도 무리가 없을 것이라고 판단했다는 것은 존중을 하지만, "전형적으로"와 "보편적으로" 두 단어를 구분해야할 수도 있다는 점을 고려하여, 어조를 어떻게 선택하느냐로부터 시작이 되었다. 미묘한 차이이고, 실제로 문서를 썼던 당사자는 이 두 단어의 차이를 자각하지 못한 채 글을 썼거나, 혼용을 했을 가능성을 배제할 수 없다는 것 조차도 실제로 이 번역이 갖고 있는 문제이자, 한국어 번역이 힘든 일이기도 하다.
4. 그런 김에 테크니컬 라이팅과 번역 관련된 책들을 몇 권 구매하여 읽고 있는데, 사실 글을 명료하게 쓴다는 것이 무엇인지 아직도 모르겠다. 어렸을 적에는 그냥 바로바로 튀어나왔던 말들이 요즘은 좀 다시 한 번 생각하게 되는데, 어렸을 때보다 배운 것도 많아지고 더 겸손해진 것도 있지만, 역시 점점 잊어버린다는 것이 제일 큰 문제이다. 이미 번역을 다 해 놓고 생각해보니 call을 콜이라고 해석한다기 보단 호출이라고 해석해야했을 껄이라는 후회를 한다던지, 몇몇 일본식 한자(e.g. 매개변수) 같은 단어 대신에 파라미터라고 그냥 번역을 했어야하는지, method라는 단어의 번역이나 entity라는 단어의 번역을 하지 못 하겠어서 끙끙 머리를 싸 매고 있다던지, 이러한 자잘한 문제들에 엮이면서, 시간을 잡아먹는 일이 자주 일어나고 있는 것이다.
5. 「완전한 번역에서 완전한 언어로」라는 책을 읽고 있는데, 사실 나는 정영목 번역가가 누구인지를 이 책을 읽기 전까지는 몰랐다. 뭐 책을 많이 읽는다는 사람이 이런 이야기를 하다니 어처구니가 없지만, 사실 번역가 찾아서 누가 번역했는지 따져 보는 경우는 그렇게 많지 않고, 해외에서 출간된 책 순위권 보면서 언제 한국에 번역되나냐, 출판사 -결국 번역가랑 간접적인 상관관계를 만드는- 를 보고 책을 산 적이 더 많다는 것이다. 뭐 여튼, 그런 실토는 그만하고, 다음의 구절이 와 닿았다.
책을 받으면 빠르게 읽으면서 할만한지 살피고 답을 드립니다. 그리고 번역을 시작하죠. 전 둔한 편이라 읽어서는 감이 안 오고 손으로 옮겨봐야 알겠더라고요. 보통은 절반가량 진도가 나가면 궤도에 오릅니다.
궤도에 오른다 하면?
배우로 치면 대사가 입에 붙는 겨죠. 저자의 문체가 내 몸에 붙어 대충 이런 거구나하는 느낌이 오죠. 처음에는 불분명했던 대목이 뒤쪽을 마저 읽으면서 비로소 이해되는 경우도 많아요. 아, 이 사람은 말을 이런 식으로 하는 사람이구나 깨닫는 거죠. 그렇게 한 차례 ㅂ전역하고 처음부터 다시 보며 습득한 스타일대로 다듬어요. 그러니까 앞쪽 절반을 퇴고하는 시간이 더 오래 걸립니다. 제 경우는 초고 만드는 시간과 다듬는 시간이 얼추 비슷해요.
정말 공감이 많이 갔던 부분인데, 뭐 그건 둘째치고, 요즘 들어서 다시 드는 생각은 이전의 내가 정말로 빠르게 지식을 습득하고 확장할 수 있었던 것은 내가 다양한 일을 하였기 때문이 아닌가 싶다. 책이나 여러 취미생활을 갖고 있었던 것은 역진적으로 다시 나의 취향과 성향을 만들어 냈고, 이에 따라 내가 무엇에 호오가 있는지, 그리고 그 호오를 통해 무언가를 창조해 내는 일을 해내고 있다는 점이다.
6. 예전 글에도 썼지만 (귀찮아서 링크는 안 건다), 번역은 글을 글로 옮기는 게 아니라 그 글을 갓 잡은 활어처럼 생생하게 새롭게 만드는 일이라는 것이다. 뭐 벌써 7~8년전 과외 선생님의 그 말씀이었지만, 나는 아직도 그 과외 선생님의 그 수업에서 배운것을 잊지 못한다. 언어에 대한 접근이나, 글에 대한 접근을 배울 수 있었고, 사실 약 3년간의 통번역 연습은 대학교에 와서도 잘 써먹고, 그리고 대학교 수업보다 더 값진 것들의 연속이었으리라 생각하니. 뭐 지금 이렇게 번역을 하면서 훈수를 두고, 기여를 할 수 있다는 부분은 뭐 거의 하기 힘든 일 아닌가? 그렇지 않나 싶다.
7. 그렇기에 번역을 다시 하기 시작했다. 뭐, 블록체인 관련 글들이지만, 최대한 많이 번역 할 수록, 한국의 생태계가 변하지 않을까 하는 헛된 희망을 갖고 글을 써 내려간다.
'일상생활 > 하루하루' 카테고리의 다른 글
2020.09.13 기술에 관하여 (0) | 2020.09.13 |
---|---|
2020.07.26 (2) | 2020.07.26 |
2020.04.30 (0) | 2020.05.01 |
2019.11.09 (0) | 2019.11.09 |
2019.10.22 인터넷 안에 사람있어요! (0) | 2019.10.22 |
2019.10.03 (0) | 2019.10.03 |
2019.08.17 (0) | 2019.08.17 |
Comments
그냥 요즘 삘 받아서 글을 막 쓰게 되는데, 이럴 때 열심히 글을 써 두는게 제일 좋지 않나 싶다. 일단 블록체인 기술에 대해서 이야기를 해야하나 싶은게, 실제로 다들 블록체인 기술이 뭔지에 대해서 이야기를 하는 사람이 없기 때문이다. 아니 솔직히, 블록체인 관련 글들은 쓰는데 회사 솔루션을 끼워서 이야기를 하거나, 아님 얕은 지식의 이야기를 하거나, 너무 암호학 위주로 이야기를 하거나, 아님 뭐 내 마음에 안 들게 글을 써서 그냥 블록체인에 대한 이야기를 처음부터 하려고 한다. 하지만, 이 글은 언제라도 사라질 수 있으며, 그 후 회사 블로그에 올라갈 (...) 수 있다는 부분은 양해 부탁드리는 부분이며, 솔직히 저희 회사도 먹고 살아야한다는 점을 이야기 하고 싶다. 저희 회사 기술력 보고 시리즈A 투자 좀 해 주세요. 제발.
뭐, 여튼 블록체인을 언제나 쉽게 이야기를 하면,
1. 공인인증서(비대칭키)로 거래 내역을 사이닝해서
2. 그 트랜젝션(거래 내역)을 전파를 하고,
3. 전파 받은 기록들을 해쉬 링크드 리스트에 기록을 해서
4. 그 최신 블록(혹은 노드)을 P2P로 토렌트 비슷하게 공유를 하면,
기초적인 블록체인이 나온다.
5. 거기에 PDA 같은 녀석을 추가로 넣고 스택 기반으로 VM을 만들면 비트코인이 되고
6. 인스트럭션 셋을 만들어서 인스트럭션 단위로 Gas라는 사용료를 물면 이더리움이 된다
7. 그리고 블록을 생성할 때마다 보상을 줘야한다. (경제학적 이유)
8. 블록 생성 방식에 대한 합의가 필요하다.
좀 더 복잡한 이야기를 하자면,
9. 이런 VM에 박히는 스크립트의 용량을 최소화하는 것이 목표인 상황,
10. 블록 생성 방식을 바꾸어 최소한의 시간으로 빠르게 컨펌하는 것이 목표인 상황
11. 블록체인 네트워크가 갖고 있는 한계 및 해결 방식
12. Fee를 해결하기 위한 방법
13. 기타 등등의 각종 이슈들
이 있으며, 이 부분에 대해서는 추가적인 포스팅을 하도록 할 것 같다.
라고 말을 한다. 사실 공인인증서라고는 말하지만 사실은 사설인증서이며, 개인이 직접 생성하는 비대칭키에 의존한다. (그러니 막 지갑 주소가 여러개 생성 될 수 있는 것이다!)
사실 많은 질문들, 특히 블록체인 노드와 월렛에 대한 구분을 못 하거나, 콜드 월렛과 핫 월렛이라는 요상한 단어를 쓰는 친구들을 볼 때마다 복장이 터지는 이유는 콜드와 핫은 의미도 없을 뿐더러, 콜드나 핫이나 둘 다 실제로 작동되는 원리는 비슷하기 때문이다. 아니 비슷하다고? 비슷하다. 이제 그 이야기를 길고 길게 이야기를 할 것이다.
일단, 큰 꼭지는 1번과 3번은 인터넷 없이도 처리가 되고, 2번과 4번은 네트워크랑 관계가 있다는 것을 쉽게 눈치를 챌 수 있을 것이다. 5번과 6번은 이제 심플한 컴퓨터구조론 혹은 오토마타 이야기라는 걸 이해를 바로 하면 컴퓨터 공학 정규 수업을 열심히 들었다는 것이다. 뭐 일단 이야기를 진행해보자. 1번 부터 이야기를 해보자.
1번 : 비대칭키로 거래내역의 사이닝을 한다.
비대칭키는 무엇인가? 일반적으로 프로그래머라면, 알 수 있는 부분은 "공인인증서에서 사용된다." 혹은 "SSL 같은 곳에서 사용된다." 정도일 것이다. 좀 더 궁금증을 갖고 있다면, RSA 정도를 알 것이고, 일반적으로 ssh 통신을 할 때 pem 키라고 부르는 녀석이 RSA (혹은 딴 비대칭키) 비밀키 및 공개키를 박아놓은 녀석이라는 것을 알 수 있다. 이걸 이용해서 비밀키로 사이닝을 하고, 공개키로 그것을 확인하는 (사실 반대도 가능하다) 작업을 할 수 있다. 이는 중간에 공격자가 공개키로 암호화된 메세지를 가로채도 비밀키가 없다면 해독을 못하는 상황을 만들어 낼 수 있다는 것을 의미한다. 또한 비밀키로 사이닝한 메세지를 공개키와 같이 공개를 하여, 비밀키를 갖고 있는 사람이 공개키로 이러한 메세지를 썼다는 것을 해독 시킬 수 있을 것이다. 암호화폐에서 이것이 쓰이는 이유는 명료하다. 사이닝을 통해서 주인을 식별할 수 있다는 것 때문이고, 이를 암호화폐의 전송에 사용하게 된다.
제일 간단하게 생각 할 수 있는 예는 다음과 같을 것이다. 일단 Alice는 10 Bengi 코인을 갖고 있고, 나머지는 모두 0 Bengi 코인을 갖고 있다고 가정하자. 그리고 Alice는 다음과 같은 메세지를 써서 서명을 한다.
{
msg : "Alice는 Bob에게 10 Bengi Coin을 보낸다.",
signature : msg의 서명 (Alice의 비밀키로 서명함)
}
이 메세지를 받은 사람은 Alice가 비밀키를 사용하여 Bob에게 10 Bengi Coin을 보냈다는 것을 증명할 수 있다. msg를 signature(서명)을 Alice의 공개키로 해독해 msg가 나오면, Alice가 보낸 것이 맞기 때문이다. 그렇다면, 이제 Bob은 10 Bengi 코인이 있는 것이고, 5 Bengi Coin을 Carol에게 보내고 싶다. 그러면 이제 위의 모델에서, Bob은 Carol에게 5 Bengi 코인을 보내고 싶다는 메세지를 작성해 서명해서 넘겨주면 된다! 그러면 Bob이 주인인게 확실하니! 그러면 이제 Bob은 5 Bengi 코인을 갖고 있고, Carol은 5 Bengi 코인을 갖고 있고, Alice는 0 Bengi 코인을 갖고 있을 것이다.
하지만, 여기서 드는 의문은 이제 이것이다. msg 내용이 좀 그시기하다는 것이다. 다음과 같이 바꿔보자
{
from : "Alice",
to : "Bob",
amount : 10,
signature : msg의 서명 (Alice의 비밀키로 서명함),
}
그 다음으로 드는 생각은 Alice의 Signature를 어떻게 검증하냐는 것이다. Alice의 공개키가 등록된 장부가 있거나 그에 준하는 무언가가 있어야한다. 이럴바에는 그냥 from에 Alice의 공개키를 넣는것이 어떤가? 그러면 좀 더 쉽게 전송을 할 수 있을 것이다.
{
from : "Alice's Publickey",
to : "Bob",
amount : 10,
signature : msg의 서명 (Alice의 비밀키로 서명함),
}
이제 메세지는 자가 증명을 할 수 있다. form에서 Alice의 공개키를 찾아서 signature가 맞는지 알 수 있다. 근데, 이러면 Bob의 공개키와 Bob이 어떻게 연결되어있는지를 증명할 수 없다. 즉, to에도 Bob의 공개키를 넣으면 편해질 것이다. Bob은 여기서 비밀키를 이용할 일이 없지만, Bob의 신원증명에는 사용되니 공개키를 넣는게 좋을 것이다.
{
form : "Alice's Public key",
to : "Bob's Public key",
amount : 10,
signature : msg의 서명 (Alice의 비밀키로 서명함),
}
(별로 알 필요는 없음) 비대칭키 암호화를 좀만 안다면 msg 길이 만큼 signature의 길이가 길어진다는 점이 문제라는 걸 알 수 있다. 위의 메세지를 해슁을 하고, 해슁된 데이터 값 (해식값)에 서명을 해도 동일한 효력이 나올 것이다. 그렇게 바꿔보자.
{
form : "Alice's Public key",
to : "Bob's Public key",
amount : 10,
tx_hash : msg의 hash 값,
signature : tx_hash의 서명 (Alice의 비밀키로 서명함),
}
이제 좀 이쁜 모습이 되었다. 이제 이것을 이용하여 전송 Alice는 Bob에게 전송을 할 수 있다. Bob의 공개키는 이 트랜젝션이 블록체인 상에 허가가 나면 10 Bengi Coin을 소유하게 되는 것이고, 이에 따라서 10 Bengi Coin 이하의 값을 전송할 수 있을 것이다. 기본적인 전송 시스템을 구축할 수 있는 것이다. Bob에게 수신된 총량과 발신한 총량을 빼면 Bob의 잔고가 나올 것이다. 즉, 이걸 주기적으로 기록만 한다면 블록체인 상에서 거래를 할 수 있다! 그러니, 이런 전송이 발생할 때마다 Alice의 잔고에서 금액을 깍고, Bob의 잔고에 그 만큼의 금액을 추가하면 된다. 만약 Alice가 잔고가 없는 상황에서 돈을 보내려고 한다면 블록체인 네트워크 상에서 거부를 할 것이다. (잔고 금액을 추적하고 있으니, 하지만 동시에 각각 Bob과 Carol에게 7 Coin씩 보낸다는 트랜젝션을 생성하는 공격 같은 걸 하거나 0 Bengi Coin을 무한히 보내는 공격을 한다면 어떨까? 이후에 후술한다.)
사실, 암호화폐에서 대표적인 모델은 2가지가 있는데, UTXO 모델과 Account 모델이다. UTXO는 비트코인이 사용하는 모델이고, Account는 이더리움이 사용하는 모델이다. Account 모델의 기초를 위에서 이미 설명을 했으니 넘어가도록 하고, UTXO 모델은 복식 부기를 사용하는 모델이다. 상당히 복잡하다고 할 수 있는데 상당히 직관적이니 이야기를 한 번 하긴 해야할 부분이다. 이 이야기는 나중에 공격에 대한 저항성 이야기에 대해서 아주 중요하게 다룰 것이다.
Account 모델의 단점은 공개키-잔고 쌍을 어딘가에 기록하고 계속 추적해야한다는 점이다. 이 방식은 어쨌든 공개키 쌍이 늘어날 수록 데이터베이스 크기가 늘어난다는 점이다. 이 방법 대신에 UTXO는 복식 부기를 사용하여 이 부분을 해결한다. 복식부기 자체가 잔고 증명이 되고, 복식부기를 연속적으로 만들어냄으로써 잔고의 흐름을 추적하는 방식을 사용한다.
간단하게 1 Input, 2 Output 트랜젝션을 보자.
{
from : [
tx1_hash, // to Alice 12
],
to : {
Alice Publick Key : 2,
Bob Public Key : 10
},
tx_hash : tx_new_hash,
signature : alice signature of tx1_hash,
}
Alice의 12 Bengi Coin을 받는 트랜젝션을 찾아서, Alice에게 2를 보내고, Bob에게 10을 보내는 새로운 트랜젝션을 만든다. 이렇게 되면 Alice는 tx1 더 이상 사용 될 수 없어지고, tx_new가 이제 Alice와 Bob의 새로운 잔고 증명 Tx가 된다. Alice와 Bob은 이 트랜젝션 해쉬를 갖고 새로운 거래를 열 수 있다. 여튼 여러개의 Alice에게 Bengi Coin을 보내는 tx들을 모아서, from에 넣고, to에 받을 사람을 적어서 트랜젝션을 생성하면 되는 구조이며, 이를 통해서 검증자는 전체 잔고의 추적을 할 필요가 없어졌다. 그냥, tx1_hash의 시그니처와 Alice의 공개키와 tx1_hash 세 개를 대조하여 맞는 사용자인지 확인을 하는 과정이 있는 것 뿐이다. 이를 P2PK 방식이라고도 불리는데, 바로 공개키를 사용하지는 않고 Address를 사용하나 전체적인 기조는 같다. 그렇다면 2개의 인풋과 3개의 아웃풋이 있을 경우 어떻게 하는가? 아웃풋은 쉽겠는데, 2개의 인풋이 Alice의 서로 다른 공개키로 보내는 것이라면 약간 골이 아플 것이다. 그래서 실제로 signature는 다음과 같은 형태를 띄고 있다.
{
from : {
tx1_hash: alice signature of tx1_hash, // to Alice 10
tx2_hash: alice signature of tx2_hash, // to Alice 5
},
to : {
Alice Publick Key : 2,
Bob Public Key : 10,
Carol Public Key : 3
},
tx_hash : tx_new_hash,
}
어려운가? 그렇다면 쉽게 설명하면, 잔돈 모델로 생각하면 편하다. Alice가 1000원짜리 지폐랑 500원짜리 동전 합쳐서 1500원을 넘겨주고, 200원을 거슬러 받고, 1000원을 BoB에게 주고, 300원을 Carol에게 준 모양새가 된다.이런식으로 잔돈들을 합쳐서 큰 돈을 만들고, 큰 돈을 다시 쪼개서 분배를 하는 과정을 거치게 된다. 그래서 비트코인 트랜젝션을 보면 일반적으로 1~3개의 인풋에 2개 정도의 아웃풋이 기본적으로 있는 것이다.
2번 트랜젝션의 내역을 전파한다.
이렇게 만들어진 트랜젝션을 이쁘게 팩킹하여, 연결된 노드나 자기 자신의 노드나 여튼 블록체인 데이터를 받을 수 있는 무언가에 전송을 해 주면, 노드들끼리 이 신규 트랜젝션을 공유를 하여 네트워크에 동기화를 시켜준다. 그리고, 블록 생성자가 이 트랜젝션 데이터를 받아서 블록에 산입을 하도록 한다. 그냥 토렌트나 P2P 서비스를 생각하면 편하다. 데이터를 동기화하는 과정인 것이다. 여기서 콜드월렛 핫 월렛이 결정되는데, 블록체인 노드에 바로 연결되어서 쏘면 핫 월렛, 연결이 되어있지 않고 중간 전달자가 대신 전달해주면 콜드월렛이나, 실제로 콜드나 핫이나 트랜젝션 생성을 하는 건 변함이 없다는 것을 알 수 있다. 솔직히 네트워크에 안 붙고도 트랜젝션 생성할 방법 많은 관계로 핫이나 콜드나 별 의미가 없다. 특히 같은 비밀키를 여러군데에 저장해서 쓰는 경우라면 더더욱.
3번 해쉬드 링크드 리스트에 기록을 한다
블록체인이라는 게 여기서부터 중요해지는데, 해쉬드 링크드 리스트를 사용한다는 점과, 사실은 링크드 리스트가 아니라 DAG라는 점이다. 링크드 리스트는 트리나 그래프 형태로 만들어지면 안 되는데, 블록체인은 그렇게 되는 경우가 종종 있기에 엄밀히 말하면 링크드 리스트의 속성을 충족하지는 않는다. 그래서 더 느슨한 자료구조인 DAG의 특징을 충족하는 것인데, 이 부분에 대해서 이야기를 해보자.
이제 두번째 장벽인 해쉬 함수에 대해서 이야기를 하려고 한다. 해쉬란 무엇인가? 비가역적인 형태로 무언가를 생성시키는 함수이다. 해쉬 함수의 특징은, 같은 값이 들어가면 같은 값이 나와야하고, 두 다른 값의 결과는 같지 않아야하며, 비슷한 값의 결과는 충분히 달라야한다, 그리고 제일 중요한것은 원본의 값을 유추할 수 없어야한다는 점이다. 간단히 설명한 것이지만, 상당히 구현 난이도는 높은 편이고, 실제로 해쉬 함수가 깨진다 (취약점이 나온다) 라는 부분들이 저 전제를 못 지키기 때문이다. 두 다른 값에서 같은 결과값이 나오는 경우를 해시 콜리전 (충돌)이라고 불리고, 유추 가능성에 대해서는 제1역상 공격이라고 한다(제2는 해쉬 콜리전이다) 이를 실제로 염두를 해야하는 점은 무엇인가? 블록체인은 데이터의 위변조를 검증하는데 해쉬를 쓰고, 이 덕분에 해쉬가 덕지덕지 발라져 있다는 점이다.
해쉬 링크드 리스트는 다음과 같은 특징을 갖고 있다. 트랜젝션들을 넣은 블록을 만들고, 해쉬를 만든다. 아니... 정확히는 앞선 블록에 대한 정보를 담게 된다. 다음과 같은 구조를 띄게 되는데 일단 확인해 보자.
current_block = {
previous_block_hash : previous_block_hash,
tx_data : [tx1_data, tx2_data, tx3_data, tx4_data, ... ],
txs_hash : SHA3(tx_data),
}
new_block = {
previous_block_hash : SHA3(current_block),
tx_data : [tx5_data, tx6_data, tx7_data, ... ],
txs_hash : SHA3(tx_data),
}
간단해 보이지 않는가? 사실 이 데이터는 좀 말이 안 된다는 걸 나중에 이야기를 하겠지만, 이런식으로 데이터를 박아넣는다. 정확히는 tx_data는 머클트리를 사용하여 저장을 하고, 블록과 블록 헤더가 분리가 되어있는 형태이지만, 일단 간단한 형태로 설명을 하기 위해서는 이것이 편하리라 생각하여 이렇게 적는다. new_block은 current_block의 hash 값을 가리킨다. 이를 이용하여, 블록체인은 자신의 이전 블록 데이터를 찾아 넣을 수 있는데, 이 때문에 해시드 링크드 리스트라고 하는 것이다. 포인터 대신에 해시값을 사용하는 링크드 리스트인 것이다.
그리고 블록체인 클라이언트는 tx_data를 순회하면서 값들을 최신으로 업데이트를 하게 되는데, 이를 통하여 앞의 트랜젝션을 통한 전송 관련된 부분을 처리하게 된다.
4번 최신 블록을 P2P로 토렌트 비슷하게 공유를 한다.
자 이제 블록체인은 트랜젝션을 전파하듯이 전파를 하면.... 되나....? 될 것이다. 옆 사람이 새로운 블록을 만들어냈다는 걸 알기 전까지는 말이다. 실제로 블록의 경우 예측 가능한 정도로 생성되어야하며, 동시에 한 블록을 참조하는 여러 블록들이 생성되는 일은 지양해야한다. (그렇기에 DAG라는 표현을 한 것이다. 실제로는 일어나니) 이를 위해서, 블록체인 클라이언트들은 규칙을 공유한다.
첫째, PoW 방식의 생산. HashCow 같은 문제를 풀어서 해결하는 방식. Nonce 필드를 추가하고, 해쉬 값에 대해서 제약 조건을 걸어 특정 조건을 달성한 해쉬 값을 인정하는 방식이다. 일반적으로 해쉬 값에 앞에 0이 몇 자리 이상 붙어 있느냐로 제한을 두는 경우가 많다. 해쉬의 특성상 특정한 해쉬를 도출해 내는 건 상당히 힘든 일인데, 이를 이용한 트릭이다.
new_block = {
previous_block_hash : SHA3(current_block),
tx_data : [tx5_data, tx6_data, tx7_data, ... ],
txs_hash : SHA3(tx_data),
nonce : some_number
}
적절한 some_number를 넣게 된다면, 00000deadbeef..... 같은 해쉬를 얻을 수 있다. 각각 컴퓨터는 이 some_nubmer를 무작위 (혹은 순서대로) 대입하여 00000으로 시작하는 해쉬 값을 찾으면 되는 것이다. 이를 통해서 제일 먼저 0이 5개 (상황따라 난이도가 올라갈 수록 0의 갯수가 증가한다)인 some_number인 블록을 찾았다면, 이를 적합한 블록으로 인식하고 모두가 받아들이는 것이다.
아니, 이게 어떻게 보안을 유지시키냐고? 비트코인은 30분마다 블록이 생성되도록 해쉬 난이도를 조절(0의 갯수 조절)을 하는데, 총 컴퓨팅 파워로 30분 즈음에 적합한 블록을 찾아내도록 셋팅을 하는 것이다. 그것을 이용해서, 다른 유저가 (위변조한) 블록을 마구 생성하거나, 블록체인이 2개로 쪼개지거나 했을 때를 조절할 수 있다.
둘째, 제일 긴 체인을 선택한다. 제일 많은 컴퓨팅 파워가 소모된 체인이 제일 올바른 체인이라고 가정을 하는 것이다. 별다른 의미는 없지만 제일 효율적인 방식이긴 하다. 특히, 공격자가 다른 체인을 만드려고 해도, 전체 컴퓨팅 파워의 51% 이상을 장악하고 있지 않는 이상 제일 긴 체인을 택할 것이므로 공격자의 공격은 수포로 돌아가게 된다.
셋째, 깊이가 6 이상이 된 스플릿이 발견될 경우 롤백하지 않는다. 30분 단위의 블록 생성 시간을 감안하면 3시간 이상이 된 블록들은 적합한 것으로 간주하고, 신규 체인 (7번 전 블록부터 다른 해쉬 값을 갖는 더 적합한 블록들의 연속)을 받아들이지 않는다. 이렇게 함으로써 외부의 공격을 막는다.
이 두 가지를 지키는 블록들을 외부 노드로부터 받아들이면서, 블록체인의 전체 크기는 증가한다. 뭐 하지만 저런 시스템이 돌아가지만 실제로 블록 스플릿이 거하게 일어난 적도 있고 (6개 이상의 블록이 각각 생긴 두 체인으로 쪼개진 적이 있다.), 포크라는 방식으로 블록을 양분하는 방식이 있는 등 (비트코인 캐쉬, 비트코인 골드 등) 을 생각한다면, 실제로 완벽하게 안정적인 방식은 아니라는 것을 알 수 있다. 다만, 이러한 규칙을 통해서 주기적으로 블록을 생성하고, 확률적으로 동시에 블록을 생성하는 것을 막고, 충분히 네트워크에 전파될 시간을 잡아 블록체인의 신뢰성을 보장 시킬 수 있다.
자 그렇다면, 이제 노드는 어떻게 찾는 것인가? 일반적으로 P2P 클라이언트와 비슷하게 작동되나, 자기 자신이 Seeder이기도 하고, Tracker이기도 하다. 일반적으로 비트코인 클라이언트가 처음 시작된다면, 하드 코딩 된 DNS 주소에 쿼리를 날려 주변 노드들 정보를 얻고, 그것이 안 될 경우 하드 코딩 된 노드 주소에 연결을 시도한다 (참고로 최신 클라이언트에서는 폐기된 방법이다), 최종적으로 아무것도 없을 경우 UDP 브로드캐스팅을 쓰는 것으로 알고 있는데, 여기까지 가보지는 않아서 정확히 설명을 할 수는 없을 것이다. 여튼, 천하의 블록체인이 중앙화된 클라언트에 하드코딩된 주소를 의지한다니 재미있지 않은가? 이더리움도 비슷하게 bootstrap node 리스트를 따로 제공한다. 이에 대한 문제는 Tor 네트워크나 Tails가 갖고 있는 문제와 비슷한데, 일단 초반에 Tor나 Tails를 깔기 위해서 사이트에 접속하는 과정 자체가 그 사람의 신원을 노출 시킨다는데 있다. 즉, 아무리 익명성 클라이언트라고 하더라도 초반에 접속하게 되는 곳은 다 같으니 그 곳만 주기적으로 감시를 하면 된다는 문제점이 있는 것이다. 이 부분에 대한 해결 방법은 나중에 이야기하도록 하고, 이제 이렇게 접속을 하면 어떻게 되나 이야기를 하자.
이제 접속을 하게 되면, 제네시스 블록, 그리고 그 다음 블록, 그 다음 블록의 다음 블록을 쭉쭉 받아오게 된다. 블록 하나하나의 해쉬를 검증하고, 시그니처를 검증하면서 옳은 블록인지를 검증을 하면서 주변 노드들로부터 데이터를 받아오는 것이다. 그리고 어느 정도 동기화가 끝나면 Tip이라고 하는 끝 부분 (혹은 최신 블록을 받아와야하는 시점)에 도달하게 되고 이제 사용할 수 있는 상태가 된다. 왜냐하면, 모든 트랜젝션 데이터들을 다 받아서, 내 트랜젝션 데이터들의 집합을 다 찾아냈기 때문이다.
으악 너무 불편하고 시간이 걸린다고?!
그렇다면 SPV나 Light 모드로 빠르게 싱킹하는 방법이 있다. 이는 블록 전체 데이터를 받아오지 않거나, 거꾸로 (...) 받아오거나, 미리 몇 십 기가바이트 정도 되는 데이터를 P2P로 압축해서 받거나 하는 방식으로 진행된다. 이 방법에 대해서는 11장에서 이야기를 하도록 하자. 추가적인 꼭지들에 대해서 이제 이야기를 할 수 있을 정도로 내용이 진척된 거 같아서 기쁘다.
일단 1/2/3/4 장에서 진짜 기초적인 블록체인 클라이언트에 대해서 설명을 하였다. 설명이 충분하지 않다는 생각이 들지만, 일단 이 정도면 블록체인에 접목되는 암호학 기술에 대해서 약간이나마 이해를 할 수 있을 것이다. 여기까지 읽어줘서 감사하다.
'블록체인' 카테고리의 다른 글
화성에서 우리는 비트코인을 쓸 수 있을까? (0) | 2021.02.12 |
---|---|
DeFi 단상 (0) | 2020.11.22 |
블록체인이라는 이름의 지옥 (부제 : ML은 전기양이긴했냐) (2) | 2020.01.24 |
블록체인 거 쓸만하긴 해요? (3) | 2019.11.04 |
블록체인 + 스타트업 = ??? (0) | 2019.08.11 |
암호화폐 거래에 대한 단상 (0) | 2018.02.09 |
암호화폐는 화폐일 수 있는가? ② - RSMPAY를 바라보며 (0) | 2018.01.27 |
Comments
1. 글을 써야할 의지를 못 느낄 때가 많다. 사실 글을 써야할 이유 자체가 사라져가는 상황에서 장문의 글을 쓰는 능력을 계속 유지할 이유가 있는 것도 아니고, 점점 녹슬어가고 있는 것도 느껴지고 있는데, 뭐 이건 좀 노력하거나 다시 글을 쓰다보면 돌아올 일이라는 건 알지만, 역시 자전거를 오랜만에 타는 듯한 느낌이라서 별로 유쾌한 기분이 들지는 않는다. 뭐, 그런데 자전거보다는 요즘은 전동 킥보드가 대세 아닌가, 뭐 그러면 전동 킥보드 느낌으로 글을 써야하는 게 아닌가라는 생각도 종종 들긴한다. 단문화된 글들이나 짧고 명료한 글들을 더 선호한다는 이야기인데, 그렇다면 그것에 최종적으로 남는 것은 무엇인가? 분노나 증오나, 호 혹은 오 일 것이다. 뭐 호오 보다는 호불호를 많이 쓰니 불호라고 해야하나? 어쩄든, 감정만 남은 글들이 남게 되는 것은 필연적인 부분일 것이다.
2. 그렇다고 감정적이지 않은 것은 긴 글인 것인가? 라는 질문에 대해서는 장편 소설이나 장문의 수기를 생각한다면 그렇지도 않다는 것을 알 수 있다. 사실, 감정적이지 않은 제일 짧은 무언가는 10줄 이내로 증명이 되는 형식 기호들의 집합일 것이다. 아니, 그렇다면 형식 논리는 감정을 표현할 수 없기 때문에 그렇게 짧아도 감정적으로 변하지 않는 것인가? 생각해보면 감정이라는 것이 무엇인가에 대해서 생각을 해야할 떄가 온다. 뭐 그렇다.
3. 재미 없는 말장난은 끝내고, 사실 어떤 의미를 갖고 글을 쓰는 행위가 점점 없어진다는 것이 문제일 것이다. 테크니컬 라이팅조차도 안 하고 있는 것은 시간이 없다는 변명으로는 해결이 안 될 이야기로 보인다. 요즘 많이 지치고 힘들기에 -사실 제일 감정적인 이야기다- 더 이상 글을 쓰기도 싫고, 글을 보여줄 가치를 느끼지 못한다는 것이 맞을 것인데, 이를 해결할 방법이란 존재하는가에 대한 의문이 든다. 2000년대 중후반부터 쭈욱 글을 써 왔지만, 그 글들은 격동적이고 첨예했었다. 그러나 지금은 어떤가? 말라 비틀어진 글들만 쓰고 있지 않는가. 책 사이에 말라 비틀어진 꽃이라면 이쁘기라도 하지, 그냥 황폐화된 들판을 보는 듯한 느낌이다.
4. 그래서 좀 더 감정적이 되자? 좀 더 공격적이 되자? 아님 좀 더 글을 쥐어짜서라도 써야하는가? 라는 질문에 대해서는 대답을 잘 못하겠다. 그냥 지쳐버렸다고 하는 것이 옳바른 표현인지는 모르겠지만 뭐 그렇다는 것이다. 전동 킥보드도 자전거랑 마찬가지로 사람 태우고 어디로 움직이는 건 같고, 덜 힘이 들어가느냐 마느냐의 차이 정도이지 결국 탈 것이라는 것이 갖는 특징이 사라진 것은 아니지 않는가. 뭐 그렇다. 변한건 없는데 변했다고 주장하는 것도 웃긴 일이다.
'일상생활 > 하루하루' 카테고리의 다른 글
2020.07.26 (2) | 2020.07.26 |
---|---|
2020.04.30 (0) | 2020.05.01 |
2019.11.24 (0) | 2019.11.24 |
2019.10.22 인터넷 안에 사람있어요! (0) | 2019.10.22 |
2019.10.03 (0) | 2019.10.03 |
2019.08.17 (0) | 2019.08.17 |
2019.07.26 (0) | 2019.07.26 |
Comments
래디컬 마켓은 블록체인을 한다면, 비탈린 부테릭이 추천한 그 책으로 기억을 많이들 할 것이라고 생각 된다. 요즘 이더리움 커뮤니티에서 화자 되고 있는 제곱투표(Quadratic Voting, 이하 QV)의 시작은 글렌 웨일의 한 논문으로부터 기반한다. 그리고, 글렌은 이런 제곱투표 뿐만 아닌 다양한 아이디어들을 엮은 책을 쓰게 되는데, 이것이 래디컬 마켓이다.
사실 책 자체는 특이한 발상이라기보다는 게임이론적인 접근이 대부분이고, 실제로 게임이론을 공부하다보면 접할 수 있는 부분들에 대해서 논의하는 것을 볼 수 있다. 이민법이라던지, 부분적 공동 소유제라던지 이런 부분들은 정보경제학이나 튤립 경매라고도 불리는 공개내림경매를 생각나게 한다. QV에 대한 사상적 근원이나 수학적 근거에 대해서 고민을 많이 하게 되었기도 하고, 부테릭이 추천사를 썼다고 해서 관심을 갖고 읽기 시작한 책이었는데, QV 쪽 부분은 게임이론적인 근원이 있기보다는 투표에 대한 이상주의적 방향을 제시한 수준이 아닌가 아닌가 싶다. 이는 트위터에서 QV 관련 글을 여러 개 남기면서 더더욱 느꼈던 부분인데, 책에서 제시하는 예시나 근거들에서 QV가 갖고 있는 몇몇 특징들이나, 저축을 통한 투표가 가능한 상황이나 자본으로 투표권을 살 수 있는 상황에서 적절한 결과가 나올 수 있는가에 대한 논의는 상당히 빈약하며, 실제로 이 시스템이 제대로 작동하리라는 실증도 존재하지 않았다. 그렇지만, 이 책이 나온 이후 2019년도에 콜로라도에서 QV가 적용이 되는 등의 일이 있었고, 몇몇 투표나 선호도 조사에서 사용이 되는 등의 논문이 나오는 등 관심이나 실제 시도가 없는 것은 아니라는 것을 확인할 수 있었다. QV는 제한된 상황에서는 상당히 효율적으로 사용이 될 것이라 생각이 되는데, 특히 돈을 걸고 투표를 하는 경우라면 좀 더 의미 있는 형태로 결과를 도출 할 수 있지 않나 (하지만 자본에 의한 투표 방식이라는 문제가 존재한다) 싶은 부분이 있는데, 이에 관련해서는 지속적인 연구나 모델링이 필요할 것으로 보인다. 사실 제일 먼저 떠오르는 방식은 투표 참가자들에게 균일하게 총 투표 금액을 분배하는 방식 (일종의 투표에 대한 유도를 하고, 강한 의견을 피력하는 것을 스크리닝 할 수 있는 형태로 작동할 것이다)인데, 이를 이용하여 기존 투표 시스템을 보완하거나 개선 시킬 수 있을 것이다. (몇몇 국가에서는 투표를 안 한 것에 대한 벌금을 매기는 논의가 있었기도 했다. 둘 다 투표를 안 하면 손해를 보게한다는 점에서 동일한 정책이다. 손실 회피 경향이 더 크다는 점과 보상을 주는것이 처벌을 하는 것 보다 쉽다는 점을 제외한다면.)
뭐 QV 관련한 이야기를 제쳐둔다면, 이 책에서 제일 좋았던 부분이라 하면은 비탈릭의 추천사였는데, 비탈릭이 어떤식으로 이더리움 그룹을 이끌어 나가려고 하는지, 래디컬 마켓에서 어떤 부분을 영향을 받았는지, 이더리움을 통해서 궁극적으로 무엇을 하려고 하는지에 대해서 엿볼 수 있었다는 점이다. 탈중앙화라는 단어가 와 닿지 않는다면, 래디컬 마켓을 읽으면서 래디컬한 사상이 궁극적으로 추구하는 것이 무엇인지에 대해서 이해를 할 수 있을라고 생각한다. 결과적으로 래디컬한 시장 및 정치 개혁이 가져오고 싶어하는 미래는 디스토피아나 테크노크라시한 무언가는 절대로 아니라는 것을 알 수 있다.
참고로 이 책을 읽고 QV에 대한 추가적인 질문이 있다면, 다음의 글들을 살펴보는 것이 좋을 것 같다. 사실 글렌 웨일이 주로 논문을 써서 내고 있는데, 다른 사람의 의견을 찾기는 좀 힘든 편이다. 학계에서 그렇게 인정 받는 분위기는 아닌데, 뭐 비주류 사상이라는게 다 그렇지 않겠는가. 좀 더 가다듬어지고, 실증 사례가 늘어나면 사회과학 쪽에서도 슬슬 관심을 갖을 것이다.
1. Quarfoot, D., von Kohorn, D., Slavin, K., Sutherland, R., Goldstein, D., & Konar, E. (2017). Quadratic voting in the wild: real people, real votes. Public Choice, 172(1-2), 283-303.
2. Lalley, S., & Weyl, E. G. (2018). Nash equilibria for quadratic voting. Available at SSRN 2488763.
3. Lalley, S. P., & Weyl, E. G. (2018, May). Quadratic voting: How mechanism design can radicalize democracy. In AEA Papers and Proceedings (Vol. 108, pp. 33-37).
4. https://ethresear.ch/t/quadratic-voting-with-sortition/6065
'취미 > 책' 카테고리의 다른 글
(사용자를) 생각하게 하지 마! (0) | 2022.10.23 |
---|---|
프로덕트 오너 (0) | 2022.09.25 |
인스파이어드, 개정판 (0) | 2022.09.11 |
하버드 학생들은 더이상 인문학을 공부하지 않는다 (0) | 2016.02.17 |
필립코틀러의 다른 자본주의 (0) | 2015.10.11 |
화폐 경제학 (Money Mischief : Episodes in Monetary History) (0) | 2014.04.14 |
Business Model Generation (3) | 2012.05.28 |
Comments
1. 별로 생각 안 하고 쓰거나 감정을 담아서 쓰는 글들이 자주 빵빵 하고 터지는 듯 하다. 어제 쓴 블록체인 글도 그렇고, 한 3시간 끄적여서 나온 녀석이 여기저기 공유되고 있는 것을 보면, 도대체 왜 사람들은 그런 글에 관심을 갖는지에 대해서 생각이 드는 경우가 많다. 별다른 글도 아니고, 기술 집약적인, 특히 시간이 꽤 걸리는 분야에 대해서 섣부른 판단을 내리지 말라는 논조의 글이었고, 그 주장을 뽑아내기 위해서 몇몇 가지의 극단적인 사례를 들고 왔지만, 사실 사람들은 서두에 있는 단어를 보고 공유를하는 듯 하다.
2. vim 떄도 그렇고, 블록체인 때도 그렇고, 많은 글들은 핵심을 관통하는가에 대한 여부보다는 수사나 글을 이끌어가는 방식에 의해 인기가 결정되는 듯하다. 이러한 특징들은 글을 쓰는 사람들이 펄프 잡지나 각종 신변잡기를 위한 매체들을 혐오하는 이유이기도 할 것이다. 뭐 지금은, 으르신들이 좋아하는 극우 유튜브 같은 것들이 인기를 끄는 것도 컨텍스트의 문제보다는 구성의 문제로 승부를 보기 때문이다.
3. 사실 인간은 논리적으로 사고하도록 발달되지 않았기 때문에 이런 특징들을 가지고 있지 않나 싶다. 편향성이나 위험 회피 등등은 대부분 인간의 생존을 위해서 내재된 문명 이전의 본능이고 이를 극복 해 나가는 과정 자체가 인간에게 주어진 임무라고 생각이 들 정도이니 말이다. 뭐 근데, 그렇다면, 인간이 이러한 이성과 문명을 유지해야할 의무는 어디서 오는 것인가? 그것에 대한 근거를 찾을 수 있지는 않다.
4. 문명의 유지와 이성적 사고가 가져오는 것은 의료 혁명이나 산업 혁명과 같은 인간이라는 종이 생존하기 위한 적합한 환경을 만드는 일종의 행위이자, 기대 수명을 늘리는 일이니 그것이 적합한 방향이라고 할 수 있다. 반면, 이것은 단순한 본연적인 본능에서 오는 것이 아닌, 이성이라는 본능을 초월하고 억누를 수 있는 좀 더 고귀한 무언가에 의해서 행해지는 것인데, 그것을 본능을 통해 유도되는 종의 보존이나 득세를와 연결 시키는 것이 옳은 일인가에 대한 질문도 나올 것이다.
5. 뭐 그래서 극우 유튜브를 보는 사람들이 많은 것이다. (응?)
'일상생활 > 끄적끄적' 카테고리의 다른 글
2019년 회고 (0) | 2019.12.30 |
---|---|
한계효용과 컴퓨터 (0) | 2019.12.14 |
블로그의 전체적인 기조를 바꿨습니다. (0) | 2019.08.24 |
경영학 허투로 배운건 아니더라 (0) | 2019.06.14 |
그래서 무엇을 원했니 (0) | 2018.09.11 |
좋은 글이란 (0) | 2018.05.18 |
청와대 국민청원과 KISS (0) | 2018.02.23 |
Comments
1. 그냥 평범하게 두서를 작성하려다 말고, 직설적으로 말하기로 하였다. 아뇨. 그냥 쓸데 없고요. 특정 분야에서 아주 효과적일 뿐입니다.
2. 블록체인 한다고 하면 으레 듣는 소리 중 하나가, 블록체인 기술이 성장해야 나라가 발전한다는 70년대식 발언과 도대체 그거 쓸 데도 없는걸 왜 하는 약팔이짓 하냐는 질문일 것이다. 뭐 그렇다고 내가 블록체인 관련, 특히 이더리움 관련 일을 때려칠 생각이 있느냐 하면 그것도 아니고, 전자의 반응에는 "아 네 그러세요"로 후자의 반응도 "아 네 그렇군요"라고 반응을 할 수 밖에 없다. 뭐 생각하기는 자유롭고 실제 지금의 트랜드와 기술 관련된 부분들은 아예 블록체인 초창기와는 완벽하게 달라졌기 때문일 것이다.
이더리움 메인넷에 1200원 정도만 투자해서 스마트컨트랙트를 하나 배포하고, 그걸 거래소에 상장시키거나 ICO라는 이름을 대량의 돈을 벌던 시대는 지나갔다. 블록체인에 대해서 부정적인 시각이 생기게 된 이유도 아마 이 시기에 너무 강렬한 인상을 받았기 때문이라고 생각을 하는데, 8토막 정도 난 자신의 총 자산을 바라보면서 알고 보니 암호화폐가 상폐 직전의 주식 쪼가리와 별반 다를게 없다는 것을 몸으로 겪으니 다들 그런게 아닌가 싶다.
하지만 그것을 넘어서 공부를 계속 하고 암호화폐와 블록체인에 대해서 어느 정도 이해를 하게 된다면, 둘 중 하나가 될 것이 분명하다. 지금도 암호화폐 투자를 미친듯이 하고 있거나, 아니면 절대로 암호화폐는 건드리지 않으면서 블록체인만 하고 있거나.
3. 나는 후자의 사람이 되어버렸다. 보유 암호화폐 총 자산은 10만원도 넘어가지 않고, 그 10만원도 이더리움이나 개발 할 때 필요한 수준의 암호화폐 뿐이다. 손을 거쳐간 암호화폐는 많지만 (트론, 퀀텀, 비트코인, 이더리움 등등 거래소에 상장된 모든 걸 만져봤으니) 손을 거쳐서 남게 된 것은 결과적으로 하나 뿐이다. 토큰 이코노미나 여러 암호화폐의 난입 없는 용도와 목적이 분명한 암호화폐들의 생존과 소수의 메인넷만이 살아남아 시스템을 견고하게 유지하는 것, 그리고 가능하다면 인터체인이나 안정적인 시스템을 구축할 수 있는 프레임워크가 많이 나오는 것 뿐이 블록체인 기술이 살아남는 답이라고 생각한다.
4. 많은 한국 기업들이 메인넷을 개발하려고 하고 있지만, 사실상 제대로 된 메인넷은 비트코인과 이더리움을 제외하고 없다고 봐도 무방하고, 그 외는 대부분의 기술들을 이더리움과 비트코인에서 가져오거나 개선하는 수준에서 그치는 경우가 많다. PoS를 선구적으로 시도한 EOS나 QTUM 등은 좀 지켜볼만하지만, 실제로 시스템이나 어플리케이션이 제대로 돌아가는 시스템을 만드는 것은 세 가지에 종속되게 된다. 1. 이더리움의 EVM과 얼마나 잘 호환되는가. 2. 이더리움처럼 얼마나 생태계가 풍부한가 (e.g. 개발자의 수, 오픈소스 프로젝트의 수) 3. 거래소에 잘 상장되고 있는가 가 그것인데, 실제로 이 3가지 기준을 다 지키는 암호화폐는 극소수이다.
QTUM은 생태계 구축에 실패했고, EOS는 자체 VM으로 실질적으로 개발 관련해서 도움을 받을 데가 너무 적다. Tron의 경우 수수료 무료라는 장점이 있다지만, 그 장점을 상쇄하는 Java 기반의 클라이언트를 생각해보면 별로라는 걸 알 수 있고, 지갑 조차 제대로 작동 안 하는 ADA나 관리가 제대로 안 되는 IOTA 등등... 거의 영구히 ERC-20 토큰으로만 남아있는 대부분의 프로젝트들을 생각한다면, 사실 블록체인 서비스 중에서 믿을 만한 것은 탑 10코인 정도 밖에 안 된다는 결론만 나오게 된다. 그리고 그것들은 비트코인의 포크이거나 이더리움의 아류작들 뿐이다.
5. 이런 상황에서 왜 이더리움에 대한 집착이나, 이더리움에 의한 블록체인 체제 개편이 되어가고 있는가에 대한 질문에 대한 대답이 나오는 것이다. 몇 주 전에 이더리움 관련 발표를 했을 때, "왜 이더리움을 포크한 프로젝트가 그렇게 많느냐?"라는 질문이 나왔었는데, "실제로 이는 메인넷 개발에 있어서 스마트컨트랙트 실행 환경이 이더리움 VM이 실질적인 표준이 되어버렸고, 이더리움 기반 생태계가 실질적인 표준을 이끌어가고 있으며, 그리고 검증 받은 신입을 원하기 때문"이라고 대답을 하였었다. 실제로 Quorum이나 클레이튼/루니버스 모두 이더리움 기반으로 만들어지고 있고, 메타디움이나 몇몇 메인넷 개발사들도 이더리움 포크나 이더리움 구현체의 확장 정도에서 그치는 모습을 보여주고 있다. 메인넷을 처음부터 개발하고 알고리즘을 새로 개발할 여력 자체가 없는 것도 있지만, 개발 관련하여서 안전한 길을 택하려는 경우가 많다. 클레이튼과 루니버스가 대표적인 예인데, 이더리움을 포크하면서 얻을 수 있는 대부분의 이득을 얻으려고 노력하는 모습을 많이 보게 된다. Web3js의 포크 등의 기존 라이브러리의 재활용이나 JSON-RPC 관련 표준의 확장 정도로 손을 대고 끝을 내면서 기존 로우 레벨 서비스와의 호환성을 높이는 등의 일들이 그런 것인데, 이더리움 생태계가 확장 될 수록 반사 이익을 많이 받게 되는 것도 사실이고, 실제로 개발이나 런칭 관련해서 빠르고 유연하게 대처할 수 있다는 것도 사실이다.
6. 암호학에서 유명한 말이 있다. "자체 개발한 암호 알고리즘을 쓰면 100% 뚫린다"라는 것인데, 블록체인 기술에서 5할 이상인 암호학 관련한 부분이라는 것을 생각해보면 상당히 의미심장한 이야기 일 것이다. 일반적으로 secp256k1 타원곡선을 사용하여 암호화를 하고, keccak256을 이용하여 해싱하는 것은 일반적인 블록체인 서비스라면 다들 당연하게 여기는 부분일 것이다. (secp256r1 쓰는 리플 이런 것도 있지만) 대부분 사용하는 암호화나 기법들은 일반적으로 다들 알 만한 기술들이고, 이미 대부분 실생활에서 알게 모르게 적용이 되어있는 경우들이 많다. 하지만, 대부분 신경을 꺼도 되는 레이어나 배우기 힘든 부분들에 포진되어있다는 것이 문제일 것이다.
7. 블록체인이 프로그래머에게 그렇게 와닿지 않는 기술이 돼 버린 부분도 이것의 연장선상이다. 블록체인은 사실 4차 산업혁명 같은 단어로 인식되기 일쑤인데, 실증도 덜 되어있을 뿐만 아니라, 사용하기도 까다로운 무언가가로 인식되어지고, 거기다 그렇게 익숙하지 않은 기술들의 조합이기 때문일 것이다. 완벽한 "탈"중앙화는 무엇이며, 그것이 갖고 있는 의미는 무엇인가? 사실 별다른 감흥이 오지 않는 단어들의 연속인건 사실이다. 탈중앙화 이런 단어를 갖다 버린다고 하더라도, 비신뢰 환경에서 신뢰할 수 있는 네트워크의 구축이 얼마나 중요한지에 대해서는 DoH나 GPG/PGP나 뭐 다양한 도감청 이슈나 프라이버시 이슈를 위한 암호학을 이용한 솔루션들을 생각해보면 별로 공감할 건덕지가 없는 것도 사실이다. 뭐 프로그래머 중에서 GPG/PGP 키 걸어 놓고 특수한 이메일 클라이언트를 쓰고, 메일서버는 따로 구축해서 사는 사람이 얼마나 있는지 손으로 세어보면 답이 나오지 않는가. DoH 같은 경우 그냥 DNS들과 웹 브라우저 제작사들이나 신경 써야할 일이고 (뭐?) 실제로 프로그래머가 dig 같은 명령어만 써도 뭐 준수한게 아닌가 싶다. (뭐??) 좀 대 놓고 말하면, 보안하는 사람들(해커는 아니다)과 프로그래머들이 사이가 안 좋은 이유가 대부분 이것인데, 까놓고 말해서 자유, 개방성, 프라이버시를 이야기하지만 거기 아래에 있는 기술에 대한 이해는 서로 아예 다르며, 기술에 대한 이해나 접근 방식이 아예 다르기 때문이 것이다. 정확히는 구현체를 구현하는 입장이나, 구현체가 뚫리지 않도록 하는 경우나, 그것을 갖다 쓰는 경우나, 그것을 공격하여 무력화하는 것에 초점이 맞춰져 있는 네 그룹 정도로 나뉘어져 있다고 생각을 하고 있는데, 이게 실제로는 완벽하게 4개로 나뉘어지는 경우는 별로 본 적이 없다. 뭐 웹 개발하면서 Let's Encrypt의 도움을 받긴 하지만, XSS에 대한 직접 구현을 해야할 것이고 (뭐 따로 라이브러리 가져다 쓰는 경우도 있지만), 반대로 HTTPS Strip 같은 공격을 감행하는 툴을 직접 짜서 돌리는 경우는 꽤 있지만, XSS는 OWASP에서 XSS 유즈 케이스 가져와서 쭉 넣고 "아 XX 요즘 기성 프레임워크는 말야~~" 하는 경우도 있을 것이다. (실제로 둘 다 봤다) 뭐 여튼, 이렇게 말해서 미안하긴 하지만, 일반적으로 코어 기술을 이해할 필요가 없는 것들이 많다는 것이다. 추상화 덕택이긴 하지만, 결과적으로 이러한 것들은 많은 개발자들이 블록체인에 대한 관심을 끄도록 하는 주요한 이유이기도 할 것이다.
이는 "로우레벨을 알아야해요!"라는 떡밥과 직간접적으로 연관이 되어있다. 사실, Keccak256이랑 Blake256 중 왜 Keccak256이 왜 SHA3으로 채택되었는지에 대해서 알 필요는 없다. 그것이 정말로 크리티컬한데 쓰이는 경우를 제외하고는 말이다. 해시 콜리전이 일어나면 안되는 상황 (e.g. 포렌식 할 경우 md5/sha1 둘 다 써서 각각 해시값을 뜨는 경우가 종종 있다. 잠시만 sha1이라고? 그렇다.) 이 있다던지, 아니면 같은 값을 넣었는데 패딩이나 인코딩 문제로 다른 값이 출력되는 경우가 절대로 없어야하는 경우라던지, 뭐 아님 왜 Salt 같은걸 쳐야지 비밀번호를 안전하게 보관할 수 있다는 것인지(e.g. 레인보우 테이블), 왜 몇몇 해쉬 알고리즘은 비밀번호 보관에 적절하지 않은지에 대한 부분들은 그 때 가서 배워도 될 부분이고, 그리고 사실 대부분 암호 라이브러리들이 알아서 다 해주는 경우가 허다하다. 그렇기에 프로그래머들에게는 "프로그래머가 수학 잘 해야한다는 소리"의 연장선상이자, "로우레벨이 얼마나 중요한데" 시리즈는 사실 자신의 지적 오만함을 나타내기 위해서 존재하는 것처럼 보일 때가 많다는 것이다.
8. 좀 너무 날 것의 말을 해 버렸는데, 사실 하고 싶은 말들이 그것이다. 블록체인 기술에 대해서 비판적인 경우에 대해서 제일 짜증 났던 부분 중 하나는 여기 적용되는 기술이 실제로, (자조적으로 말하지만) 비대칭키로 싸인을 한 데이터 덩어리들을 해시드 링크드 리스트로 만들어서 토렌트로 공유하는 것과 차이가 없다는 것이고, 매번 욕 먹는 부분들의 대부분은 이미 논의가 되었거나 논의가 되고 있는 부분들이기 때문일 것이다. 그렇기에 "블록체인이 약 파는 기술이에요?"라는 질문에 대답이 언제나 맥 빠진 소리의 "아 네 그러죠 하하" 인 것은 이 이유 때문이다. 이더리움 커뮤니티의 많은 주제들은, 분산처리, 비신뢰 환경에서 신뢰 담보, 게임이론, P2P 네트워킹, 분산 데이터 저장, 타원 곡선 암호, 샤딩, 합의 알고리즘, 블록 팩킹 알고리즘 등등이고, 통신 관련된 부분은 위스퍼나 libp2p에서 열심히 구르고 있고, 분산 스토리지는 IPFS나 온톨로지 같은 애들, 분산처리는 gWASM 쓴다고 난리치는 golem 같은데에서 열심히 해결을 하려고 하고 있다. 그 누구도 500기가나 2테라 바이트 정도 되는 블록체인 전체 트랜젝션 데이터를 받아 놓기를 원하지 않는다는 걸 모두가 알고 있고, Light Node들의 구성을 통해서 안정적인 거래를 만들 수 있도록 하는 것을 다음 목표로 하고 있다. 실제로 로우레벨에서 안 되서 개선을 하려고 삽질하는 경우들이 많고, 대부분 학부에서 제일 지루했던 수업들에서 다루는 주제들을 열심히 다루고 있는 것도 문제이다. 신경을 쓸 일이 없는 로우레벨의 일들이 대부분이고, 문제 해결 방식도 대부분 결국 수학의 도움을 받아야하고 증명 과정이 계속 필요하다는 것도 관심을 별로 못 받는 이유이기도 하다. 하지만 겉으로 보기에는 블록체인이 무엇을 해결하느냐, 실생활에 쓸 수 있는 라이브러리가 있느냐, 이걸 어떻게 써야하느냐 이런 질문을 하는 사람들이 이해가 안 가는 것도 아니다.
9. 저번에도 말 했지만, 블록체인에 대한 지식을 무기화하거나 비즈니스화하는 경우가 제일 문제이다. 이더리움 포크 뜨고 뭐 기술력있는 것처럼 자랑을 하는 건 좀 아니라고 생각을 하고, 사실 라이브러리 만들고 더 안정적인 서비스들을 만들어야할 시점에 그걸로 ICO 땡기고 있지를 않나, 오딧팅을 돈 받아먹고 하지를 않나 (근데 우리도 그렇긴하다 ㅎㅎ; 보안 감사가 되게 하는게 없어 보이긴하지 ㅠㅠ), 라이브러리 파편화를 가속화시키지를 않나, 거지 같은 일들이 매일 벌어지고 있다. 거래소, 메인넷 개발팀, 지갑 개발팀, 홍보/마케팅팀, 그리고 마켓 메이킹이라고 하는 자전거래하는 사람들 등등 별의별 군상들의 집합이기도 하다. 토크나이제이션, ERC-721, ERC-1155, 탈중앙화 게임 플랫폼, 커스터디, DeFi 등등 말도 안되는 단어들이 난무하면서 정작 하는 건 하나도 없는 경우들을 한 두 번 본 것도 아니다. 매번 뭐 만들었다고 하는데, 저 라이브러리 떼오고, 이 라이브러리 떼와서 키메라 만든 다음에 기술력 있다고 하면 뭐 어쩌라는 것인가. 사실 이런 분위기가 블록체인 업계에 대해서 표면적으로 이해를 하는 사람들에게 안 좋은 이미지를 주고 있는건 사실이다.
10. 좀 이야기를 틀어서, 블록체인이 암호학에 도움이 되는가? 라고 한다면 분명히 아닐 것이다. 암호학은 원래 가던 길이 따로 있었다는 것도 사실이고, 타원 곡선 암호가 블록체인 덕분에 반짝 뜬 건 있지만, 실제로 검증된 몇 곡선을 제외하고는 추가적인 연구를 하려고 하지는 않는 경향이 크다. BLS가 예외적이긴 하지만, 이 경우 이더리움의 스케일링 관련해서 생기는 문제들에 대해서 해결을 위해 도입이 되고 연구를 하고 있는 부분이고, 이더리움 재단에서 지원과 연구를 한다지만, 실제로는 뭐 자기들이 쓸 부분만 도움을 주는 것도 사실이고, 대놓고 말해서 이 쪽 전문가가 부족한 건 사실이다. 암호학이 만만한 분야도 아니고, 결국 수학자들이 나와야할 부분인데, 결국 할 수 있는건 역시 이더리움이나 비트코인을 그 사람들의 계좌로 쏴 주는 것 밖에 없지 않나 싶다. 뭐 여튼, 블록체인 기술들이 다른 학문이나 타 기술들의 성숙도에도 영향을 받고 있다는 것인데, 실제로 커뮤니티도 슬슬 한계를 느끼는 것인지 외부에 있는 라이브러리들 갖다 쓰는 것도 일반화가 되었고, 브릿지나 레이어2 이런 이야기들을 하면서 블록체인 밖의 데이터에 대한 논의들도 충분히 되어가고 있다. OpenSSL 1.1 쓰면 정합성 깨져서 OpenSSL 1.0을 무조건 깔아 써야하는 비트코인 같은 걸 보면 아직도 복장이 터지지만, 조금식 조금씩 개선이 되는 모습을 보여주고 있고, 결국 zmq나 leveldb나 뭐 여튼 이것저것 기워서 비트코인 클라이언트가 만들어지고 있고, 그 과정에서 각종 외부 라이브러리 컨트리뷰션도 하는 모습이 조금씩 보이고 있다는 것도 희망적이라고 하면 할 수 있다. 결국 외부, 아님 다른 커뮤니티와 소통을 얼마나 잘 하느냐에 따라서 블록체인 기술이 성장하냐 하지 않느냐가 결정 될 것은 거의 자명한 일이다.
11. 다시 원 주제로 돌아가자면, 제일 쉽고 빠르게 프로그래머들이 블록체인을 쓰게 하는 방법은 IPFS와 Ethers.js와 INFURA를 섞어서, 블록체인에 블로그 글 쓸 수 있는 블로그 서비스를 운영하면 되지 않냐는 것이다. (스팀잇이나 비슷한 아이디어를 가진 서비스들이 있긴하다) "블로그 글을 쓰려면, 스토리지 사용 비용을 내셔야합니다. 그리고 블록체인을 통해 블로그 글에 대한 위변조 여부를 검증 가능합니다." 정도면 될 것 같다는 생각이 계속 드는 것이다. 사실 Github Pages를 그렇게 불편한데도 열심히들 쓰는 거 보면, 그리고 Git이라는 일종의 Hash 기반의 블록체인과 비슷한 형태로 자료 저장을 하는 (사실 그렇다. 여러분은 알게 모르게 블록체인을 쓰는 것이다) 버전 관리 시스템을 꾸역꾸역 좋다고 쓰는 걸 보면 블록체인도 충분히 마조히즘을 느끼면서 쓸 것 같다는 느낌이 계속 든다.
사족을 덧붙이자면, 요즘 관심 기술은 DAT Protocol, libp2p, orbit db 같은 분산 스토리지 기술들이고, 그 다음로 관심을 갖는 분야는 역시 Auth 관련한 부분들이다. DID나 FIDO 같은 것들인데, 이 부분들에 대해서 좀 깊은 이야기를 써야하지 않나 싶은 것이다. 뭐 DID는 지금 개나소나 하고 있는 것도 있고...
더 사족을 붙이자면, 이 글을 퇴고하기 귀찮아서 1.5번 읽고 갖다 버린 글이라는 것이다. 다시 읽어도 횡설수설이긴 한데, 요즘 글을 남이 읽으라고 쓰는게 아니라 자기 만족을 하려고 쓰는 거라서 더더욱 그렇게 되고 있다. 아 그래서 로우레벨을 알아야하느냐고? 아니 그렇진 않다. 그러나, 로우레벨을 알아야만하는 분야들도 좀 있다는 것을 알아 줬으면 한다. 뭐 그렇기에 아무도 이해를 못 하는 기술이 탄생했지만 :(
'블록체인' 카테고리의 다른 글
DeFi 단상 (0) | 2020.11.22 |
---|---|
블록체인이라는 이름의 지옥 (부제 : ML은 전기양이긴했냐) (2) | 2020.01.24 |
거 그래서 블록체인이 뭐란 말이오? (1) (0) | 2019.11.10 |
블록체인 + 스타트업 = ??? (0) | 2019.08.11 |
암호화폐 거래에 대한 단상 (0) | 2018.02.09 |
암호화폐는 화폐일 수 있는가? ② - RSMPAY를 바라보며 (0) | 2018.01.27 |
암호화폐는 화폐일 수 있는가? - JTBC 유시민 씨의 이야기를 반박하며 (2) | 2018.01.20 |
Comments
1. 게임하고 싶다. 홈월드 3 예약 구매를 걸어놨지만, 정말 홈월드 3이 나와도 게임을 제대로 할 수 있는지는 알 수 없는 것이다.
2. 요즘 고등학교 친구들을 안 본지 거의 4~5년이 넘어간 것 같다. 운이 좋게 같은 대학을 온 분들 경우에는 좀 이야기가 다르지만, 사실 대학교에 와서 친구 혹은 동기라고 부르는거지, 딴 대학교에 갔으면 연락도 안했을 사람들이 많다. 사실, 그렇기에 대학이라는 네트워크는 나의 인생에서 의외로 큰 몫을 차지한다는 걸 요즘 들어서 많이 느낀다. 대학 네트워크에서 몇 동아리의 중점적인 역할을 했고, 거기서 만난 사람들을 트위터에서... 다시 만나고 있다는게 문제라면 문제겠지만 말이다.
3. 트위터는 특이한 구석이 있는 SNS다. 초반에는 오타쿠 위주의 커뮤니티였지만, (그 전에는 정치 계정 위주였지만) 다양한 곳에서 유저가 유입되고, 특히 컴공 혹은 프로그래밍 좋아하는 학생들이 모이기 시작하면서 어느 정도 개발을 하려면 일단 가입해 놓는게 낫지 않나 싶은 SNS로 변해버렸다. 개발자라는 특성상 IRC 채널 하나 켜 두거나, 미투데이를 하거나 (Java 개발자들이 많았었다), 뭐 몇몇 커뮤니티에서 주로 활동하는 경우가 많지만, 대부분 커뮤니티는 망했고, 남는 건 트위터에서 시덥잖은 이야기로 서로 치고 박는 일 밖에 안 남게 되었다는게 좀 더 정확하다고 해야할까?
4. 트위터 말고 개발 관련 정보를 얻을 수 있는데가 점점 없어지고 있다. 일단, 블로그는 죽었고, 페이스북은 쓸 사람만 쓰고, IRC도 뭐 이제 구시대의 유물이고, 디스코드는 좀 괜찮긴해도 몇몇 채널을 제외하고는 굴러가지를 않고, 슬랙은... 폐쇄적이다. 그러니 트위터나 붙잡고 각종 대회나 컨퍼런스 이야기나 하고 앉아 있지 않는가. 거기서 사람 모여서 모각코를 하건, 밤샘을 하건, 술을 마시건 뭐 개발 이야기를 하고 정보를 교류 할 수 있다면 그걸로 족한 것 같다.
5. 그래서 나에게 남는 건 대학 생활이었던걸까? 트위터였던걸까? 트위터에 있는 대학 동기만 남은게 아닌가 싶기도하고... 흠...
'일상생활 > 하루하루' 카테고리의 다른 글
2020.04.30 (0) | 2020.05.01 |
---|---|
2019.11.24 (0) | 2019.11.24 |
2019.11.09 (0) | 2019.11.09 |
2019.10.03 (0) | 2019.10.03 |
2019.08.17 (0) | 2019.08.17 |
2019.07.26 (0) | 2019.07.26 |
2019.05.30 (0) | 2019.05.30 |
Comments
1. 사실 트위터를 하면서 별 의미를 안 갖게 되는 것은, 인터넷이 으레 그렇듯이 정보보다는 노이즈가 많고, 제대로 굴러간다기보다는 혼돈스러운 무정부 상태를 잘 보여준다는 것이다. 이런 상황에서 별다른 의미를 갖고 위키를 운영하거나 어떤 규칙을 갖고 있는 사이트를 운영한다는 것은 상당히 힘든 일이다. 운영진은 바뀌기 마련이고, 시간과 돈, 현생의 문제가 겹치게 된다면, 커뮤니티가 죽게 되는 것은 시간 문제이다. 아니면, 새로운 땔감 -정치적 요소, 새로운 놀 거리- 가 들어와야하는데, 이러한 안정적인 땔감 보급의 경우 커뮤니티 유저의 신규 유입에 의해서나 유지가 된다. 이런 상황에서, 신규 유저들의 특색을 존중하면서, 기존 규칙을 고쳐나가는 일은 엄청나게 힘들고 지켜지기 힘든 일이다. 특히나, 트롤링이 일종의 문화로 잡혀진 이 시점에서 블로그를 제외한 매체 중에서 어떠한 곳도 안정으로 글을 써 내려갈 수 있는데가 없다는 것으로 귀결이 되게 되는데, 블로그는 영토라는 개념 중에서 제일 작은 개념인 나만의 포스트 공간이라는 특징을 갖고 있다는 것을 알 수 있다. 이오공감이라던지, 갤러리 같은 형태로 운영만 안 된다면 일종의 언론 형태를 띌 수 있다는 것을 분명히 알 수 있을 것이다.
2. 반면 트위터 같은 소규모 전쟁터나, 페이스북 같은 장문의 글을 쓸 수 있는 SNS 조차도 차단과 비공개/공개 글의 차이 덕분에 글이 고루고루 퍼지지 않는다. 자신이 속해있는 네트워크나 유저들의 글들을 조합하거나, 이를 퍼다 나름으로써 일종의 암묵적 규칙이 지켜지게 되는데, 이런 상황에서는 대부분 모든 사용자는 완벽한 그림을 보지 못하게 된다. 제한적 그림이나, 삭제된 글의 캡쳐만을 부분적으로 보면서 전체 사건을 추론을 해야하는 지루한 일들이 지속되는 것이다.
3. 사실 이런 문제는 하루 이틀 있었던 일은 아니다. 대부분 페이스북에서 저격을 하거나 저 새끼 누구야? 하면, 이제 트위터에서 반응이 오고, 몇 개월간 활동도 없었던 페북 계정이 갑자기 살아나서 사자후를 토했던 일이나 (매번 술자리 가면 이 이야기가 빠지지 않는다), 역으로 페이스북 글 때문에 트위터가 불 탔던 일들은 당연하게도 자주 있는 일이다. 나는 이 상황을 아주 긍정적으로 보고 있는데, 일단 고인물이나 폐쇄적인 커뮤니티가 어떻게든 상호작용을 해 내고 있다는 것이고, 공개글이라는 형태로 장문의 글은 페이스북으로, 단문의 글은 트위터나 그에 준하는 디스코드/IRC에서 이야기가 오간다는 걸 의미한다. 이를 통해 유저간 교류나 기존에는 별로 만날 수 없었던 인력 풀들의 섞임이 가능하다는 것은 기존의 커뮤니티와는 사뭇 다른 모습일 것이다. 실명을 걸거나 실명에 준하는 닉네임을 걸고 이야기를 나눌 수 있다는 점은 토론의 장을 키울 수 있는 부분이기도하고, 최소한 어느정도의 -나쁘게 말하면 학력적, 경력적인 부분을 방패로 쓰는- 검증 과정을 거칠 수 있다는 점인데, 이를 통해서 의견의 수용 여부를 대중이 정할 수 있다는 점이다.
4. 휴버트 드레이퍼스의 인터넷의 철학에서 말했던, 인터넷에서는 인간의 판단 능력이 상실 되는, 아무런 의미 없는 이야기들의 울림들의 연속일 것이라는 저주를 정말로 좋아했었는데, 잠시만이라도 나는 하버마스의 공론장을 믿기로 했다. 일종의 준 엘리트주의나, 민주주의와 엘리트주의의 미묘한 공존이 되겠지만, 실력에 의거하거나 전문가 집단의 이야기에 기반한 형태의 논의 지속이 될 수 있도록 하는 것이 최종적인 목표인 것인데, 이러한 형태가 과연 민주주의적인지는 확신이 들지는 않는다.
5. 그렇다면 민주주의적이지 않은 방법을 택하는 것이 옳지 않은 것인가라는 질문을 할 수도 있을 것이다. 실제로 현재까지 살아남은 커뮤니티는 3~7일 동안의 게시글 쓰기 중단이나, 커뮤니티 규정을 통한 추방제 등이 있는 곳들이었다. 예외적으로 디씨가 있긴하지만, 디씨 자체도 마이너 갤러리의 활성화와 암묵적 룰이라는 부분에서는 큰 줄기를 공유할 것이라고 보고 있다. 뭐, 여튼, 사실 모든 인간에게 선한 의지와 선한 방향으로의 진전이 없을 것이라고 한다면, 감시와 처벌, 그 자체가 시스템을 유지하는 무언가가 되지 않을까 싶기도 한 거이다.
6. 이런 뻘소리를 한 건, 사실 실력과 경력으로 사람을 깔아 뭉게는 것이 적절한지에 대해서 의문이 많이 들지만 -특히 별의별 이야기를 다 들어줘야하는 입장에서는 골치가 아프더라도 그래야하지 않는가 싶지만- 논의적으로 봤을 때, 어느 정도 중간에 커트가 필요한 것도 사실이고 실제로 요 근래, 개발자의 제대로 된 정보를 공유하자는 위키를 만들려고 하는 프로젝트나, 블로그 글들을 모아 해커 뉴스처럼 운용하려고 하는 사람들이나, 개발자용 블로그들을 만드는 경우들을 종종 보았기 때문이다. 사실 이러한 시도가 개발 관련된 부분에서만 실험적으로 있었던 것은 아니다. 한국 철학 뭐시기.... 협회에서도 사이트를 운영했었고 (유실 되었다) 많은 사이트들이 이러한 노력을 했었던 건 사실이다. 이런 흐름을 다시 복원하고 전문가주의 혹은 전문가 집단에 의한 정보 선도 이런 것을 다시 시도한다면, 최소한 나무위키 정도는 엎지 않을까 싶은 것이다.
7. 의미가 없는 일들이긴 하지만, 누구는 내 프로젝트를 보고 기억을 해줬고, 누구는 내 프로젝트를 도와줬다. 뭐 지금 와서는 시간이 없다는 핑계로 하지를 못하지만, 한 번 다시 해봐야할 떄가 아닌가 싶다.
'일상생활 > 하루하루' 카테고리의 다른 글
2019.11.24 (0) | 2019.11.24 |
---|---|
2019.11.09 (0) | 2019.11.09 |
2019.10.22 인터넷 안에 사람있어요! (0) | 2019.10.22 |
2019.08.17 (0) | 2019.08.17 |
2019.07.26 (0) | 2019.07.26 |
2019.05.30 (0) | 2019.05.30 |
2019.03.31 잡생각 (0) | 2019.03.31 |