거래소를 통해 비트코인 지갑을 만들어보자!

Posted by HealingCamp
2017. 3. 23. 06:01 비트코인/블록체인


거래소를 통해 비트코인 지갑을 만들어보자!

How to generate a bitcoin wallet by using BTC exchange


저번에 비트코인에 대해 설명해드리면서 비트코인 지갑(Wallet)에 대해 들으셨을 거에요. 대체 비트코인 지갑이란게 뭘까요? 우리가 보통 사용하는 지갑처럼 손에 잡히는 물건일까요? 아니면 삼성페이나 애플페이, 시럽같은 전자 지갑일까요?

굳이 따지자면 전자지갑에 가깝지만, 비트코인 지갑은 지갑간의 송금이 가능합 니다. 타 기업체의 결제 서비스들과는 달리 사용자끼리 직접 비트코인을 주고받을 수 있는 것이죠. 비트코인은 신용카드처럼 돈을 빌려 결제하는 개념이 아니라 현금처럼 오직 주고받는 것만이 가능합니다. 그렇기 때문에 상점에서 비트코인을 소모해 물건을 사는 것도 사실상 그 상점의 지갑에 비트코인을 송금하는 개념으로 이루어집니다.

 subway

서브웨이의 비트코인 지갑 주소. 이 QR코드를 스캔하면 서브웨이의 비트코인 지갑에 코인을 보낼 수 있습니다.

친 구에게 비트코인을 송금하고 싶다면 본인의 비트코인 월렛 어플리케이션(수많은 비트코인 월렛 어플이 존재합니다)을 실행해 QR코드를 스캔한 후 원하는 금액을 적어 보내면 됩니다. 은행이나 다른 기관을 거치지 않는 Peer to Peer 거래이므로 공인인증서나 보안프로그램이 필요 없습니다. 마치 현금을 친구에게 건네주는 것 같죠? 🙂

p2p

은행을 거치지 않으므로 수수료는 거의 제로에 가깝습니다.

그렇다면 비트코인 지갑은 어떻게 열 수 있을까요? 어디서부터 시작해야 하는 걸까요?

지갑을 여는 방법은 무궁무진하지만, 오늘은 가장 익숙하게 지갑을 열 수 있는 방법인 ‘거래소로 지갑 열기’를 소개해드리겠습니다!

거래소를 이용해 지갑 열기

비 트코인을 구매하기 위해서는 반드시 거래소를 이용해야 합니다. (직접 채굴을 하신다거나, 친구에게 비트코인을 송금받으신다면 그럴 필요가 없지만요!) 현실적으로 일반인이 비트코인을 채굴하는 방법도 없거니와 아직 비트코인을 사용하시는 분들이 많지 않기 때문에, 비트코인을 얻고 싶으시다면 사실상 거래소를 이용하시는 것이 가장 간편한 방법입니다.

비트코인 거래소란?

비트코인 거래소란 비트코인을 대상으로 환전 서비스를 하는 기업체를 말합니다. 거래소에 본인의 은행계좌를 연결하고, 10만원을 거래소에 지불하시면 10만원 가치에 상응하는 비트코인을 매수할 수 있는 것입니다. 거래소에서 매수한 비트코인은 자동적으로 거래소 내에서 생성된 비트코인 지갑에 예치되게 됩니다.

비트코인을 매수하거나 매각할 경우 현재 비트코인 시세에 따라 현금가가 정해지므로, 시기를 잘 보시고 시세가 쌀 때 구매, 비쌀 때 매각하시는 게 현명합니다. 이를 이용한 비트코인 트레이딩도 많이 활성화 되고 있는 추세입니다. 🙂 비트코인 트레이딩에 대한 글도 곧 업로드 될 예정이랍니다.

세계적으로 가장 많이 쓰이는 거래소로는 Coinbase, Bitfinex, Bitstamp, OKcoin 등이 있습니다. 거래량이 많아 정확한 시세를 알 수 있는 것이 장점이지만, 대부분 미국 혹은 중국이 본사이기 때문에 현지 은행계좌가 있는 게 아니라면 거래 자체가 불가능한 경우가 많습니다.

국내 거래소로는 코빗과 코인플러그가 가장 유명한데요, 코인플러그를 예시로 지갑을 하나 열어보죠.

coinplug1

Step 1.

코인플러그 홈페이지에 접속해주세요 http://coinplug.com

회원가입 버튼을 눌러줍니다!

coinplug2

Step 2.

다른 절차는 필요치 않습니다. 이메일(아이디)와 비밀번호만 적어주시면 끝.

coinplug3

Step 3.

인증메일을 확인해주시고 다시 코인플러그 웹사이트로 돌아옵니다.

coinplug5

Step 4.

인증이 완료된 후 다시 로그인을 해주시고, ‘계정’메뉴의 ‘회원정보’로 들어가줍니다.

휴대폰 인증까지 마저 완료해주세요.

하아… 인증…..

coinplug6

Step 5.

인증을 마치셨으면 ‘지갑’메뉴를 클릭해줍니다.

본인의 지갑 메뉴로 들어가게 되는데요, ‘비트코인 받기’를 누르시면 본인의 지갑 정보를 조회하는 것이 가능합니다.

제 주소는 fcEg로 끝나네요! 제 주소를 변환한 QR코드도 아래에 보입니다. 송금하실땐 QR 찍으시는게 훨씬 쉽겠죠? 🙂

알아두실 점!!

1.

만약 비트코인을 현금을 주고 구매하시는 게 아니라 비트코인을 ‘송금’만 하시는 게 목적이라면 휴대폰 인증같은 절차가 필요치 않습니다. 개인정보에 민감하신 분이나 비트코인 지갑만 이용하실 분들이라면 가입하신 직후 지갑 탭으로 이동하시면 본인의 지갑을 조회하실 수 있어요. 만약 비트코인을 매수하시려 할 경우엔 휴대폰 인증과 함께 은행 계좌와 연동하시는 것도 필요하지만요 🙂

사실 익명성이 보장되며 인증도 신분증도 필요 없이 거래를 할 수 있다는 게 비트코인의 가장 큰 장점이지만… 아무래도 일반 현금으로 온라인 거래를 할 경우 각종 법에 제약을 받게 되기 때문에 인증이 불가피하네요 😦 비트코인끼리의 거래는 인증을 거치실 필요가 없습니다. 저는 실제로 가명으로 만든 지갑을 이용해 물건을 사 본 적도 있답니다!

2.

휴대폰 인증을 하실 경우 당연한 얘기겠지만 국내 휴대폰만 인증이 가능합니다. 미국 거래소를 이용하실 경우 한국 국가번호까지 입력하시면 한국폰도 인증이 되지만, 우리나라 거래소의 인증절차는 통신사까지 설정해서 인증해야 하기 때문에 외국 통신사를 사용하는 핸드폰은 인증하는 것이 불가능해요.

실제로 제가 미국에 있을 때에는 코빗에 가입해둔 제 계정을 인증 못하는 사태가 일어났습니다 ㅜㅜ.. 외국 가시기 전엔 비트코인을 다른 지갑(거래소에서 운영하지 않는 지갑. 예를 들면 블록체인 지갑)으로 옮기시는 게 안전하겠죠.

지금까지 거래소를 이용해 비트코인 지갑을 여는 방법을 알아보았습니다.

신분증 제시 할 필요 없이 5분이면 후다닥 만드실 수 있겠죠? 🙂

다음엔 블록체인을 이용해 지갑 만드는 법을 알아보겠습니다.


비트코인 거래소 vs 블록체인 지갑

Posted by HealingCamp
2017. 3. 23. 05:54 비트코인/블록체인

어떤 비트코인 지갑을 사용해야 할까?

비트코인 지갑 종류 비교분석 <비트코인 거래소 vs 블록체인 지갑>


\

현재 비트코인 지갑을 만드는 방법은 무궁무진하다. 비트코인의 가장 근간이 되는 소프트웨어인 비트코인QT를 사용해 생성할 수도 있고, 무수히 많은 비트코인 지갑 생성기(bitcoin wallet generator) 웹사이트들을 이용할 수도 있다. 구글 플레이스토어, 앱스토어에서 비트코인 지갑(bitcoin wallet)을 검색해도 셀 수 없이 많은 비트코인 지갑 애플리케이션이 나타난다.

이 렇게 생성된 지갑들은 기본적으로 초심자가 사용하기는 힘든 것들이다. 한 번 지갑을 생성하면 공개키와 비밀키, 그리고 QR코드가 주어지고, 이 정보를 기록하지 않은 채 브라우저를 종료하면 사실상 그 지갑의 정보를 다시 찾을 수 있는 방법은 없다. 대부분의 비트코인 지갑 생성 서비스는 공식적으로 ‘운영’되는 것이 아니다. 대부분 개발자들이 독립적으로 비트코인 지갑 생성 웹사이트 혹은 앱을 업로드하는 것이고 그렇기에 고객 서비스도 존재하지 않기 때문이다. 지갑의 정보를 잃어버리는 것은 전적으로 사용자의 책임이다.

그렇다면 초심자가 사용하기에  부담이 없으면서 일부 정보를 잊어버린다 하더라도 어느정도 복구할 가능성이 있는, ‘쉬운 지갑’들은 무엇일까: 바로 비트코인 거래소 지갑과 블록체인 지갑이다.

비트코인 거래소

비 트코인 거래소란 비트코인을 실제 돈으로 매수하거나 비트코인을 매각해 돈으로 돌려받을 수 있는 서비스를 제공하는 업체들을 말한다. 비트코인을 얻는 가장 손쉬운 방법이 이 거래소를 통해 비트코인을 매수하는 것이다. 회원가입 절차를 거치고 이메일 및 휴대폰 인증을 거치면 지갑이 생성되고, 자유롭게 비트코인 거래 및 매수/매각을 할 수 있다. 세계적으로 가장 널리 사용되는 비트코인 거래소로는 코인베이스(Coinbase), 써클(Circle), 비트피넥스(Bitfinex), 오케이코인(OKcoin) 등이 있다.

coinbase1

코인베이스(coinbase.com) 로고. 나도 미국에서 생활했을 때에는 코인베이스를 이용했다.

(아마도) 가장 실시간 거래량이 많은 거래소. 치사하게 실시간 볼륨을 안알랴줌

circle1

써클(Circle)의 웹사이트(circle.com/en). 써클은 최근 최초로 뉴욕주에서 비트라이센스(BitLicense)를 발급받았다.

한국의 비트코인 거래소로는 역시 많은 종류가 있지만,빗(Korbit)과 코인플러그(Coinplug)가 가장 많이 쓰인다. 각자 코빗페이, 코인플러그 ATM, 머천트 서비스등 독자적인 서비스도 시행하고 있다.

korbit logo1coinlogo1

코빗과 코인플러그의 로고.

블록체인 인포 (Blockchain.info)

Blockchain Logo1

블록체인 인포의 로고

비트코인을 사용하는 사람이라면 누구나 블록체인에 대해 들어봤을 것이다. 블록체인이란 비트코인을 이루는 가장 근간이 되는 기술이다. 블록체인 인포(blockchain.info) 는 바로 이 블록체인 테크놀러지의 이름을 빌린 비트코인 지갑 서비스의 이름이다. 세계 최초의 비트코인 지갑 서비스를 론칭한 기업이며, 비트코인 커뮤니티 내에서도 깊은 신뢰를 받고 있다. 수많은 비트코인 지갑 서비스 중 가장 안전하고, 사용자의 프라이버시를 보호하는 동시에 초심자가 사용하기에도 무리가 없다. 전 세계적으로 500,000명이 넘는 사용자를 보유하고 있다. (코인베이스는 329,000명) 이메일이나 핸드폰 인증 절차를 거칠 필요도 없다.

그 렇다면 이 두 종류의 지갑 중 어떤 것을 선택해야 할까? 모두 다 생성하기 쉬운 지갑들이며 편리한 고객 서비스를 제공한다. 비슷해보이는 서비스들일지 몰라도, 사실 두 종류의 서비스는 극명한 차이를 지니고 있다. 아직 어떤 지갑을 생성할지 모르겠다면, 아래의 정리를 참고해 보자.

비트코인 거래소 지갑 VS 블록체인 지갑

wallet comparison

1. 비트코인 송금

두 서비스 모두 비트코인을 한 지갑에서 다른 지갑으로 송금하는 것이 가능하다. 이는 비트코인 간의 거래만을 말한다. 즉, A가 1 BTC(비트코인)을 B의 비트코인 지갑에 전송하는 것이다. 현금이나 실제 돈이 사용되지 않는, 그저 비트코인 교환을 뜻한다. 이는 비트코인 지갑의 가장 기본적인 기능이다.

2. 매수/매도

거 래소에서는 비트코인의 매수와 매도가 가능하다. 즉, 실제 돈을 지불하고 비트코인을 사거나 비트코인을 팔아 돈을 받는 게 가능하다는 것이다. 증권 거래소의 개념으로 이해하면 쉽다. 증권 거래소에서 실제 돈을 가지고 주식을 사고 팔듯이, 비트코인 거래소에서도 돈으로 비트코인을 사고 파는 것이 가능하다. 반면 블록체인 인포 지갑은 오직 비트코인의 보관, 그리고 비트코인 간의 송금만을 지원한다. 블록체인 인포 웹사이트에서 돈으로 비트코인을 매수, 매각하는 것은 불가능하다.

3. 은행계좌 연결

거 래소를 이용하며 매수/매도를 하기 위해서는 반드시 본인의 거래소 계정과 은행 계좌를 연동시켜야 한다. 매수/매각은 실제 우리가 사용하는 돈을 통해 이루어지기 때문이다. 반면 블록체인 지갑은 비트코인 간의 송금만을 지원하므로 실제 돈을 사용할 필요가 없고, 때문에 은행 계좌를 연동할 필요가 없다.

4. 사업자 서비스

비 트코인을 결제 수단으로 허용하는 사업자가 결제 대금을 비트코인을 받을 경우, 만약 블록체인 지갑을 사용하고 있다면, 사업자는 자신의 비트코인 주소를 고객에게 제시해야 한다. 이 비트코인 주소에 고객이 비트코인을 보내면 결제가 이루어진다. 몇몇 거래소에서 제공하는 사업자 서비스는 이러한 과정을 페이팔 지불처럼 ‘구매’, ‘지불’, ‘기부’ 등의 간단한 버튼으로 단순화 시키는 것을 말한다.

5. 웹

블록체인 인포와 거래소 모두 기본적으로 웹사이트로 서비스를 제공한다.

6. 모바일앱

대부분의 거래소가 모바일 애플리케이션 서비스를 제공하고, 블록체인 인포 또한 그러하다.

7. 블록체인 조회

비 트코인을 이루는 네트워크가 ‘블록체인’이고, 블록체인 인포는 단지 이 이름을 빌린 비트코인 지갑 서비스 기업의 이름일 뿐이다. 다만 블록체인 인포에 접속하면 메인 페이지에서 실시간으로 블록체인 네트워크 안에서 이루어지는 모든 거래를 조회할 수 있다(Blockchain Explorer). 이것이 바로 블록체인 인포가 가 자신들의 이름을 블록체인이라고 내건 이유다.

8. 비밀키 백업

비 트코인 지갑을 이루는 공개키(Public Key)는 지갑의 계좌번호, 비밀키(Private Key)는 비밀번호와 같은 개념이다. 공개키는 비트코인을 송금받기 위해 제시하는 일종의 계좌번호이지만 비밀키는 비밀번호이므로, 비밀키를 잃어버리는 순간 본인의 지갑에 대한 모든 접근 권한을 잃어버리게 된다. 그렇기 때문에 비밀키 백업이 존재하는 것이다. 블록체인 인포에서는 사용자가 비밀키를 잊을 경우를 대비해 파일(JSON 확장자), 페이퍼, 이메일, 드롭박스 등 다양한 백업 수단을 제공한다. 거래소에서는 백업을 제공치 않는다.

9. 비밀키 권한

블록체인 인포는 사용자가 쉽게 지갑을 생성할 수 있도록 할 뿐, 블록체인 인포 당사의 서버서에도 사용자의 비밀키 정보를 결코 알 수 없다. 그렇기에 지갑 비밀키에 대한 권한은 사용자에게 전적으로 있다.

10. 거래소의 비밀키 권한

거 래소의 경우 거래소가 전적으로 사용자의 비밀키에 대한 권한을 갖는다. 실제로 거래소 지갑을 이용하다 보면 사용자가 자신의 지갑의 비밀키를 알 수 있는 방법이 없다. 거래소란 일종의 은행의 개념으로, 사용자가 비트코인을 자신의 계좌(지갑)에 보관하면 거래소가 이를 관리하고 보관해주는 업무를 맡는 것이다. 일반적인 회원가입 및 로그인 절차를 거치는 것으로 지갑에 대한 접근권을 허용하는 것이기 때문에 비밀키를 알 필요 없이 비트코인 거래가 가능하다.

결론

편 하고 심플한 서비스를 이용하고자 하는 사용자, 그리고 비트코인을 실제 돈으로 매수/매각하려는 사용자, 혹은 이를 이용해 비트코인 시세차익 투자(트레이딩)을 하려는 사용자의 경우 거래소의 지갑 서비스가 적합할 것이다. 따로 비밀키와 공개키를 적어둘 필요 없이 거래소에 일반적인 아이디와 비밀번호로 로그인하면 지갑을 이용하는 것이 가능하기 때문이다. 다만 사용자가 비밀키에 대한 권한이 없고, 각종 인증 절차와 회원가입으로 인해 비트코인 최대의 장점인 ‘익명성’이 보장되기 힘들며, 이 때문에 결국 거래소라는 제3자 집단(Third Party)이 거래 과정에 개입된다는 단점이 있다.

조 금 더 세심한 주의와 비트코인에 대한 지식을 요구하지만, 코인을 좀 더 안전하게 보관하며 최대의 익명성을 보장받고 싶은 사용자는 블록체인 지갑이 적합할 것이다. 여러가지 정보를 사용자가 책임을 지고 기록 및 관리해야 하며 한 번 잃어버린 비밀번호는 복구가 어렵다는(전적으로 불가능하진 않다) 단점이 있지만, 비트코인의 최대 장점인 익명성을 보장하며 더욱 높은 자유도와 유연성을 제공하는 서비스임에는 틀림없다. 사용자의 비밀번호조차 블록체인 서버에 저장되지 않으며 블록체인 인포 당사에서도 사용자 정보를 최소한으로 보관하는 것을 목표로 하기 때문이다.

각 자의 성향과 비트코인 사용 용도에 따라 어떤 지갑을 사용할 것인지, 혹은 모두 사용할 것인지를 결정하는 것이 현명할 것이다. 트레이딩용 지갑으로 거래소 지갑을 하나 만들어 놓는 동시에 비트코인을 안전하게 보관할 용도로 블록체인 지갑을 따로 만들어 놓는 것도 좋은 방법이다.


비트코인의 핵심, 블록체인 쉽게 이해하기

Posted by HealingCamp
2017. 3. 23. 05:28 비트코인/블록체인

비트코인에 대해서...


트코인(Bitcoin)은 2009년 사토시 나카모토(Satoshi Nakamoto)가 만든 디지털 통화입니다. 비트코인은 블록체인을 기반기술로 하면서 통화거래내역을 P2P기반의 분산네트워크에 의해 공유되는 블록에 담아 다수에 의해 공유 및 검증되는 시스템이라 할 수 있습니다. 예를 들어, 자신이 보유한 비트코인으로 물건을 구매하기 위해, 상대방에게 비트코인을 지불하는 거래내용을 만들고(단순 텍스트에 불과) 자신만이 가진 개인키로 서명을 하여, 블록체인을 관리하는 P2P분산네트워크에 전송하면 다수의 노드에 의해 검증되어 블록체인에 거래내용이 추가되어 영구적으로 보관됩니다. 비트코인은 비트코인거래소에서 구매하거나 환전할 수 있는데 우리나라는 코빗(KORBIT) 등이 있습니다. 꼭 거래소가 아니더라도 비트코인을 가진 사람한테 돈을 주고 자신의 지갑으로 송금해달라고 해도 됩니다.


비트코인주소, 공개키

우리가 일반적으로 뱅킹을 이용해서 돈을 보내거나 받으려면 계좌번호를 알아야 하지요, 마찬가지로 비트코인도 계좌를 대신할 만한게 있는데 그것이 비트코인주소입니다. 비트코인거래를 위해 할일은 먼저 개인키/공개키 쌍을 생성합니다. 그리고 공개키를 해시한 값을 비트코인주소로 사용합니다. 이 비트코인주소는 계좌번호처럼 사용할 수 있고 그 주소로 보내지는 비트코인에 대한 거래권한은 비트코인주소(공개키)에 대한 개인키를 소유한 사람이 주인이 됩니다. 개인키관리가 얼마나 중요한지 알 수 있겠죠(개인키를 잃어버리거나 유출되면 모든 비트코인을 잃어버리는 것과 같습니다). 비트코인주소는 개인이 얼마든지 생성할 수 있고 제한이 없습니다. 비트코인주소는 임의의 문자열(1 또는 3으로 시작)이다보니 사람이 외우기 어려워 QR코드로 표현하여 사용하기도 합니다.




비트코인 거래 승인, 블록체인

비트코인 모바일 지갑을 사용한다면, 비트코인을 송금할 비트코인주소와 금액을 입력하면됩니다. 이 때 거래내용이 작성되면 실제 승인을 받기 위해서는 P2P네트워크에 전송되어 마이너(Minor)들에 의해 블록체인에 기록되어야 합니다. 마이너들은 거래내용을 검증하고 문제가 없으면 모든 노드들이 가지고 있는 블록에 추가를 합니다. 그러면 모든 노드들이 해당블록을 공유함으로써 소위 공개장부에 기록되어 거래가 승인되는 것입니다.


마이닝

거래승인을 위해 블록체인에 신규 블록이 추가되기 위해서는 네트워크에 존재하는 노드들이 신규 블록의 내용을 검증하고 공유해야하는데 이를 마이닝이라고 합니다. 마이닝을 하는데는 하드웨어도 필요하고 전기도 필요한데 왜 자발적으로 참여해서 블록체인을 형성해줄까요? 바로 비트코인을 얻기 위해서 입니다. 마이너는 블록마다 생성되는 비트코인(코인베이스)과 각 거래마다 존재하는 수수료를 얻게 됩니다. 새 블록으로부터 나오는 비트코인은 가장먼저 블록을 형성시키는 마이너에게 돌아가기 때문에 전문적인 마이너들은 해시연산(해싱파워가 중요)을 잘 하도록 하드웨어를 제작(ASIC)하고 어레이로 엮어 수입을 창출합니다.


마이닝 수입 = 블록 당 발생 비트코인(코인베이스) + 거래 수수료(거래자가 지불)



비트코인발행


블록이 새로 생성될때마다 비트코인이 거래와 상관없이 새로 생성됩니다. 블록의 첫번째 거래는 위에서 설명한 마이너의 수입에 해당되는 코인베이스라는 것인데요 이것은 비트코인의 화폐발행정책이기도 합니다. 블록은 계속 누적될텐데 함께 발행되는 비트코인이 무한대로 생기면 안되기 때문에 약 4년주기로 발행코인은 반감됩니다. 구체적으로 설명하자면, 처음 0번 블록체인이 생성되고 약 10분마다 한 개씩 블록이 추가되는데(이후에 설명), 4년이면  2,102,400분(60분×24시간×365일×4년)이고 10분에 1블록이 생성되니까 약 21만개의 블록이 생성됩니다.

그렇게, 처음 4년(2009년~2013년) 동안 약21만개의 블럭 생성 시 블록당 50비트코인이 발행되고 그 다음 4년(2013년~2017년) 동안 21만개의 블럭 생성 시에는 발행코인이 반감되어 블록당 25비트코인 생성됩니다. 그러다 64회까지 반감되다가 그 뒤에는 더 이상 새로운 비트코인은 발행되지 않도록 설계되어 있습니다(비트코인의 체계라고 할 수 있죠). 마이너들은 발행된 비트코인과 수수료를 얻기 위해 열심히 블록체인 생성에 참여하고 있는 것이죠. 만약 점점 코인베이스 수익이 줄어 64회까지 반감된 뒤 수수료만 얻어야 한다고 할지라도 마이너들이 자원투자를 열심히 할지 잘 모르겠네요. 참고로 위 그래프는 비트코인의 발행이 기하급수적으로 줄어드는 것을 표현한 것입니다.



블록체인 기술에 대해 조금 더 자세히...

비트코인에 대해 개념을 알아보았지만 그 핵심은 블록체인입니다. 블록체인이 어떻게 생겼길래 분산구조로 안전하다고 하고, 한번 승인되면 위변조하기 어려워 무결성이 확보된다고 할까요. 


블록구조

블록체인이라는 것은 블록들이 체인형태로 연결되어 있는 것을 말합니다. 우선 블록의 구조를 살펴보겠습니다.


크게 블록크기/블록헤더/트랜젝션데이터로 구성됩니다.




  • 블록크기 : 바이트 단위의 블록크기입니다.

다음 블록헤더입니다.

  • 버전 : 데이터구조의 버전입니다. 구조변경 시 필요하겠죠.
  • 이전 블록해시 : 블록의 체인구조에서, 이전블록(부모블록)에 대한 해시 참조값입니다. 이렇게 이전 블록에 대한 해시를 참조함으로써 각 블록이 강하게 연결되고 중간에 블록이 훼손되기 어렵게 합니다.
  • 머클루트 : 해당 블록에 포함된 거래로부터 생성된 머클 트리의 루트에 대한 해시이며, 블록에 들어있는 모든 거래의 요약본이라 할 수 있습니다. 비교적 큰 데이터 집합을 효율적으로 요약하고 검증할 수 있습니다.
  • 타임스탬프 : 블록의 생성시간, 1970.1.1 이후 초단위 시간입니다.
  • 난이도 목표 : bit값으로 블록의 작업증명 알고리즘에 대한 난이도 목표입니다. 이는 해싱을 어렵게 만드는 척도로서 블록 한개를 생성하는데 10분정도 걸리도록 유도합니다. 만약, 컴퓨팅 파워가 좋아지고 해싱파워(해시를 계산하는 능력)가 증가하여 10분이 걸리지 않으면 난이도를 높여 10분을 유지하도록 조정가능합니다.
  • 난스 : 작업증명 알고리즘에 사용되는 카운터입니다.

헤더 다음 트랜잭션데이터가 이어집니다.

  • 트랜잭션 카운트 : 포함한 거래 개수입니다.
  • 코인베이스 트랜잭션 : 블록 생성 시 발생되는 비트코인이며, 본 블록을 마이닝한 마이너의 수입이 됩니다.
  • 트랜잭션 : 10분동안 수집한 거래정보입니다.


블록체인구조

위와 같은 블록들이 체인처럼 연결되면 오른쪽 그림과 같이 블록체인이 됩니다. 블록체인은 이전 블록의 해시를 참조하여 연결되기 때문에 중간에 데이터가 변경되거나 위조되기가 어렵습니다. 어렵다는 뜻은, 각 블록이 해시값으로 연결되어 있기 때문에 만약 중간의 값을 변경하려면 그 위에 있는 모든 데이터를 함께 변경해야합니다. 


  • 블록높이 : 블록높이는 현재 블록 중 가장 최신의 블록을 뜻합니다. 블록체인의 각 노드들은 블록체인을 서로 공유하는데, 이 때 블록높이만 봐도 내가 최신인지 남이 최신인지 알 수 있습니다.

  • 블록깊이 : 그림에서 1011번째 블록을 기준으로 본다면, 위에 몇 개의 블록이 있는지에 대한 값입니다. 즉, 위에 블록이 쌓일때마다 자신의 블록도 함께 승인이 됩니다. 만약 내용을 변경하고자할 경우 위의 블록까지 함께 변경해야 하기 때문에 보통 거래가 발생되어 블록에 저장되면, 6번의 승인이 이루어져야 취소가 불가능하다고 봅니다. 체인이 길어질 수록 수학적 계산의 양이 급격하게 늘어나기 때문이죠.

여기서 생각해 볼 것은, 6번의 블록(승인)이 생기려면 평균적으로 10분에 1개 블록이 생성되므로 60분이 걸린다는 뜻이죠. 거래하고 안심하려면 60분이 걸린다는 뜻이니 좋은 것만은 아니겠죠. 중앙집중식이라면 중앙에서 승인 한 번만 해주면 되겠지만 분산구조이니 어쩔 수 없겠네요. 왜 10분이라는 간격이 생겼는지는 뒤에서 설명하겠습니다.

거래승인, 블록체인 확장
거래 승인을 얻기 위해서는 거래내용을 블록에 담고 P2P네트워크를 통해 블록체인에 블록을 추가해야 합니다. 앞에서 설명한 것 처럼 블록을 검증하고 추가하고 공유하는 것은 마이너의 역할입니다. 마이너는 풀노드로서 2009년 처음 생성된 0번 블록부터 최신의 블록까지 모든 블록데이터의 복사본을 유지합니다. 만약, 풀노드 클라이언트를 설치한다면 블록을 다운받는데도 며칠 걸릴 것입니다. P2P네트워크에는 수많은 마이너들이 있고 이들은 서로 경쟁하며(수입을 위해) 블록을 생성하여 블록체인을 확장합니다.
블록체인은 분산화된 구조이기 때문에 수많은 노드들이 가진 블록체인 복사본들이 항상 일치하지는 않습니다. 이러한 불일치를 동기화하기 위해 각 노드들은 보통 3종류의 블록을 보관합니다.

  • 메인블록체인
  • 2차블록체인 : 메인블록체인에서 브랜치 형성
  • 고아(orphan)블록 : 수신된 블록의 이전(parent) 블록이 현 체인에 발견되지 않는 경우로, 대개 두 개의 블록이 각자 짧은 시간 내에 마이닝되어 반대의 순서(부모블록 전에 자식블록이 도착)로 도착한 경우 발생합니다. 고아블록풀에 저장되어 있다가 부모블록이 도착하고 기존 체인에 연결되면 고아풀에서 부모블록에 연결됩니다.

노드입장에서는 수신된 새 블록을 연결하여 확장하는데, 분산네트워크이기 때문에 동시에 서로다른 블록이 수신된 경우 어느 것이 맞는 것인지 알 수 없습니다. 이럴 때 브랜치(분기)가 형성되다가 다수에 의해 더 많이 연결되는 쪽으로 메인블록체인이 선택되는 것입니다. 브랜치가 발생하는 것은 사실 분산구조이기 때문에 발생하는 충돌이라고 생각할 수도 있습니다. 




위 그림처럼, 일시적으로 분기가 일어나다가 결국 수렴하면서 다수의 데이터가 수렴하는 쪽으로 정리가 되는 것입니다.


난이도 조절(블록 생성 간격, 10분)

블록체인에서 왜 난이도라는 것을 조절하고 그에 따라 블록 1개가 생성되는데 평균 10분이 걸리도록 만들었을까요. 물론 난이도조절에 따라 블록이 생성되는 간격을 조정하는 것은 블록체인의 성질이지만, 이것을 10분으로 정한것은 비트코인의 설계라고 할 수 있습니다. 난이도 조절에 대해서 한 번 생각해봅시다.

마이너의 대부분의 작업은 해싱계산입니다. 해싱을 잘하도록 하드웨어도 주문제작(ASIC)하지요. 결국, 난이도를 어렵게 하는 것은 해싱작업이 어렵도록 하는 것입니다. 난이도에 대한 설명을 자세히 하자면 좀 복잡하지만, 적절한 난스를 찾기 위해 많은 해시 계산을 하도록 만드는 것입니다. 이 난이도를 이용하여 블록 1개가 생성되는데 평균 10분이 소요되도록 조절합니다. 난이도 조절이 가변인 것은 하드웨어 속도가 증가할 것이기 때문에 평균 10분을 유지하려면 난이도를 점점 어렵게 해야할 것이기 때문입니다.

그렇다면, 왜 블록생성간격을 10분을 유지하려고 하는 것일까요? 이것은 신속한 승인시간과 분기가 발생할 확률을 절충하기 위한 것입니다. 다시 말해, 거래는 블록이 생성되고 체인에 확장되어야 승인이 되는데 이것이 너무 빨리 생기다보면 분산구조의 노드들에 분기가 많이 발생하겠죠. 즉 동시 다발적으로 수시로 블록이 지구촌 곳곳에서 발생하면 분기가 엄청나게 생기기 때문에 어느 정도 간격을 두고 블록을 생성함으로써 분기발생을 줄이기 위함입니다. 그렇다고 간격을 너무 길게 하면 거래 시 승인이 너무 오래걸리게 되겠죠.   

결론적으로, 분기발생확률과 거래정산속도는 트레이드오프관계이고 그 조절은 블록생성간격이 결정한다고 볼 수 있습니다. 블록생성간격이 길면 분기발생은 적지만 거래정산속도는 느려질 수 밖에 없는 이치입니다.


블록체인 특징 요약 (분산된 공개장부)

  • 분산구조 : 중앙집중식이 아닌 P2P네트워크를 이용한 분산구조입니다. 블록체인 복사본들이 분산된 노드들에게 보관되어 있습니다.
  • 투명성 : 블록체인내 모든 내용이 공유되어 있습니다. 
  • 가용성 : 특정 노드가 서비스 불가하더라도 수 많은 노드들에 의해 블록체인이 유지됩니다. 즉, 중앙집중식인 경우 Single Point of Failure 가 존재하지만 블록체인은 안전하다고 할 수 있습니다.
  • 신뢰성 : 다수에 의해 결정되므로 결과를 신뢰할 수 있습니다. 51%의 노드들이 모두 조작되거나 공격받지 않는 이상 신뢰할 수 있습니다.
  • 무결성 : 블록체인에 기록된(승인된) 기록을 삭제하거나 조작할 수 없습니다.



블록체인 활용 시 고려사항

블록체인을 이용해서 기업의 서비스를 창출하거나, 블록체인기반 솔루션을 도입할 때 보안담당자로서 체크해야할 사항을 고민해보았습니다.(아직 보편적으로 도입된 것이 아니라 저도 상상을...)


데이터관점


- 블록체인은 무결성은 좋지만, 기밀성은 제공하지 않습니다. 이를 고려하여 어떤 내용을 불록체인에 담을 것인가가 중요합니다. 비트코인은 거래내역을 담았을 뿐, 어떤 서비스 또는 기능을 할 것인가에 따라 그 내용이 달라져야겠죠. 블록체인은 공개장부개념으로, 공개가능한 내용을 데이터로 가져가야 할 거라 생각됩니다.


- 블록체인 내 들어가는 데이터 크기를 고려해야 합니다. 블록체인은 영구적인 누적데이터이기 때문에 결국엔 풀노드에겐 스토리지가 지속적으로 증가할 수 밖에 없습니다.


- 승인을 취소하기 어렵다는 사실을 서비스 특성에 맞게 고려해야합니다. 비트코인에서 타인에게 잘 못 보냈을 경우 다시 찾을 수 없다는 것과 같은 이치입니다.


네트워크 관점


-  분산네트워크기반으로 그 규모에 따라 신뢰도가 높아지므로 규모를 고려해야 합니다. 분산네트워크를 크게 가져가면 인프라구성이 쉽지 않고 작게 가져가면 신뢰도가 떨어지겠죠.


- 마이너가 가져갈 이득은 무엇인지 고려해야 합니다. 비트코인의 경우 블록생성 시 발생되는 비트코인(코인베이스 + 수수료)을 수익으로 받기 때문에 마이너가 참여를 경쟁적으로 하고 있어 블록체인이 활성화되는 것입니다.


- 블록체인 생성 주기를 고려해야 합니다. 생성주기는 서로 트레이드오프 관계인 분기발생확률과 블록체인 내용의 확정시간을 조율하게 됩니다. 


보안 관점


개인키관리가 보안의 핵심입니다. 개인키를 잃어버리거나 유출되었을 때 전 재산을 잃어버리게 됩니다. 


- 기본적으로 익명성을 제공하지만 개인정보와 연결되면(가입시, 지갑사용 시 등) 과거 모든 데이터까지 개인정보와 매핑이 가능하므로 이에 대한 고려가 필요합니다.


- 공격가능성에 대해 대책을 마련해야 합니다. 의도적 분기유발, 특정 거래나 주소에 대한 DoS공격이 가능하며 특히 공격자가 소유한 해싱파워가 높을수록 공격가능성은 증대됩니다.

예) 고가의 물건 구매 후, 안전하다고 판단되는 6회의 승인(1시간정도)이 이루어지기 전 물건을 가져간다면 자신이 소유한 고성능 해싱파워를 이용해 종전 거래를 무효화할 수 있도록 공격가능


결국, 기업에서 블록체인 기술을 홀용하고자할 때 단순히 DB를 사용하지 않고 거대한 인프라기반의 블록체인을 쓰는 이유에 대해서 분명히 비교분석한 후 장단점을 고려하여 결정해야 겠습니다.