'비트코인 작동원리'에 해당되는 글 1건

  1. 2018.02.12 비트코인 용어 7가지 알아보기
카테고리 없음2018. 2. 12. 18:36

최근들어 가화폐에 대한 관심이 핫이슈로 떠오르고 있습니다. 가상화폐는 전자상거래, 사이버머니 등 인터넷 가상 공간에서 사용할 수 있는 실물이 없는 화폐로 정부에 의해 통제 받지 않는 디지털 화폐의 일종으로 개발자가 발행 및 관리하며 특정한 가상 커뮤니티에서만 통용되는 결제 수단으로 그 중 대표적인 것이 비트코인입니다. 오늘은 우리가 생각한 기술과 상식을 바꾸는 패러다임의 변화를 줄 정도로 혁신적인 비트코인 용어 7가지에 대하여 소개하고자 합니다

 

 

 

비트코인은 실체적 개념은 존재하지 않기 때문에 그 어느 경우에도 한계좌에서 다른 계좌로 이동하는 경우는 없으며, 단순히 해당 계좌들의 숫자를 증액하거나 감액하는 원장정리개념만이 존재할 뿐으로 그러한 내용은 모두에게 동일하게 공유됩니다. 따라서 각자가 가진 원장 모두가 원본이 되기 때문에, 다른 누구에게 확인을 받을 필요나 다른 독립된 기관에 신뢰성을 의존할 필요가 없습니다.

 

① 채굴 (Mining)

 

비트코인 용어중 사용자들에 의해 직접 발행이 되는데 이를 채굴이라고 부른다. 채굴이라는 표현은 탄광에서 석탄을 캐듯이 온라인상에서 기술적으로는 끊임없는 해싱작업을 통해 채굴에 참여하는 모든 사용자가 목표값을 찾기 위한 경쟁을 벌여, 특정한 사용자가 목표값에 해당하는 해시값을 찾는 데 성공하면, 블록을 발행하게 때문에 사용합니다. 이들 채굴자들은 블록을 발행하고 이를 네트워크에 전파하면서 동시에 블록 발행 보상인 비트코인과 해당 블록 안에 포함된 이체 수수료를 받게 되어 경제적 보상이 채굴자들이 해싱작업에 참여하는 동기가 됩니다.

 

 

② 작업증명 (POW: Proof of Work)

 

작업증명이란 비트코인 용어는 기본적으로 특정한 난이도의 작업을 수행했음을 증명하는 기법이며, 해당 작업의 어려움은 난이도에 맞게 설정되어 있어야 하지만 그 작업이 완료되었음을 확인하는 것은 쉬워야 합니다. 여러 가지 방법이 작업증명에 사용될 수 있는데, 비트코인의 경우 위에 언급된 Hashcash방식을 통해 작업증명을 합니다.

 

 

 

③ 블록 (Block)

 

 

블록생성은 곧 특정한 목표값을 해싱 작업으로 찾아내는 것으로 네트워크 전파 속도 및 보안성 등을 이유로 사토시에 의해 10분으로 주기로 발행되게 됩니다. 블록은 일종의 데이터 패킷으로 몇 가지 정보를 담고 있는 데, 가장 중요한 것으로 참여자들이 화폐를 거래한 거래내역, 그리고 이전 블록의 해시값, 난이도, 논스(nonce) 등이 포함됩니다. 매 블록은 바로 전 블록의 해시값을 담고 있으며, 이어진 블록들은 시간순으로 발생한 이체내역들을 담고 있는 하나의 블록체인(blockchain)을 이루며, 각 블록은 최대 1MB의 크기까지 확장될 수 있으며, 헤더 80바이트, 기타 17바이트 등을 제외하고 총 1,048,479바이트가량이 이체내역 저장을 위해 사용될 수 있습니다.

 

 

④ 발행 (Mintage)

 

비트코인 용어중 블록은 채굴행위를 통해 발행되며, 매 발행 시마다 비트코인 프로그램 자체에서 블록발행보상을 채굴자에게 지급하는 방식으로 신규 화폐를 발행하며, 블록발행보상은 매 매4년마다 21만 블록을 기준으로 발행량이 반감하게 됩니다. 2009년 1월 첫 발행 시에는 50비트코인씩 발행이 되었으나 약 4년 뒤인 2013년 말부터는 25비트코인으로, 역시 4년 뒤 2016년 7월 10일에는 12.5비트코인으로 매 4년마다 계속하여 반감해나가게 됩니다. 이렇게 발행되는 비트코인의 총량이 2,100만개에 이르면 비트코인의 신규발행은 종료됩니다. 더 정확하게는 20999999.9769개인데, 블록 당 최소 보상량이 0.00000001비트코인(=1사토시)보다 작을 수 없기 때문입니다.

 

 

⑤ 해시와 논스 (Hash and Nonce)

 

해시는 임의의 길이의 데이터를 고정된 길이의 값이나 키로 변환하는 것으로  정보의 위변조를 확인하기 위한 방법으로 SHA256이라는 알고리즘을 통해 어떤 텍스트들도 16진수의 64개 고정된 문자로 변경해버립니다. 어떤 특정 입력에 대한 해시 결과는 늘 동일하지만, 해싱의 결과값으로 입력값을 찾아내는 것은 불가능합니다. 목표하는 해시 결과가 우연히 나타나기 위해선 입력값을 하나씩 바꿔가며 무한히 테스트 해보는 수밖에 없습니다. 특정한 값을 얻기 위해 가능한 모든 값을 대입해 보는 것입니다.

 

 

논스는 32비트(unsigned, 음수제외)로 이루어져 있고 따라서 42억번 가량까지만 셈이 가합니다. 42억번은 비트코인에 요구되는 해시작업에 비해 터무니없이 작은 수로 코인베이스의 extra-nonce field를 통해 머클루트 값을 변경시켜 해싱작업을 계속합니다. 이 부분은 각 채굴풀마다 방식이 조금씩 차이가 날 수 있습니다.

 

⑥ 난이도 (Difficulty)

 

해싱작업 속도만 빠르다면 10분이 아니라 1분 안에도 목표값을 찾아낼 수 있을 것입니다. 그래서 충분한 컴퓨팅 파워만 있다면 1초안에도 블록을 생성하는 것이 가능할 것이기 때문에 이것을 막기 위해 도입된 것이 난이도의 개념으로 목표는 2016개의 블록을 생성하는 데에 2주(2016블록X10분=2주)가 소요돼야 한다는 것이며, 작업방식은 해싱을 통한 목표값 찾기, 그리고 난이도 조정방법은 목표치를 초과/미달하는 부분만큼 목표값의 난이도가 변경되는 것으로 이 난이도 조정은 매 2016번째 블록마다 이루어지게 됩니다. 만일 2016개의 블록을 생성하는데 2주가 아닌 1주일이 걸렸다면, 목표에 도달키 위한 필요작업의 50%만 이루어진 것이므로, 목표에 도달치 못한 것이다. 따라서 난이도를 2배로 증가시켜서, 기존 1주일의 두 배인 2주가 걸리게 조정하고 목표를 충족시키게 됩니다.

 

 

----------

 

----------

⑦ 이체확인 (Confirmation)

 

이용자가 이체를 하면 이를 채굴자가 자신의 블록에 넣어서 발행하게 되는데, 이 순간 해당 이체내역의 이체확인은 1이 되며, 그리고 해당 블록의 해시를 이용한 다음의 블록이 발행되면, 해당 이체내역의 이체확인은 2가 되는 식으로 비트코인 프로그램은 각 이체가 총 6번(60분)의 이체확인을 받아야 사용이 가능하도록 설계되어 있습니다.

Posted by csgstar