논스 (임시값) 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
'''논스'''(nonce)는 [[블록체인]]에서 목표값 이하의 블록 [[해시]]를 찾기 위해 임시로 사용하는 숫자이다. '''넌스''', '''난스''' 또는 '''임시값'''이라고도 한다.
+
'''논스'''(nonce)는 [[블록체인]]에서 목표값 이하의 블록 [[해시]]를 찾기 위해 임시로 사용하는 숫자이다. '''넌스''' 또는 '''난스'''라고도 한다.
  
== 개요 ==
+
일반적으로 블록의 해시값은 해당 블록의 생성일시, 버전, 비츠(bits), 루트해시, 이전 블록의 해시, 그리고 논스(nonce)라고 불리는 임시값 등을 조합한 후 해시로 변환하여 생성한다.<ref>어미새, [https://steemit.com/kr/@yahweh87/5 #5 - 블록해시에 관한 정리]〉, 《스팀잇》, 2018년 2월</ref> 해당 블록의 생성일시, 버전, 난이도, 루트해시와 이전 블록의 해시값은 이미 확정되어 정해진 값을 가지고 있지만, 논스라는 임시값이 달라짐에 따라 해시 연산 결과로 생성되는 블록 해시값도 다양하게 나올 수 있다. 예를 들어 논스가 1인 경우의 해시값과 2인 경우의 해시값은 전혀 다르다. 이 논스 값을 수없이 바꿔가면서 하나씩 대입하다가 새로 생성된 해시값이 일정한 목표값보다 더 작을 경우에 새로운 블록이 성공적으로 생성된다. 이처럼 특정한 블록에 대해 목표값 이하의 크기를 가진 해시값을 생성하는 논스값을 찾음으로써 새로운 블록을 생성하는 행위를 [[작업증명]](PoW)이라고 한다. 작업증명의 대가로 일정한 개수의 암호화폐를 지급받는 것을 [[채굴]](採掘) 또는 마이닝(mining)이라고 한다. 결국 채굴을 통한 작업증명 과정은 목표값 이하의 블록해시를 생성하는 '논스값'을 찾는 행위이다.
논스(nonce)는 [[비트코인]]의 창시자인 [[사토시 나카모토]](Satoshi Nakamoto)가 쓴 [[비트코인 백서]]에 나오는 용어이다.<ref>Satoshi Nakamoto, "[https://bitcoin.org/bitcoin.pdf Bitcoin: A Peer-to-Peer Electronic Cash System]", 2008-10-31</ref>
 
  
[[블록체인]]은 다수의 거래내역을 모아 하나의 블록을 구성하고, 그 블록을 대표하는 해시값을 생성하여 다른 블록과 체인처럼 연결된다. 이 때, 블록을 대표하는 해시값인 [[블록해시]]를 생성하려면, 일정한 조건을 만족해야 한다. 그 일정한 조건이란, 블록 난이도에 따라 자동으로 설정된 '목표값'보다 더 작은 블록해시값을 찾아야 한다는 제약조건이다. 해시는 랜덤하게 생성되기 때문에, 수없이 많은 연산을 반복해서 미리 정해진 목표값 이하의 해시값이 나오도록 해야 한다. 이때 랜덤한 해시값을 생성할 수 있도록 매번 임시값을 사용해야 하는데, 그 임시값이 바로 논스이다.
 
 
일반적으로 블록의 해시값은 해당 블록의 생성일시, 버전, 비츠(bits), [[루트해시]], 이전 블록의 [[해시]], 그리고 논스(nonce)라고 불리는 임시값 등을 조합한 후 해시로 변환하여 생성한다.<ref>어미새, 〈[https://steemit.com/kr/@yahweh87/5 #5 - 블록해시에 관한 정리]〉, 《스팀잇》, 2018년 2월</ref> 해당 블록의 생성일시, 버전, 난이도, 루트해시와 이전 블록의 해시값은 이미 확정되어 정해진 값을 가지고 있지만, 논스라는 임시값이 달라짐에 따라 해시 연산 결과로 생성되는 블록 해시값도 다양하게 나올 수 있다. 예를 들어 논스가 1인 경우의 해시값과 2인 경우의 해시값은 전혀 다르다. 이 논스 값을 수없이 바꿔가면서 하나씩 대입하다가 새로 생성된 해시값이 일정한 목표값보다 더 작을 경우에 새로운 블록이 성공적으로 생성된다.
 
 
이처럼 특정한 블록에 대해 목표값 이하의 크기를 가진 해시값을 생성하는 논스값을 찾음으로써 새로운 블록을 생성하는 행위를 [[작업증명]](PoW)이라고 한다. 작업증명의 대가로 일정한 개수의 암호화폐를 지급받는 것을 [[채굴]](採掘) 또는 마이닝(mining)이라고 한다. 결국 채굴을 통한 작업증명 과정은 목표값 이하의 블록해시를 생성하는 '논스값'을 찾는 행위이다.
 
 
==특징==
 
===비트코인 논스===
 
[[비트코인 논스]]는 [[블록 헤더]]의 일부분을 구성하며, 이를 작업증명 프로세스의 일부로 엔트로피를 제공하여 난이도 요건을 충족하는 해시를 찾기 위해 사용한다. 이는 마이닝 소프트웨어 및 하드웨어의 환경 설정에 따라 달라질 수 있지만, 이론상 논스 값의 분포는 무작위적이어야 한다. 2009년 사토시가 영향력 있는 마이너로 추정되었을 당시 논스 값은 특정한 패턴을 따랐다.<ref>PAUL CHANG, 〈[http://reurl.kr/32242F69HZ 비트코인 논스]〉 , 《비트맥스 블로그》 , 2019-01-23</ref>
 
 
===논스 값의 계산===
 
결론부터 말하자면 nonce 값은, 이 nonce 값을 입력값 중의 하나로 해서 계산되는 [[블록 해쉬]]값이 특정 숫자보다 작아지게 하는 값을 말한다.
 
그리고 해쉬 함수의 특성상, 어떤 해쉬값(A라고 하면)을 결과로 나오게 하는 입력값을 찾으려면, A에서 역산을 하는 방식으로는 찾을 수 없고, 결과가 A가 될 때까지 무작위로 입력값을 계속 바꿔가면서 찾아낼 수 밖에 없다. 그 입력값을 바꿀 수 있는 유일한 통로가 바로 nonce다. 다시 말해, 아래 그림의‘[[블록 헤더]]’란에 포함된 6가지 정보 중에서 확정되지 않아서 값을 바꿀 수 있는 유일한 항목이 nonce다. nonce 값을 1씩 증가시키면서 반복적으로 계산한 블록 해쉬값이 특정 숫자보다 작은 값이 나오면, 그 때의 nonce 값으로 계산한 블록 해쉬가 그 블록의 블록 해쉬로 확정되고, 블록 해쉬라는 식별자를 얻은 그 블록은 새로운 블록으로서 블록 체인에 추가되며 작업이 완료 된다. 블록 해쉬가 특정 숫자보다 낮게 나올 떄의 nonce 값이 바로 작업 증명을 나타내는 nonce 값이다.<ref name="논스">〈[http://reurl.kr/32242F5EDT 블록체인 기초개념]〉,《구글》, 2016-01-23 </ref>
 
 
===작업 난이도===
 
블록 해쉬가 특정 숫자보다 낮게 나올 때의 nonce 값을 찾아내는 것이 작업 증명이라고 했다. 작업 난이도는 nonce 값 계산의 어려운 정도를 나타낸다.<ref name="논스"></ref>
 
 
====비트코인 논스 사례====
 
 
예를 들어, 비트코인의 제520,654번째 블록의 [[해시]]값을 찾기 위해 사용한 논스값은 0xe1c63570이었다.
 
예를 들어, 비트코인의 제520,654번째 블록의 [[해시]]값을 찾기 위해 사용한 논스값은 0xe1c63570이었다.
  
39번째 줄: 20번째 줄:
 
}}
 
}}
  
===이더리움 논스===
 
 
===논스의 규칙===
 
*트랜잭션은 순서대로 이루어져야 한다.
 
현재 계정의 nonce가 1이라면, nonce가 0인 트랜잭션을 전송할 수 없습니다. (오류발생 : 순서를 역행할 수 없습니다.)
 
*순번을 건너 뛰지 않는다.
 
nonce 는 순차적으로 증가하고 처리되기 때문에 nonce 가 3인 트랜잭션을 전송하려면, nonce의 값 0~2까지 전송한 내역이 있어야 한다.<ref name="이더리움 논스">〈[http://reurl.kr/32242F4DTS 이더리움 논스]〉,《미디어》, 2018-10-26 </ref>
 
 
===논스의 필요성===
 
nonce는 중복되지 않고 순차적이기 때문에, 같은 nonce 에 여러 트랜잭션 전송이 발생하였다면 해당 nonce 중 제일 높은 가스비를 지불한 트랜잭션이 처리된다. 이더리움에서는 이러한 방법으로 이중 지불 문제를 방지한다.<ref name="이더리움 논스"></ref>
 
 
{{각주}}
 
{{각주}}
  
== 참고자료 ==
 
* Satoshi Nakamoto, "[https://bitcoin.org/bitcoin.pdf Bitcoin: A Peer-to-Peer Electronic Cash System]", 2008-10-31
 
:(사토시 나카모토 씀, 임민철 번역, 〈[http://ldoge.org/ko/bitcoin.pdf 비트코인: 개인-대-개인간 전자 화폐 시스템]〉, 2008년 10월 31일)
 
*박스여우, 〈[http://reurl.kr/32142A87NN nonce란]〉 , 《티스토리》 , 2019-05-02
 
*〈[http://reurl.kr/32142A87NN Nonce, 임의로 생성된 토큰]〉 , 《IBM》
 
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[블록체인]]
 
* [[블록체인]]
* [[해시]]
 
* [[채굴]]
 
* [[비트코인 백서]]
 
  
{{블록체인 기술|검토 필요}}
+
[[분류:블록체인]]

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)