Loading
2019.11.10 02:09 - Bengi

거 그래서 블록체인이 뭐란 말이오? (1)

그냥 요즘 삘 받아서 글을 막 쓰게 되는데, 이럴 때 열심히 글을 써 두는게 제일 좋지 않나 싶다. 일단 블록체인 기술에 대해서 이야기를 해야하나 싶은게, 실제로 다들 블록체인 기술이 뭔지에 대해서 이야기를 하는 사람이 없기 때문이다. 아니 솔직히, 블록체인 관련 글들은 쓰는데 회사 솔루션을 끼워서 이야기를 하거나, 아님 얕은 지식의 이야기를 하거나, 너무 암호학 위주로 이야기를 하거나, 아님 뭐 내 마음에 안 들게 글을 써서 그냥 블록체인에 대한 이야기를 처음부터 하려고 한다. 하지만, 이 글은 언제라도 사라질 수 있으며, 그 후 회사 블로그에 올라갈 (...) 수 있다는 부분은 양해 부탁드리는 부분이며, 솔직히 저희 회사도 먹고 살아야한다는 점을 이야기 하고 싶다. 저희 회사 기술력 보고 시리즈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 장에서 진짜 기초적인 블록체인 클라이언트에 대해서 설명을 하였다. 설명이 충분하지 않다는 생각이 들지만, 일단 이 정도면 블록체인에 접목되는 암호학 기술에 대해서 약간이나마 이해를 할 수 있을 것이다. 여기까지 읽어줘서 감사하다.

댓글을 입력하세요

2019.11.09 19:57 - Bengi

2019.11.09

1. 글을 써야할 의지를 못 느낄 때가 많다. 사실 글을 써야할 이유 자체가 사라져가는 상황에서 장문의 글을 쓰는 능력을 계속 유지할 이유가 있는 것도 아니고, 점점 녹슬어가고 있는 것도 느껴지고 있는데, 뭐 이건 좀 노력하거나 다시 글을 쓰다보면 돌아올 일이라는 건 알지만, 역시 자전거를 오랜만에 타는 듯한 느낌이라서 별로 유쾌한 기분이 들지는 않는다. 뭐, 그런데 자전거보다는 요즘은 전동 킥보드가 대세 아닌가, 뭐 그러면 전동 킥보드 느낌으로 글을 써야하는 게 아닌가라는 생각도 종종 들긴한다. 단문화된 글들이나 짧고 명료한 글들을 더 선호한다는 이야기인데, 그렇다면 그것에 최종적으로 남는 것은 무엇인가? 분노나 증오나, 호 혹은 오 일 것이다. 뭐 호오 보다는 호불호를 많이 쓰니 불호라고 해야하나? 어쩄든, 감정만 남은 글들이 남게 되는 것은 필연적인 부분일 것이다.

2. 그렇다고 감정적이지 않은 것은 긴 글인 것인가? 라는 질문에 대해서는 장편 소설이나 장문의 수기를 생각한다면 그렇지도 않다는 것을 알 수 있다. 사실, 감정적이지 않은 제일 짧은 무언가는 10줄 이내로 증명이 되는 형식 기호들의 집합일 것이다. 아니, 그렇다면 형식 논리는 감정을 표현할 수 없기 때문에 그렇게 짧아도 감정적으로 변하지 않는 것인가? 생각해보면 감정이라는 것이 무엇인가에 대해서 생각을 해야할 떄가 온다. 뭐 그렇다.

3. 재미 없는 말장난은 끝내고, 사실 어떤 의미를 갖고 글을 쓰는 행위가 점점 없어진다는 것이 문제일 것이다. 테크니컬 라이팅조차도 안 하고 있는 것은 시간이 없다는 변명으로는 해결이 안 될 이야기로 보인다. 요즘 많이 지치고 힘들기에 -사실 제일 감정적인 이야기다- 더 이상 글을 쓰기도 싫고, 글을 보여줄 가치를 느끼지 못한다는 것이 맞을 것인데, 이를 해결할 방법이란 존재하는가에 대한 의문이 든다. 2000년대 중후반부터 쭈욱 글을 써 왔지만, 그 글들은 격동적이고 첨예했었다. 그러나 지금은 어떤가? 말라 비틀어진 글들만 쓰고 있지 않는가. 책 사이에 말라 비틀어진 꽃이라면 이쁘기라도 하지, 그냥 황폐화된 들판을 보는 듯한 느낌이다.

4. 그래서 좀 더 감정적이 되자? 좀 더 공격적이 되자? 아님 좀 더 글을 쥐어짜서라도 써야하는가? 라는 질문에 대해서는 대답을 잘 못하겠다. 그냥 지쳐버렸다고 하는 것이 옳바른 표현인지는 모르겠지만 뭐 그렇다는 것이다. 전동 킥보드도 자전거랑 마찬가지로 사람 태우고 어디로 움직이는 건 같고, 덜 힘이 들어가느냐 마느냐의 차이 정도이지 결국 탈 것이라는 것이 갖는 특징이 사라진 것은 아니지 않는가. 뭐 그렇다. 변한건 없는데 변했다고 주장하는 것도 웃긴 일이다.

 

'일상생활 > 하루하루' 카테고리의 다른 글

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
블록체인 + 스타트업 = ???  (0) 2019.08.11
2019.07.26  (0) 2019.07.26
2019.05.30  (0) 2019.05.30
2019.03.31 잡생각  (0) 2019.03.31

댓글을 입력하세요

2019.11.09 19:41 - Bengi

「래디컬 마켓」, 에릭 포즈너, 글렌 웨일

래디컬 마켓은 블록체인을 한다면, 비탈린 부테릭이 추천한 그 책으로 기억을 많이들 할 것이라고 생각 된다. 요즘 이더리움 커뮤니티에서 화자 되고 있는 제곱투표(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

댓글을 입력하세요

2019.11.04 23:05 - Bengi

뻘글이 빵하고 터질 때

1. 별로 생각 안 하고 쓰거나 감정을 담아서 쓰는 글들이 자주 빵빵 하고 터지는 듯 하다. 어제 쓴 블록체인 글도 그렇고, 한 3시간 끄적여서 나온 녀석이 여기저기 공유되고 있는 것을 보면, 도대체 왜 사람들은 그런 글에 관심을 갖는지에 대해서 생각이 드는 경우가 많다. 별다른 글도 아니고, 기술 집약적인, 특히 시간이 꽤 걸리는 분야에 대해서 섣부른 판단을 내리지 말라는 논조의 글이었고, 그 주장을 뽑아내기 위해서 몇몇 가지의 극단적인 사례를 들고 왔지만, 사실 사람들은 서두에 있는 단어를 보고 공유를하는 듯 하다.

2. vim 떄도 그렇고, 블록체인 때도 그렇고, 많은 글들은 핵심을 관통하는가에 대한 여부보다는 수사나 글을 이끌어가는 방식에 의해 인기가 결정되는 듯하다. 이러한 특징들은 글을 쓰는 사람들이 펄프 잡지나 각종 신변잡기를 위한 매체들을 혐오하는 이유이기도 할 것이다. 뭐 지금은, 으르신들이 좋아하는 극우 유튜브 같은 것들이 인기를 끄는 것도 컨텍스트의 문제보다는 구성의 문제로 승부를 보기 때문이다.

3. 사실 인간은 논리적으로 사고하도록 발달되지 않았기 때문에 이런 특징들을 가지고 있지 않나 싶다. 편향성이나 위험 회피 등등은 대부분 인간의 생존을 위해서 내재된 문명 이전의 본능이고 이를 극복 해 나가는 과정 자체가 인간에게 주어진 임무라고 생각이 들 정도이니 말이다. 뭐 근데, 그렇다면, 인간이 이러한 이성과 문명을 유지해야할 의무는 어디서 오는 것인가? 그것에 대한 근거를 찾을 수 있지는 않다.

4. 문명의 유지와 이성적 사고가 가져오는 것은 의료 혁명이나 산업 혁명과 같은 인간이라는 종이 생존하기 위한 적합한 환경을 만드는 일종의 행위이자, 기대 수명을 늘리는 일이니 그것이 적합한 방향이라고 할 수 있다. 반면, 이것은 단순한 본연적인 본능에서 오는 것이 아닌, 이성이라는 본능을 초월하고 억누를 수 있는 좀 더 고귀한 무언가에 의해서 행해지는 것인데, 그것을 본능을 통해 유도되는 종의 보존이나 득세를와 연결 시키는 것이 옳은 일인가에 대한 질문도 나올 것이다.

5. 뭐 그래서 극우 유튜브를 보는 사람들이 많은 것이다. (응?)

댓글을 입력하세요

2019.11.04 02:54 - Bengi

블록체인 거 쓸만하긴 해요?

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번 읽고 갖다 버린 글이라는 것이다. 다시 읽어도 횡설수설이긴 한데, 요즘 글을 남이 읽으라고 쓰는게 아니라 자기 만족을 하려고 쓰는 거라서 더더욱 그렇게 되고 있다. 아 그래서 로우레벨을 알아야하느냐고? 아니 그렇진 않다. 그러나, 로우레벨을 알아야만하는 분야들도 좀 있다는 것을 알아 줬으면 한다. 뭐 그렇기에 아무도 이해를 못 하는 기술이 탄생했지만 :(

  1. 부탈린 2019.11.05 09:46

    정말 공감되는 글이네요
    블록체인 생태계를 보면 아직도 한탕해서 돈벌고 빠지자란 마인드가 정말 강합니다.
    별 내세울거 없는 기술인데도 엄청나게 포장해서 당장 이거 안배우면 다가올 미래에
    대응 할 수 없단 식으로 고가의 강의료를 내고 듣게 합니다.
    컨퍼런스나 세미나도 대부분이 유료 입니다.
    그들만의 리그에 호구하나 물어서 등쳐먹자 이런 느낌입니다.

댓글을 입력하세요

2019.10.22 21:42 - Bengi

2019.10.22 인터넷 안에 사람있어요!

1. 게임하고 싶다. 홈월드 3 예약 구매를 걸어놨지만, 정말 홈월드 3이 나와도 게임을 제대로 할 수 있는지는 알 수 없는 것이다.

2. 요즘 고등학교 친구들을 안 본지 거의 4~5년이 넘어간 것 같다. 운이 좋게 같은 대학을 온 분들 경우에는 좀 이야기가 다르지만, 사실 대학교에 와서 친구 혹은 동기라고 부르는거지, 딴 대학교에 갔으면 연락도 안했을 사람들이 많다. 사실, 그렇기에 대학이라는 네트워크는 나의 인생에서 의외로 큰 몫을 차지한다는 걸 요즘 들어서 많이 느낀다. 대학 네트워크에서 몇 동아리의 중점적인 역할을 했고, 거기서 만난 사람들을 트위터에서... 다시 만나고 있다는게 문제라면 문제겠지만 말이다.

3. 트위터는 특이한 구석이 있는 SNS다. 초반에는 오타쿠 위주의 커뮤니티였지만, (그 전에는 정치 계정 위주였지만) 다양한 곳에서 유저가 유입되고, 특히 컴공 혹은 프로그래밍 좋아하는 학생들이 모이기 시작하면서 어느 정도 개발을 하려면 일단 가입해 놓는게 낫지 않나 싶은 SNS로 변해버렸다. 개발자라는 특성상 IRC 채널 하나 켜 두거나, 미투데이를 하거나 (Java 개발자들이 많았었다), 뭐 몇몇 커뮤니티에서 주로 활동하는 경우가 많지만, 대부분 커뮤니티는 망했고, 남는 건 트위터에서 시덥잖은 이야기로 서로 치고 박는 일 밖에 안 남게 되었다는게 좀 더 정확하다고 해야할까?

4. 트위터 말고 개발 관련 정보를 얻을 수 있는데가 점점 없어지고 있다. 일단, 블로그는 죽었고, 페이스북은 쓸 사람만 쓰고, IRC도 뭐 이제 구시대의 유물이고, 디스코드는 좀 괜찮긴해도 몇몇 채널을 제외하고는 굴러가지를 않고, 슬랙은... 폐쇄적이다. 그러니 트위터나 붙잡고 각종 대회나 컨퍼런스 이야기나 하고 앉아 있지 않는가. 거기서 사람 모여서 모각코를 하건, 밤샘을 하건, 술을 마시건 뭐 개발 이야기를 하고 정보를 교류 할 수 있다면 그걸로 족한 것 같다.

5. 그래서 나에게 남는 건 대학 생활이었던걸까? 트위터였던걸까? 트위터에 있는 대학 동기만 남은게 아닌가 싶기도하고... 흠...

'일상생활 > 하루하루' 카테고리의 다른 글

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
블록체인 + 스타트업 = ???  (0) 2019.08.11
2019.07.26  (0) 2019.07.26
2019.05.30  (0) 2019.05.30
2019.03.31 잡생각  (0) 2019.03.31

댓글을 입력하세요

2019.10.03 22:20 - Bengi

2019.10.03

1. 사실 트위터를 하면서 별 의미를 안 갖게 되는 것은, 인터넷이 으레 그렇듯이 정보보다는 노이즈가 많고, 제대로 굴러간다기보다는 혼돈스러운 무정부 상태를 잘 보여준다는 것이다. 이런 상황에서  별다른 의미를 갖고 위키를 운영하거나 어떤 규칙을 갖고 있는 사이트를 운영한다는 것은 상당히 힘든 일이다. 운영진은 바뀌기 마련이고, 시간과 돈, 현생의 문제가 겹치게 된다면, 커뮤니티가 죽게 되는 것은 시간 문제이다. 아니면, 새로운 땔감 -정치적 요소, 새로운 놀 거리- 가 들어와야하는데, 이러한 안정적인 땔감 보급의 경우 커뮤니티 유저의 신규 유입에 의해서나 유지가 된다. 이런 상황에서, 신규 유저들의 특색을 존중하면서, 기존 규칙을 고쳐나가는 일은 엄청나게 힘들고 지켜지기 힘든 일이다. 특히나, 트롤링이 일종의 문화로 잡혀진 이 시점에서 블로그를 제외한 매체 중에서 어떠한 곳도 안정으로 글을 써 내려갈 수 있는데가 없다는 것으로 귀결이 되게 되는데, 블로그는 영토라는 개념 중에서 제일 작은 개념인 나만의 포스트 공간이라는 특징을 갖고 있다는 것을 알 수 있다. 이오공감이라던지, 갤러리 같은 형태로 운영만 안 된다면 일종의 언론 형태를 띌 수 있다는 것을 분명히 알 수 있을 것이다.

 

2. 반면 트위터 같은 소규모 전쟁터나, 페이스북 같은 장문의 글을 쓸 수 있는 SNS 조차도 차단과 비공개/공개 글의 차이 덕분에 글이 고루고루 퍼지지 않는다. 자신이 속해있는 네트워크나 유저들의 글들을 조합하거나, 이를 퍼다 나름으로써 일종의 암묵적 규칙이 지켜지게 되는데, 이런 상황에서는 대부분 모든 사용자는 완벽한 그림을 보지 못하게 된다. 제한적 그림이나, 삭제된 글의 캡쳐만을 부분적으로 보면서 전체 사건을 추론을 해야하는 지루한 일들이 지속되는 것이다.

 

3. 사실 이런 문제는 하루 이틀 있었던 일은 아니다. 대부분 페이스북에서 저격을 하거나 저 새끼 누구야? 하면, 이제 트위터에서 반응이 오고, 몇 개월간 활동도 없었던 페북 계정이 갑자기 살아나서 사자후를 토했던 일이나 (매번 술자리 가면 이 이야기가 빠지지 않는다), 역으로 페이스북 글 때문에 트위터가 불 탔던 일들은 당연하게도 자주 있는 일이다. 나는 이 상황을 아주 긍정적으로 보고 있는데, 일단 고인물이나 폐쇄적인 커뮤니티가 어떻게든 상호작용을 해 내고 있다는 것이고, 공개글이라는 형태로 장문의 글은 페이스북으로, 단문의 글은 트위터나 그에 준하는 디스코드/IRC에서 이야기가 오간다는 걸 의미한다. 이를 통해 유저간 교류나 기존에는 별로 만날 수 없었던 인력 풀들의 섞임이 가능하다는 것은 기존의 커뮤니티와는 사뭇 다른 모습일 것이다. 실명을 걸거나 실명에 준하는 닉네임을 걸고 이야기를 나눌 수 있다는 점은 토론의 장을 키울 수 있는 부분이기도하고, 최소한 어느정도의 -나쁘게 말하면 학력적, 경력적인 부분을 방패로 쓰는- 검증 과정을 거칠 수 있다는 점인데, 이를 통해서 의견의 수용 여부를 대중이 정할 수 있다는 점이다.

 

4. 휴버트 드레이퍼스의 인터넷의 철학에서 말했던, 인터넷에서는 인간의 판단 능력이 상실 되는, 아무런 의미 없는 이야기들의 울림들의 연속일 것이라는 저주를 정말로 좋아했었는데, 잠시만이라도 나는 하버마스의 공론장을 믿기로 했다. 일종의 준 엘리트주의나, 민주주의와 엘리트주의의 미묘한 공존이 되겠지만, 실력에 의거하거나 전문가 집단의 이야기에 기반한 형태의 논의 지속이 될 수 있도록 하는 것이 최종적인 목표인 것인데, 이러한 형태가 과연 민주주의적인지는 확신이 들지는 않는다.

 

5. 그렇다면 민주주의적이지 않은 방법을 택하는 것이 옳지 않은 것인가라는 질문을 할 수도 있을 것이다. 실제로 현재까지 살아남은 커뮤니티는 3~7일 동안의 게시글 쓰기 중단이나, 커뮤니티 규정을 통한 추방제 등이 있는 곳들이었다. 예외적으로 디씨가 있긴하지만, 디씨 자체도 마이너 갤러리의 활성화와 암묵적 룰이라는 부분에서는 큰 줄기를 공유할 것이라고 보고 있다. 뭐, 여튼, 사실 모든 인간에게 선한 의지와 선한 방향으로의 진전이 없을 것이라고 한다면, 감시와 처벌, 그 자체가 시스템을 유지하는 무언가가 되지 않을까 싶기도 한 거이다.

 

6. 이런 뻘소리를 한 건, 사실 실력과 경력으로 사람을 깔아 뭉게는 것이 적절한지에 대해서 의문이 많이 들지만 -특히 별의별 이야기를 다 들어줘야하는 입장에서는 골치가 아프더라도 그래야하지 않는가 싶지만- 논의적으로 봤을 때, 어느 정도 중간에 커트가 필요한 것도 사실이고 실제로 요 근래, 개발자의 제대로 된 정보를 공유하자는 위키를 만들려고 하는 프로젝트나, 블로그 글들을 모아 해커 뉴스처럼 운용하려고 하는 사람들이나, 개발자용 블로그들을 만드는 경우들을 종종 보았기 때문이다. 사실 이러한 시도가 개발 관련된 부분에서만 실험적으로 있었던 것은 아니다. 한국 철학 뭐시기.... 협회에서도 사이트를 운영했었고 (유실 되었다) 많은 사이트들이 이러한 노력을 했었던 건 사실이다. 이런 흐름을 다시 복원하고 전문가주의 혹은 전문가 집단에 의한 정보 선도 이런 것을 다시 시도한다면, 최소한 나무위키 정도는 엎지 않을까 싶은 것이다.

 

7. 의미가 없는 일들이긴 하지만, 누구는 내 프로젝트를 보고 기억을 해줬고, 누구는 내 프로젝트를 도와줬다. 뭐 지금 와서는 시간이 없다는 핑계로 하지를 못하지만, 한 번 다시 해봐야할 떄가 아닌가 싶다.

 

'일상생활 > 하루하루' 카테고리의 다른 글

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
블록체인 + 스타트업 = ???  (0) 2019.08.11
2019.07.26  (0) 2019.07.26
2019.05.30  (0) 2019.05.30
2019.03.31 잡생각  (0) 2019.03.31

댓글을 입력하세요

2019.08.24 20:52 - Bengi

블로그의 전체적인 기조를 바꿨습니다.

알폰소 무하

 

1. (구) 프라치노 스킨에서 심플 스킨으로 스킨을 변경하였습니다. 이유는 라이센스 위반의 소지, 프라치노 스킨의 유지 보수의 힘듬, 그리고 신규 스킨으로 블로그를 좀 바꾸고 싶었기 떄문이라고 하면 될까요? 일단, 다양한 스킨들을 테스트 해 봤지만, 일단 심플 스킨이 제일 나은거 같아서 선택을 하였습니다. 요즘 스킨들은 대부분이 포스트에 이미지를 넣을 것을 가정하고 만들어져 있어서, 블로그를 낙서장처럼 글만 쓰는 사람들에게 적합한 스킨이 별로 없었습니다. 심지어 심플 스킨도 모든 글에 사진을 올린다는 가정을 하고 만들어진 걸로 보이는데, 이 부분은 천천히 코드를 수정하면서 해결을 해야할 것 같습니다.

 

2. 블로그의 과거 글들이 해금됩니다. 해금이라고 하니 좀 리듬게임 덕후 같아 보이네요. 앞서 이야기를 해보자면, 2010년도에 블로그 데이터가 꼬인 대형 사고가 있었던 이후로 미디엄으로 옮겨갔던 적이 있습니다. 이 이후에 하도 불편해서, 다시 티스토리로 돌아왔지만요. 그 과정에서 대부분의 글들을 비공개처리를 했던 적이 있습니다. BenjaminBlog.net 이라고할 수 있는 옛 블로그와 Bengi.kr이라고 하는 신 블로그의 글 통합과 데이터 이전이 좀 문제가 많았었는데, 현재 XML로 백업된 데이터를 다 찾아서 끼워 맞추는 작업을 하고 있습니다. 저는 인터넷에 올라온 글은 영원히 남아야한다는 주의라서, 일단 중고등학교에 썼던 글들부터 싹 다 공개로 전환하는 작업을 할 예정입니다. :)

 

3. 티스토리는 지속적으로 운영될 의지가 있어 보입니다. 테터툴즈의 한계로 PHP로 돌아가기는 하지만, 전반적인 스킨 수정과 반응형 사이트를 입맛대로 만들 수 있다는 점은 아직도 매력적입니다. 카카오는 브런치라는 대체재가 있음에도 지속적으로 운영을 할 생각인가 봅니다. 텍스크큐브 닷컴이라던지, 미투데이라던지, 다양한 서비스들이 신규 서비스 런칭 이후 유지보수가 안 되다 망하는 경우가 잦았는데, 이 부분들에 대해서는 2-3년간 지켜본 결과 계속 쓸만한다는 판단을 내려 지속적으로 쓸 예정입니다.

4. BenjaminBlog.net 도메인을 살렸습니다. 뭐 여기저기 팔렸다가 다시 원 주인 (?)으로 돌아가는 거지만, 지속성을 위해서 새로운 구 블로그를 테터툴즈 혹은 그에 준하는 서비스로 파고, 거기서 여기로 리다이렉트 되도록 셋팅을 할 예정입니다. 뭐 복잡한 절차이지만, 일단은 이렇게 하는게 제일 마음에 놓일 것 같습니다.

댓글을 입력하세요

2019.08.17 22:35 - Bengi

2019.08.17

1. 파이콘에서 "혹시 XXX님 아니신가요? 깃헙 레포 YYY 만드시고, ZZZ 회사 운영하시는 분?" 이라고 인사를 받은 충격적인 (...) 경험을 겪고 나서, 음 어 행실을 좀 더 바르게 해야하지 않았나 싶은 느낌이 들었다. 뭐, 아니 근데 솔직히 아니 으악, 진짜로 도대체 왜 사람들이 내 이름을 기억하는지, 왜 내 얼굴을 아는지 (뭐 당연하게도 깃헙에 박아놨으니?) 그리고 왜 내 프로젝트들에 대해서 신경을 쓰고 있는지에 대해서는 정말로 잘 모르겠다. Y 프로젝트는 2년 전에 별 100개 넘게 받았던 프로젝트이고, 8할 정도 글을 내가 쓴 거긴하지만 그렇다고 타인의 도움이 없었던 것도 아니고, 운이 좋게 페이스북도 타고 뭐 이런 저런 일들이 있어서 (사실 나중에 지인이 투고를 했다는 걸 알았다. 그 때 스타수가 50개를 넘어간 시점이었지만) 성공을 했었던 거고, 지금 와서 봤을 때에는 다시 재개를 하고 싶다는 생각이 들지만, 깃헙의 특징상 텍스트 문서 이력 관리는 말처럼 쉽지가 않고, 뭐 회사는 외부에서는 멋진 회사로 보이지만 (1년 정도 버텼으니 뭐 회사 꼴은 갖춰지긴했다) 내부적으로는 아직도 문제가 많다. 이런 일들을 하도 겪다보니, 내 재능이 겉으로 보기에는 괜찮은 것처럼 보이도록 만드는게 아닌가라는 생각이 들 정도이다.

 

2. 출판 제의나 프로젝트 제의나 헤드 헌팅의 경험이 없는 건 아니다. 한 두 번씩은 있었고, 그 때마다 드는 생각은 "도대체 왜?"였었다. 출판은 저 정도로 글을 6개월 동안 잡고 쓸 능력이 없으니 던졌고, 프로젝트 제의는 내가 프로젝트를 제대로 관리한 경험이 없었으니 싹 다 거절했고, 헤드 헌팅은 대부분 스타트업에서 준 만능 개발자가 필요하니 온 경우였지만, 결국 내가 그 포지션에 맞을 거라는 외부 판단 아래서 나에게 연락을 한 것이라고 생각한다. 결국 외적으로 내가 의외로 괜찮아 보인다는 게 제일 큰 문제일텐데, 사실 이거 때문에 스트레스를 의외로 많이 받는다.

 

3. 실력 대비 평가가 높은 케이스 혹은 사람들의 최후는 대부분 비슷하다. 보통 피터의 법칙이라고 하는 경영학 법칙으로 설명을 주로 하는데, 사실 무능력함이 드러날 때까지 계속 평가가 올라가는 케이스가 그것이다. 아니 정확히 말해서 무능력함이 드러나는 시점이 그 사람이 갖는 명성의 한계치인데, 보통 이 시점이 오는데까지 걸리는 시간은 대충 실력보다 더 높은 자리에 올라간지 2~3년인 거 같고, 대부분 결국 자기가 할 수 있는 수단과 방법을 가리지 않고 대외적인 평판과 실력으로 커버할 수 없는 고인물 종착역에 다다르게 된다. 뭐 그런 경험들도 있었고, 대학 다니면서 배운 것과 회사 운영에 참여하면서 배운 것들이 대부분 그것이었다. 실력, 발목 잡는 타이밍, 손절 타이밍, 매몰비용 등등으로 다가왔지만, 결국 내 자신도 내 한계에 의해서 실패하는 경험을 꽤 많이 했었었다. 그게 작은 3일짜리 프로젝트인 해커톤일 수도, 1~2년 짜리 스타트업일 수도, 몇 개월짜리 토이 프로젝트일 수도 있었지만, 이런 실패 및 도주의 경험은 언제나 쓰디쓴 무언가였다.

 

4. 나는 자신이 이 글에서 서술한 특징에서 벗어난 적을 본 적이 없다. 결과적으로 상당히 방어적으로 행동할 수 밖에 없는데, 투입 시간 총량과 아웃풋 총량을 비교하면서, 결국 갈 수 없는 길이나 투입 비용에 따른 산출물을 계산해서 적정 포인트를 뽑아내고, 대충 어디 쯤에서 발을 뺄지를 많이 고민하게 된다는 것이다. 결국 외부 평가나 성과라는 지표에 상당히 강박적이게 되는데, 특히 첫 꼭지에서 언급한 것들이 제일 스트레스를 받게 하는 주 요인이다. 사실 깃헙 프로젝트도, 회사도, 뭐 내가 해왔던 대부분의 일들은 우연치 않게 시작해서 우연치 않게 망한 케이스이고, 정말 괜찮았던 무언가라면 지금까지 잘 굴러가고 있어야할 것들이어야만 할 것이다. 뭐 근데, 그럴리가, 손 수 하나씩 묘지에 묻어주고, 비석까지 세워놓고, Since 2017 이런거 적어 놓은게 태반인데 뭘 존경 받고 인정 받아야 할지는 잘 모르겠는 것이다.

 

5. 최대치까지 성장을 언제나 못했었다. 중간에 때려쳤었고, 이것저것 할 만한 것들을 찾아다녔었고, 그리고 뭐 여기까지 와 버렸다. 예전에는 능력을 인정 받고 싶었기에 가성비 찾아다니면서 그랬었겠지만, 지금은 벌어먹고 살아야하기 때문이니 이런일을 하면 할 수록 자괴감이 든다. 아니 뭐 이런거 해서 이 돈 받아먹고 살아야하나, 내 실력으로 이걸 해도 되는가, 내 실력으로 이렇게 말해도 되는가에 대한 고민은 언제나 나를 옥죈다. 뭐 블록체인이라는 산업을 잡은 것도, 주요 플레이어가 만만하고 시장 성숙도가 떨어지기 때문이 아니었던가. 난 내가 무엇을 하는지 아직도 잘 모르겠다. 뭐 그래도 유튜브 채널 안 만들고, 슬랙 프라이빗 채널 안 만드는게 다행이지... 큿....

'일상생활 > 하루하루' 카테고리의 다른 글

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
블록체인 + 스타트업 = ???  (0) 2019.08.11
2019.07.26  (0) 2019.07.26
2019.05.30  (0) 2019.05.30
2019.03.31 잡생각  (0) 2019.03.31

댓글을 입력하세요