PS. 본 내용은 "안전하고 친절한 블록체인 안내서" 도서를 기반으로 정리됐음
보이지 않는 디지털 세상의 자산, 암호화폐 활용을 위한 블록체인
- 블록체인 시작하기: 지갑 생성과 기초 보안 설정
- 개인키(Private key), 공개키(Public key)는 열쇠와 자물쇠의 관계와 같음
- 공개키로 개인키를 유추하는 것을 불가능하며, 개인키는 오직 자신만 알고 있어야 함
- 하나의 개인키에는 하나의 공개키만 갖게 되는데 공개키의 주인을 알게되면 익명성의 문제가 생김
- 이것의 대안으로 나온것이 HD(Hierarchical Deterministic, 계층 결정적) 지갑임
- HD지갑에서 사용자가 계정을 만들면 니모닉(Mnemonic, 12개의 단어 조합)을 부여 받음
- 니모닉은 시드(Seed, 해시 같이 복잡한 숫자와 문자의 조합)를 구성하기 위한 것이고 사람이 기억하기 쉽도록 일상에서 쓰이는 단어를 사용함
- 해당 단어는 2048개로 BIP-39(Bitcoin Improvement Proposal, 비트코인 개선 제안)에 정의되어 있음
- 2048개 중 1개의 단어가 선택될 확률은 2의 11승, 단어 12개가 선택될 확률은 2의 132승(132비트) 꽤나 안전함
- 시드 단어는 디지털에 저장하지 않고 직접 수기하여 여러곳에 분산 보관하는 것이 안전함
- 하드웨어 지갑을 사용하는 것도 개인키를 안전히 보관하는 방법
- 특수한 보안칩을 사용해 개인키 유출을 막아줌
- 기기를 훔쳐 물리적 해킹시도가 들어오면 자동으로 정보가 파기됨
- 기기안의 개인키로 트랜잭션에 서명하여 다시 내보냄
- 블록체인 이해하기: 채굴
- 채굴 = 작업증명 = 컴퓨터 계산 노동
- 채굴은 에너지(전기)를 디지털 노동(CPU 계산)의 형태로 변환하여 디지털 가치로 바꾸는 과정
- 채굴은 경쟁, 전파 및 검증, 합의 세 단계로 나눌 수 있음
- 경쟁 : 주사위 2개를 굴려 1,1이 먼저 나오는 사람이 승리하는 것과 같이 해시의 앞부분에 숫자 0이 몇개 들어가는지 제시해주고 이를 만족하는 해시가 나올때 까지 해시를 생성해야함
- 전파와 검증 : 해시는 입력값(트랜잭션 정보, 타임스템프 등), 논스(nonce, 임의의 숫자)으로 만들어지기 때문에 전달 받은 값으로 실제 성공한 해시가 만들어지는지 검증 후 맞으면 다른 채굴자들에게 전파됨
- 합의 : 블록체인은 전세계에 분포되어 전파되는데 상당한 시간이 소요된다. 따라서 동시에 채굴이 이루어 질수 있고, 정당한 권한을 갖춘 블록이 등장한다. 이때에는 가장 많은 블록을 소유한 체인(최신 데이터를 보유한)이 선택됨
- 채산성 확인 가능 : https://minerstat.com 에서 하드웨어 클릭
- 51% 공격 : 전체 네트워크의 51% 이상의 채굴 연산력을 장악하면 (비공개)내부적으로 블록체인을 더 빠르게 연산하는 동안 공개된 블록체인의 토큰을 팔아버리고 다시 숨겨뒀던 내부 블록체인을 공개하여 합의 시키면 팔았던 토큰이 그대로 주소에 남게되는 방식으로 공격이 가능
- 비트코인 채굴에 쓰이는 에너지는 전 세계 에너지 소비의 0.1%미만이며, 2020년 금 채광에 소비된 에너지는 약 265테라 와트시로 비트코인 채굴에 쓰인 에너지의 1.8배에 해당함. 즉, 비트코인의 유용성을 생각하면 생각보다 그렇게 큰 에너지가 쓰이는 것은 아님
- 블록체인 활용하기: 전송
- 코인을 전송하기 위해서는 본인 지갑에 잔고(Balance)가 있어야하고 주소(공개키)를 알아야함
- 블록체인의 모든 활동에는 수수료가 들어감 > 채굴 및 생태계에 이바지하기 위함
- 수수료를 많이 지불하면 더 빨리 전송이 가능함
- 전송 과정 간략 설명
- 내 개인키로 서명된 '전송 요청서'가 블록체인 네트워크로 전송됨
- 멤풀(Mempool)이라는 임시 저장소에 요청서가 보관됨
- 멤풀에 요청서가 들어간 순간 나의 지갑에서는 출금된 것으로 나타나며, 수신자 지갑에는 아직 승인되지 않은 것으로 표시됨
- 채굴자들은 멤풀의 요청서(트랜잭션) 중 수수료, 데이터크기 등을 고려해 검증 후 블록에 반영함
- 검증1 : 보내는 사람이 실제로 해당 코인을 사용할 수 있는 정당한 권한을 갖고 있는지
- 검증2 : 보내려는 코인 수량 + 수수료 이상의 코인이 해당 주소에 있는지
- 블록이 생성되면 수신자 지갑에도 코인 잔고가 변동됨
- 기록되는 순간 승인(Confirmation)이 1로 생기고 그 뒤로 블록이 생성될 때마다 1씩 증가하는데 이것을 기준으로 거래 승인 완료를 요구할 수 있음
- 거래완료후 TXID(트랜잭션 id)가 생성되는데 해당 체인의 Explorer를 통해 검색이 가능함
- 블록이 새로 생성되는 간격의 시간을 블록타임이라 함
- 평균적으로 비트 10분, 이더 12초, 이오스 0.5초가 걸림
- 거래는 블록타임보다 느려질 순 있어도 빠를 수는 없음
- 블록타임이 짧아지면 합의과정에서 많은 분기가 일어나고 네트워크의 일관성이 떨어질 수 있음
- 블록타임이 길어지면 많은 트랜잭션 처리량 감소로 사용성이 떨어질 수 있음
- 비트코인은 인터넷 환경이 좋지 않은 참여자들 까지 고려해 10분으로 설정함
- mempool.space 같은 사이트에서 적정 수수료를 확인하여 원하는 시간에 가깝게 Tx 처리가 가능함
- 채굴업자들은 자신의 Tx를 직접 처리해 블록을 만들기도함 (자신들의 코인 분배 같은...)
- 사용자가 많아 질수록 수수료경쟁이 붙어 수수료는 비싸짐 (인기 NFT 구매 같은...)
- 전송 시 발생할 수 있는 문제들
- 잘못된 주소 : 복사했더라도 정확한지 앞, 뒤, 중간 부분을 눈으로 비교해 확인하자
- 잘못된 네트워크 : 나의 주소로 잘못 보낸경우 주소 체계가 같은 해당 네트워크에서 같은 주소로 생성하여 반환 가능, 거래소의 경우 거래소에 요청하면 가능한데 안될수도...
- 하드(소프트)포크 같은 블록체인 네트워크의 큰 변화가 있는 경우 오류가 생길 수 있으니 거래를 하지말자
- 수수료가 아깝지만 정찰병(적은 수량)을 먼저 보내자
'Memo > Book' 카테고리의 다른 글
| "안전하고 친절한 블록체인 안내서" #4 (0) | 2024.05.08 |
|---|---|
| "안전하고 친절한 블록체인 안내서" #3 (3) | 2024.04.24 |
| "안전하고 친절한 블록체인 안내서" #1 (5) | 2024.03.12 |
| [함께 자라기 애자일로 가는 길] #1 자라기 (3) | 2021.07.26 |
| [함께 자라기 애자일로 가는 길] #0 서론 (3) | 2021.07.26 |