논스(Nonce)의 유무가 가장 큰 차이
필드 | 설명 |
---|---|
버전 번호 | 채굴자와 노드가 트랜잭션 처리에 사용할 규칙을 지정하는데 사용 |
입력 카운터 | 트랜잭션에 포함된 입력의 개수 |
입력 리스트 | 블록의 첫 트랜잭션은 코인베이스 트랜잭션(Coinbase Transaction). 입력 리스트에는 하나 이상의 트랜잭션 입력이 포함 |
출력 카운터 | 출력의 개수를 나타내는 양의 정수 |
출력 리스트 | 트랜잭션에 포함된 출력 |
로크(Lock) 시간 | 트랜잭션이 유효해지는 가장 빠른 시간을 정의하는 필드 |
필드 | 설명 |
---|---|
논스(Nonce) | 발신 EOA에 의해 발행되어 메시지 재사용을 방지하는데 사용되는 일련번호 |
가스 가격(Gas Price) | 발신자가 지급하는 가스의 가격 |
가스 한도(Gas Limit) | 이 트랜잭션을 위해 구입할 가스의 최대량 |
수신자(Recipient) | 목적지 이더리움의 주소 |
값(value) | 목적지에 보낼 이더의 양 |
데이터(Data) | 가변 길이 바이너리 데이터 페이로드 |
v,r,s | EOA의 ECDSA 디지털 서명의 세가지 구성 요소 |
논스는 중복되지 않고 순차적이기 때문에, 같은 논스에 여러 트랜잭션 전송이 발생하였다면 해당 논스 중 제일 높은 가스비를 지불한 트랜잭션이 처리된다.
만약, 논스가 0인 트랜잭션 전송 후 논스가 2인 트랜잭션을 전송하면, 두 번째 트랜잭션은 어떤 블록에도 포함되지 않는다. 이더리움 네트워크는 누락된 논스가 나타날 때까지 기다리는 동안 두 번째 논스를 멤풀(Mempool)에 저장한다.
멤풀(Mempool)이란, 아직 블록에 들어가지 않은 상태의 트랜잭션들이 어떤 공간에 있는 것을 의미한다.
다음 논스가 1인 누락된 트랜잭션을 전송하면, 두 트랜잭션이 처리가 되고 블록에 포함된다.
이중지불 방지를 위한 방법