# Chainlink + 디센트 밋업 참석 (2022.07.30) - ChainLink 는 오프라인 데이터와 온체인 데이터를 연결하는 오라클 중 가장 오래되고 유명한 회사다. 경쟁사로는 API3 와 Band Protocol 이 있다고 한다. 이 날은 ChainLink 와 하드웨어 월렛 개발 회사인 `아이오트러스트 (IOTRUST)` 가 함께 기획한 밋업이었다. - 아이오트러스트는 원래 IoT 관련된 사업을 하다가, 디센트라는 하드웨어 월렛을 개발하면서 회사 내 작은 블록체인팀을 구성했다고 한다. 그러다가 디센트가 유명세를 타자, 회사 이름보다 제품 이름이 더 잘 알려진 케이스가 되었다. - 왜 이 두 회사가 밋업을 기획했을까 라는 질문이 가장 먼저 생각이 들었다. 그 이유는 아마 디센트 서비스에서 ChainLink 의 기능을 사용해서 그렇지 않을까 한다. 사실, 스마트 컨트랙트를 개발한다고 하면, 랜덤값 생성과 같은 블록체인 위에서 기술적으로 구현하기 곤란한 기능들을 ChainLink의 VRF 기능을 활용하는 경우가 종종 있다. 아마 디센트 또한 디센트 앱 상에서 구현하는 블록체인 기능 중에서 ChainLink의 라이브러리를 사용하는 등의 접점이 있을 것으로 추측해본다. ![](https://i.imgur.com/5FXdzrw.jpg) - 장소는 양재역과 강남역 사이 ADM 갤러리였다. 기존에 갤러리로 사용된 공간을 임대한 것으로 보여 생각보다 강의실보다는 힙한 갤러리 느낌이었다. 내가 상상했던 모습은 책상과 의자가 다닥다닥 붙어있는 것을 강의실 모습이었는데, 의자만 있고, 유명한 팝송도 나오고 있어서 굉장히 쿨(?)한 느낌이 났다. - 입구를 들어가 등록 확인을 하면서 스티커도 받고, 티셔츠도 받았다. 예전에 방문했던 많은 IT 컨퍼런스들 - 예를 들어, 오픈스택 코리아나 AWS, MWC 나 CES - 의 추억이 다시 떠올랐다. 그 당시에 이곳저곳 부스를 다니면서 굿즈를 모아 다녔고, 행사에 참여한 사람들과 활발하게 소통했던 시기가 있었다. - 밋업의 진행은 <인트로 - 세션1 - 세션2 - 식사 및 네트워킹> 순서로 진행이 되었다. 세션 1과 2 모두 디센트 쪽에서 준비한 세션이었다. 이러한 구성을 봤을 때, 아이오트러스트 쪽에서 디센트 지갑을 홍보하는 겸 네트워킹하는 자리를 갖고 싶었고, ChainLink 는 타이틀 제공과 인력 지원 등을 해준 것으로 보인다. 세션 1은 하드웨어 지갑 (특히 디센트 지갑)이 얼마나 기술적으로 안전하게 되어 있는지에 대한 내용이었고, 세션 2는 Mass Adoption 을 위해서 월렛이 어떤 역할이 되어야 하는지 방향을 제시하는 시간이었다. ![](https://i.imgur.com/yLSz5sW.jpg) ### 세션 1 #### 지갑 주소가 생성되는 과정 - 지갑을 생성하면 개인키-공개키 알고리즘에 따라서, 개인키와 공개키가 생성된다. 개인키는 메시지를 보내는 사람이 자신의 로컬에 저장하는 키로, 메시지를 암호화시킬 때 사용하는 키이다. 공개키는 외부에 공개되어 있어 누구나 사용할 수 있는 키로, 메시지를 받는 사람이 공개키를 통해서 암호화된 메시지를 암호화 해제를 시킬 수 있다. - 지갑의 주소는 공개키 기반으로 생성되는데, 블록체인 네트워크마다 생성 방식이 조금씩 다르다. 즉, 지갑을 생성할 때 공개키를 사용하는 것은 모든 네트워크가 동일한데, 지갑을 생성하는 규칙은 조금씩 다르다는 것이다. 예를 들어, 비트코인 주소와 다르게 이더리움의 주소는 0x 로 시작하도록 되어있다고 한다. - 그러면, 만약에 개인키를 변경하면 어떻게 될까? 그러면 주소가 바뀌게 된다. 개인키를 변경하면 한 쌍이었던 공개키 역시도 변경되고, 공개키에 기반해서 만들어진 주소도 변경된다는 것이다. 따라서, 한번 생성한 개인키는 절대적으로 잃어버리지 말아야 할 중요한 키이다. - 하지만 이렇게 생성된 개인키는 지갑을 사용할 때 여간 사용성이 떨어지는 방법이 아니다. 개인키는 아주 긴 (256 bit) 문자열인데, 사용자들이 하나라도 입력을 잘못하면 잘못된 개인키를 입력하게 된다. 더군다나 그렇게 긴 문자열을 암기하고 다닐 것이라고 기대하기도 힘들다. - 여기서 더 나아가서 만약에 내가 하나의 지갑이 아니라 여러 개의 지갑을 보유하고 있다면, 보유한 지갑의 개수만큼의 개인키를 보관해야한다. #### Hierarchical Deteministic Wallet (HD Wallet) - 이러한 문제를 해결하기 위해서 Hierarchical Deterministic 지갑 (HD 지갑) 이라고 불리는 방법이 제안되었다. 이 HD 지갑은 이름 그대로 여러 지갑들을 계층 구조로 관리하고, 전체 지갑은 하나의 마스터키로 관리된다. 그리고 그 지갑 주소의 생성은 결정론적인 방법에 의해서 생성된다 하여 HD 지갑이라고 불린다. 따라서, 이 마스터키를 갖고 있으면 지갑이나 체인에 관계없이 모든 개인키를 하나의 키로 관리할 수 있다. #### Mnemonic code - 여기서 한걸음 더 나아가서 이 키를 외우고 있기 어렵기 때문에 사람이 이해하기 쉬운 단어들의 집합으로 이 마스터 키를 관리할 수 있는 방법을 제안했다. 그 방법이 많이 알고 있는 `니모닉 (mnemonic)` 이다. BIP-39 에서 제안한 방법으로, 12개의 니모닉이거나 24개의 니모닉으로 구성할 것인지 결정한 후 개인키를 11bit 씩 잘라서 그 값에 해당하는 단어를 선택하고, 그렇게 생성한 일련의 단어들을 우리가 니모닉이라고 이야기 하는 것이다. #### 하드웨어 지갑의 보안 기술 1. 공급망 공격 - 가장 단순한 공격으로, 하드웨어 지갑이 공급자에서 소비자에게 전달되면서 발생할 수 있는 물리적 공격이다. 공격자는 중간에 하드웨어 지갑을 탈취해서 개인키를 해킹한 뒤 원래대로 지갑을 전송할 수 있다. 아무것도 모르는 사용자는 하드웨어 월렛에 자산을 보관하다가 자신도 모르게 자산이 빠져나갈 수 있다. - 이를 해결하기 위해서 디센트에서는 보안씰을 부착하여, 소비자가 직접 씰을 제거하도록 했다. 만약에 보안씰이 제거된 상태로 배송이 된다면 소비자는 그 지갑이 안전하지 않다고 판단할 수 있다. 2. 물리적 해킹 - 공급망 공격 외에도 소비자의 자산이 들어있는 하드웨어 지갑을 탈취하여 하드웨어적인 공격 - 예를 들어, X-ray 등 - 을 할 수 있다. 하드웨어의 물리적인 동작을 X-ray를 통해서 해킹을 한다는 의미이다. 또한, 전기적인 신호를 줌으로써 펌웨어의 동작을 방해할 수 있다. 예를 들어, A 라는 코드는 변수 V 가 True 일 때 동작하고, B 라는 코드는 False 일 때, 동작한다고 하면 이렇게 작성한 코드는 전기적인 신호에 의해서 오작동 할 수 있다. 일부러 전기적인 신호를 줌으로써 A 라는 코드가 동작하도록 강제할 수 있다는 의미이다. - 이러한 문제를 해결하기 위해서 별도의 보안칩을 사용한다. 이 보안칩이 하는 역할은 X-ray 와 같은 외부의 물리적인 영향을 감지하고 그 안에 있는 데이터와 코드를 보호한다. 그리고 개인키가 보안칩 밖으로 나가지 못하도록 처리되어 있다고 한다. 따라서, 지문 데이터나 서명, 핀 정보 심지어 트랜잭션까지도 보안칩 안에서 관리하도록 한다. 두번째 전기적인 신호에 의한 오작동을 방지하기 위해서 펌웨어는 시큐어 코딩을 해야하고, 한 예로, V 라는 변수가 True, False 값을 갖는 것이 아니라 0x5A5A 와 0xA5A5 를 갖도록 한다. 이 값은 임의로 생성된 것이 아니라 적절한 1 과 0 을 조합한 값으로 전기적인 신호로 생성하기 어렵도록 만든 값이라고 한다. 3. 중간자 공격 (Man In the Middle Attack) - 데이터를 전송할 때, 수신자를 변경한다는 등의 중간자 공격이 발생할 수 있는데, 하드웨어 지갑의 디스플레이를 통해서 내가 지금 처리하는 트랜잭션이 올바른 것인지 확인하는 방법을 제시한다고 한다. ![](https://i.imgur.com/cOuSwNx.jpg) ### 세션 2 - 첫번째 세션이 기술적으로 하드웨어 지갑을 보호하는 방법에 대해서 다뤘다면, 두번째 세션은 이러한 보안의 불편함을 극복하고 사용성을 높이고 하드웨어 지갑의 mass adoption 을 하기 위한 방향에 대한 내용을 다뤘다. - 현재 지갑을 사용하는 방법은 크립토와 무관한 사람들이 사용하기 진입장벽이 높다. 그리고, 특정 지갑에 자산이 없으면 가스비도 지불하지 못하는 상황이 있기 때문에, 다른 지갑에서 송금을 하는 등 사용성이 부족한 측면이 있다. - 디센트에서 제안하는 `프로젝트 땡땡땡` 은 아래 사진에서 나온 것과 같이 월렛을 하나의 플랫폼화 시키고자 하는 노력이 보인다. 이 프로젝트에서 진행하려는 내용은 다음과 같다. 1. 소셜 로그인 기능으로 web3 서비스 접속 2. 자동으로 지갑 생성 3. 코인/토큰 자산 관리를 포함한 NFT 마켓 플레이스에 접근 4. 토큰 전송시 필요한 가스비는 보유한 자산에서 차감 5. 보유한 자산을 대시보드로 확인 6. 소유자 자산 기준으로 신규 프로젝트 및 사업정보 큐레이션 서비스 - 이러한 기능들은 web2 의 기능과 web3의 기능을 연결시키기 위한 노력으로 사용자들의 지갑 사용성을 높이기 위한 노력으로 보인다. 여기서 한 발 더 나아가서 블록체인의 '거래 투명성'이나 '디지털 아이덴티티'와 같은 web3의 특징을 활용한 노력들도 보인다. ![](https://i.imgur.com/mcFUTYL.jpg) - 아이오트러스트가 지갑 사업을 하면서 받았던 마켓 피드백에 대한 내용도 볼 수 있었다. 대부분은 사용성 측면에서의 걱정이 많았다. 예를 들면, 지갑이 여러 네트워크를 지원하는지, 여러 지갑들을 통합해서 자신의 지갑을 한 눈에 관리할 수 있는지에 대한 요구가 있었다. - 흥미로운 점은 사용자 뿐만 아니라 블록체인 프로젝트의 목소리도 들을 수 있었다. NFT 민팅을 빠르게 할 수 있는 솔루션 등에 대한 요구들이 있었고, 프로젝트를 홍보할 수 있는 플랫폼이나 솔루션에 대한 니즈가 있음을 알 수 있었다. - 아이오트러스트는 하드웨어 월렛 기업으로 시작했지만, 결국에는 블록체인 산업에서 사용자와 블록체인 기업들을 연결하는 하나의 플랫폼화가 되고자 하는 의지가 있어보였다. 이 점은 한편으로 동의를 하는게, 지갑은 결국 사용자들이 크립토를 접하기 위한 가장 앞단에 있는 인터페이스다. 마치 카카오톡이 친구와 가족들과 대화하기 위한 창구가 되는 것처럼, 크립토 지갑도 그러한 역할을 할 것이고, 카카오톡이 메신저에서 하나의 플랫폼으로 확장했던 것처럼, 크립토 지갑도 하나의 플랫폼이 될 가능성이 있다고 생각한다. ![](https://i.imgur.com/Meys5qF.jpg) - 이렇게 2개의 세션이 끝나고, 간단한 퀴즈로 경품 증정을 진행했다. 나는 운 좋게 경품으로 디센트 지갑을 받을 수 있었고, 하나 사야겠다고 생각하던 찰나에 좋은 기회가 되어 지갑을 얻을 수 있었다. - 이후 간단한 식사를 하면서 네트워킹을 했는데, 예상치 못하게 많은 사람들과 교류를 한 것 같았다. 블록체인 산업에서 개발하고 계신 분들과 이야기를 나누고, 직장을 구한 학생 등 다양한 사람들과 이야기를 나눌 수 있었다. 다들 블록체인에 대한 열정을 갖고 있고, 여기 밋업 뿐만 아니라 다른 활동도 하는 것을 보면, 누가 시키지 않아도 자발적으로 활동하는 모습에서 블록체인 산업의 미래가 밝다는 희망도 품을 수 있었다. ![](https://i.imgur.com/40RPbgy.jpg)