어제는 서울 국제 도서전 행사가 시작했어요. 제가 좋아하는 행사인데, 회사가 마침 근처라서, 점심시간과 잠깐 미팅 없을 때 갔다왔더니 하루가 행복하네요. 다만 갔다와서 SNS에서 도서전을 찾아봤더니 슬프고 부끄러우 일이 일어나고 있더라구요. 일요일까지 코엑스에서 진행되니 가까우신 분들은 가보셔도 좋을 거 같아요.
오늘은 트랜잭션의 nonce에 대해서 알아볼게요.
nonce: number + once
nonce라는 말 자체는 한 번 쓰는 숫자라는 의미에요. 어디서든 한 번 쓰고 버리는 숫자를 nonce라고 부를 수 있어요. 그래서 nonce라는 단어가 여러 곳에서 사용될 수 있는데, 사용되는 곳마다 다르의미를 가져요.
블록체인 마이닝에서의 nonce
비트코인이나 옛날 이더리움은 PoW방식으로 블록을 만들었어요. 엄청 좋은 컴퓨터를 사용해서 블록을 발굴해내는 방식이에요. 이 때도 nonce라는 이름의 숫자를 하나 사용해요. 이 nonce는 트랜잭션에서의 nonce와 전혀 다르고, 굳이 자세히 알 필요 없어서 넘어갈게요.
Transaction에서의 nonce
트랜잭션에서의 nonce는 트랜잭션의 중복처리를 방지하는 용도로 사용되어요. 한 지갑에서 보낸 트래잭션은 서로 다른, 순차적으로 증가하는 nonce 값을 가져요.
예를들어서 지갑을 처음 만들어서 보내는 트랜잭션의 nonce는 항상 0이에요. 그 다음에 보내는 트랜잭션은 1이구요, 이어서 트랜잭션을 보낼 때마다 하나씩 증가해서 사용해요.
블록체인에서는 한 지갑에서 보낸 서로 다른 트랜잭션이 nonce가 같으면, 둘 중 하나만 처리를 해요. 이 특징을 이용해서 지갑은 트랜잭션 취소 기능과 트랜잭션 부스팅 기능을 제공할 수 있어요. 이 내용은 다음 시간에 이어서 할게요.
오늘은 짧게 여기서 끝낼게요. nonce 관련 더 공부할 내용은 있지만, nonce 라는 개념이 익숙지 않은 개념이니, 머리속에서 숙성될 시간을 가지고 다시 만나요.