매주,
화요일 - General 🌎

목요일 - Tech 💻
월/수/금 - ??? 💸
(많은 관심과 아낌없는 피드백 부탁드립니다!..💕)
2022년 6월 23일(목) W4 도깨비 레터_테크편 줄거리..🔮

지난주,
솔라나 NFT 만들기!에 이어서,

이번주,
크립토 자산을 보관, 전송하는 대표적인 지갑 Metamask(메타마스크)에서 Private Key(개인키)는 어떻게 관리 되는지 알아보겠습니다!🙌
안녕하세요, Ovadix입니다.😎 오늘은 메타마스크는 privateKey를 어떻게 관리하는지 살펴 보겠습니다:D, Follow ME!🤗
👀 메타마스크란?
메타마스크란 이더리움(ETH) 등 가상자산(암호화폐)을 보관, 송금, 관리할 수 있는 지갑으로 구글 웹브라우저에서 플러그인 방식으로 사용되는 크롬 확장 프로그램입니다.

초창기의 메타마스크는 크롬 브라우저에서만 작동하여 이더리움 네트워크 상에서 이동하는 것만 가능했습니다. 하지만 현재는 파이어폭스, 오페라, 브레이브 등 다양한 브라우저 및 모바일에서 바이낸스 스마트 체인, 폴리곤, 아발란체 등 다양한 블록체인 네트워크상에서의 자산 전송을 가능케합니다. 또한, 디파이 형태의 스왑 기능이나 기업형 메타마스크 지갑 등 다양한 기능을 제공하며 서비스 영역을 확장하고 있습니다.
🤔 메타마스크를 왜 사용할까?
최근 활성화되고 있는 디파이나 nft 등 다양한 형태의 서비스를 이용하고자 하는 경우 블록체인 상에서 활용이 자유로운 지갑이 있어야 하는 경우가 대부분이기에 메타마스크가 필요한 것입니다.

물론 메타마스크를 꼭 사용할 필요는 없습니다. 사실 메타마스크는 가상자산을 보관하는데 있어서 도움을 주는 프로그램 중 하나입니다. 각 해당되는 네트워크(아발란체,솔라나,클레이튼)에는 대표하는 지갑이 존재합니다. 다만 메타마스크는 코인시장에서 2인자로 대표하는 이더리움 지갑으로 나왔어서 많은 사용자들을 선점했으며,다른 네트워크의 코인도 등록할 수 있기때문에 많은 유저들이 사용하고 있습니다.
🔑 메타마스크에서 privateKey란?
먼저 우리는 메타마스크를 만들게 될때 12자리의 니모닉 코드와 비밀번호를 입력하게 됩니다. MetaMask는 어찌보면 HDWallet과 같은 구조이기 때문에 12자리 니모닉코드를 통해서 무수히 많은 privateKey를 생성할 수 있습니다.

무수히 많은 privateKey를 생성할 수 있다는 말은 사용자가 무수히 많은 계정을 생성 할 수 있다는 말과 같습니다. 그 이유는 priavetKey → publicKey → account 순으로 추출이 가능하기 때문에 최우선적으로 PriavteKey가 시초가 됩니다. 또한 트랜잭션을 보내는 과정에서 sign을 하기위해서는 priavetKey가 필요하기 때문에 MetaMask는 어떻게 privateKey를 관리하는지 알아보겠습니다.
 👂 privateKey관리를 어떻게 할까?
우선 계정을 생성하는 과정은 생략하도록 하겠습니다. 우리가 현재 이 부분에서 주요하게 봐야할 곳은 로그인 패스워드이기 때문입니다.
메타마스크에서 마우스 오른쪽 버튼을 클릭하게 되면 확장 프로그램 관리 tab이 나오게됩니다. 확장 프로그램 관리 메뉴를 클릭 하시면 설정 탭이 열리게 되고 아래와 같은 화면이 나오게 됩니다.
□ 개발자 모드가 켜져있는지 확인 ✅

이 상태에서 backgrount.html 을 클릭하면 DevTools 사이드에 보이는 창이 켜지게 됩니다. 실제로 MetaMask는 이더/토큰을 누군가의 송금을 하거나 스마트 컨트랙트의 특정 함수를 실행시키기 위해선 SendRawTransaction을 하기 전에는 해당 트랜잭션 Data를 Signing을 해야합니다. Signing을 할 때 필요한 정보가 바로 Private Key인데 MetaMask는 Chrome Local Storage 에서 이 값을 관리하고 있습니다.
#DOKKAEBI LETTER
도깨비 레터 Editor 절찬리 모집중..!💕🔮

블록체인, Defi, NFT, DAO, Web3.0 등 자신이 관심있는 주제로 꾸준히 인사이트를 공유하고 싶은 분이면 누구나 환영합니다!🙌 공유하고 피드백 받으면서 함께 성장 해 봐요!🚀

💌E-mail💌: dokkaebi.dao@gmail.com
🔮 How to use the Vault Decryptor with the MetaMask Vault Data
메타마스크 공식 FAQ 중 위의 글을 확인하면 어떻게 니모닉 코드를 추출할 수 있는지 방법이 나와있습니다.
  • 니모닉 코드 추출하기

조금 전에 연 MetaMask의 backgrount.html 디버깅 창 콘솔에 아래와 같은 명령어를 넣어보자!

chrome.storage.local.get('data', result => {
    var vault = result.data.KeyringController.vault
    console.log(vault)
})
위의 추출된 데이터를 Vault Data라고 부르는데 이 Vault Data를 통해 내가 MetaMask 로그인 시 입력한 패스워드와 결합하여 특정 Decryptor 소스를 통해 니모닉 코드를 추출 할 수 있습니다.
위의 Site가 Vault Data를 Decryptor 할 수 있는 곳입니다. 온라인 상 해독을 할 수 있는 곳으로 아래와 같이 Textarea에 추출된 Vault Data를 넣고 내가 MetaMask에 지정한 패스워드를 Input 박스에 넣어 [Decrypt] 버튼을 눌러 해독하면 아래 결과로 Array Type의 데이터가 추출 되는 것을 확인할 수 있습니다.

[{"type":"HD Key Tree",

"data":{"mnemonic":"12단어","numberOfAccounts":3,"hdPath":"m/44'/60'/0'/0"}},

{"type":"Ledger Hardware","data":{"hdPath":"m/44'/60'/0'/0/0","accounts":[],"accountDetails":{},"bridgeUrl":"https://metamask.github.io/eth-ledger-bridge-keyring","implementFullBIP44":false}},{"type":"Simple Key Pair","data":

"data":{"mnemonic":"12단어","numberOfAccounts":3,"hdPath":"m/44'/60'/0'/0"}},

해독된 데이터를 보게되면 vault data는 니모닉코드, 그리고 몇개의 계정을 생성했는지, 경로는 어떻게 되는지 등 나의 모든 계정에 대한 데이터를 비밀번호를 통해 암호화 시킨 데이터 입니다.
🤙 정리
여기까지가 MetaMask가 내 Local에 존재하는 PrivateKey를 어떻게 관리하고 있는지에 대한 부분입니다.

위에 글을 읽다가 "어? 그래서 Privatekey는 어디에 있는 건데? 니모닉코드만 보여주고 몇개의 계정을 생성했는지만 보여주고 있는데 privateKey가 어디있다는 거지?" 이렇게 생각할 수 있습니다.

그 궁금함에 대한 해답은 니모닉 코드가 가지고있다는 사실을 기억해주시면 될 것 같습니다. 혹시나 니모닉코드에 대해서 궁금하고 잘 모르는 분들을 위해서 다음 시간에는 니모닉코드와 eth-lightWallet 라이브러리를 사용해서 어떻게 계정이 생성되는지에 대해서 알아보도록 하겠습니다. 그럼 좋은 한주되세요!💕
#Disclaimer

본 자료는 투자 권유 목적으로 작성된 것이 아니라는 점 말씀 드리며, 크립토 및 web3 이해를 돕기 위한 각종 정보 제공 목적으로 작성되었습니다. 본 자료는 DOKKAEBI DAO 멤버에 의해 작성되었으며 무단 도용 및 배포를 금지합니다. 본 자료에 대한 이용 등 기타 문의사항 발생 시, 하단 메일로 전달 주시기 바랍니다.

이번주 도깨비 레터 테크편은 어땠나요?
어느 부분이 좋았고😊 / 어디가 쫌 아쉬웠는지🧐,
아래 버튼을 통해 피드백 주세요!💕
DOKKAEBI DAO
dokkaebi.dao@gmail.com
수신거부 Unsubscribe