트랜잭션은 외부 소유 계정(EOA)에 의해 서명된 메시지인데, 이더리움 네트워크에 의해 전송되고 이더리움 블록체인에 기록된다. 이더리움 네트워크에서 시리얼라이즈(serialize)되어 전송되는 트랜잭션의 기본 구조는 다음과 같다.
논스(nonce)
가스 가격(gas price)
가스 한도(gas limit)
수신자(recipient)
값(value)
데이터(data)
v, r, s
이번 주차는 구조 중에서도 가장 중요한 논스에 대해 살펴보았다. 이더리움 황서에서는 논스를 다음과 같이 정의한다.
논스
: 해당 주소에서 보낸 트랜잭션 건수 또는 연결된 코드가 있는 계정의 경우 이 계정에서 만든 컨트랙트 생성 건수와 동일한 스칼라 값
책에서는 논스의 두 가지 중요성을 강조한다. 첫 번째는 트랜잭션 생성 순서대로 포함된다는 점에서 생기는 사용성상의 기능이고 두 번째는 트랜잭션 복제 방지의 기능이다. 내용을 살펴보면 논스를 사용하는 것은 필수임을 알 수 있다.
논스에 따라 트랜잭션을 순차적으로 처리하는 이더리움 네트워크에서 논스를 추적하는 것도 굉장히 중요하다. 해당 내용은 아래 블로그에 자세히 정리해두었다.
이번주는 제일 중요하고도 이해하기 제일 어려운 논스에 공부했다. 반복해서 봐도 이해가 되지 않는 부분들이 많았는데 회의 때 Heom님이 많이 알려주셔서 도움이 많이 됐다. 다음주도 틈틈히 반복해서 봐야겠다.
저번주에 이어 트랜잭션 챕터를 계속 공부하다보니 전에 학습한 이더리움 아키텍쳐, 암호학, 지갑 등의 내용이 문득문득 나올 때마다 얼마 안됐는데도 기억이 잘 나지 않아서 전체적으로 한번 복습을 해야겠다는 생각이 들었다. 지금까지 한 내용을 책으로 다 훑어보기엔 분량이 너무 많고 마침 인프런에 입문자 대상으로 이더리움을 전반적인 내용을 얕게 설명해주는 도큐멘트 형식 강의가 있어서 쭉 읽어보았다. 내용이 많지 않은데도 읽으면서 전에 공부한 내용들이 새록새록 기억이 나서 좋은 복습의 기회가 되었다. 이번주차는 진도를 나가기보단 다시 한번 큰 그림을 그리고 복습하는 시간을 가졌다.