교육 목적의 정보이며 트랜잭션 또는 보안 조언이 아닙니다. 교체와 취소는 경쟁 결과, 클라이언트, 제출 경로에 따라 달라집니다. 원래 트랜잭션이 밀려났다고 판단하기 전에 체인, 발신자, 논스, 서명된 페이로드, 수수료 필드, 영수증과 최종성을 확인하십시오.
직접 답변
이더리움 트랜잭션 교체는 동일한 발신자가 같은 nonce로 보낸 다른 후보보다 새로 서명한 트랜잭션을 노드가 우선할 수 있도록 하는 로컬 트랜잭션 풀 정책입니다. 합의 계층의 전역 Replace-by-Fee 스위치가 아닙니다. 한 노드가 새 해시를 받아들여도 다른 노드, 비공개 릴레이 또는 빌더에 있는 이전 서명 트랜잭션이 삭제되지는 않습니다. 어느 후보가 계정 논스를 소비하는지는 정규 체인에 포함된 결과로 결정됩니다.
지갑의 ‘가속’ 기능은 일반적으로 원래 목적지, 금액, calldata를 유지하면서 수수료 필드를 높입니다. 공개 풀의 ‘취소’ 기능은 보통 같은 발신자와 논스로 금액이 0인 자기 전송을 만듭니다. 이는 경쟁 트랜잭션이지 되돌리기 기능이 아닙니다. 원래 트랜잭션이 먼저 포함되면 그 전송이나 컨트랙트 호출은 취소되지 않습니다. 상품별 비공개 경로는 다른 취소 API를 정의할 수 있습니다. 예를 들어 Flashbots Protect는 온체인에 기록되지 않는 인증 취소를 문서화하지만, 이를 공개 이더리움 트랜잭션 교체에 일반화해서는 안 됩니다.
작동 방식
- 정확한 이력을 고정합니다. 체인 ID, 클라이언트와 버전, 헤드 블록과 기본 수수료, 제출 경로, 발신자, 정규 계정 논스, 원본 서명 바이트, 트랜잭션 해시와 유형을 기록합니다. 관련된 여러 공개·비공개 관측 지점을 조회하며, 지갑 표시나 단일 RPC 응답을 전역 상태로 보지 않습니다.
- 원래 트랜잭션 상태를 정확히 분류합니다. 수용 전 거절, 로컬 pending, 논스 갭 뒤 queued, 삭제 또는 축출, 비공개 제출, 정상 포함,
status = 0으로 포함, 재구성으로 제거, 최종 확정을 구분합니다. 정규 체인에서 논스가 소비된 뒤에는 교체가 가능하다고 보아서는 안 되지만, 재구성이 경쟁을 다시 열 수 있습니다. - 새 의도를 정의합니다. 가속 트랜잭션은 의도한 의미를 담는 모든 필드를 재현해야 합니다. 공개 취소 시도는 보통 같은 발신자와 논스를 쓰고
to = sender,value = 0, 빈 calldata를 설정합니다. 서명 전에 체인 ID, 유형, 목적지, 금액, calldata, 액세스 목록, gas 한도, Blob 해시와 권한 부여를 비교합니다. - 대상 노드의 실제 교체 정책을 확인합니다. legacy와 type-1 트랜잭션은
gasPrice를 쓰고, type-2 트랜잭션은maxFeePerGas와maxPriorityFeePerGas를 가집니다. type-3 트랜잭션에는maxFeePerBlobGas도 있으며 sidecar가 필요합니다. 현재 Geth의 일반txpool.pricebump = 10과blobpool.pricebump = 100기본값은 Geth 설정의 예시일 뿐 이더리움 전체의 상수가 아닙니다. - 인상 자격과 자금 요건을 따로 계산합니다. type 2의 유효 가격은
min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas)입니다. 후보는 올바르게 인코딩되어야 하고 고유 gas가 충분해야 하며, 잔액은 전송 금액과 최대 수수료 노출을 감당해야 합니다. 상한을 높여도 잘못된 calldata는 고쳐지지 않으며 EVM 실행 성공도 보장하지 않습니다. - 의도적으로 제출하고 모든 응답을 보존합니다. 공개 재전파는 의도를 노출해 MEV의 표적이 될 수 있습니다. 비공개 릴레이마다 가시성, 취소 방법, 빌더 범위와 가동성이 다릅니다. 각 경로에서 이전 해시와 새 해시를 추적하며, 로컬 수용으로 경쟁 후보가 삭제됐다고 가정하거나 금액을 담은 세 번째 후보를 무작정 보내지 않습니다.
- 정규 체인의 승자를 대조합니다. 필요한 최종성 수준에서 영수증 블록과 해시, 트랜잭션 인덱스,
status, gas 사용량, 유효 gas 가격, 로그, 발신자 논스, 잔액과 컨트랙트 상태를 확인합니다. 패배한 해시는 증거에 따라 교체됨, 삭제됨 또는 계속 관측됨으로 기록하고, 재구성 뒤에는 분석을 다시 시작합니다.
계산 예시
- 일반 type-2 교육용 인상. 이전 후보의 값은
maxFeePerGas = 40 gwei와maxPriorityFeePerGas = 2 gwei입니다. 인상률이10%인 교육용 Geth 설정에서 산술 임계값은44 gwei와2.2 gwei입니다.44/2.1 gwei후보는 우선 수수료 임계값에 미달하고,44/2.2 gwei는 두 교육용 임계값에 도달합니다. 기본 수수료가32 gwei, gas 사용량이21,000이면 유효 가격은34.2 gwei, 총수수료는718,200 gwei = 0.0007182 ETH, 기본 수수료 소각액은0.000672 ETH, 우선 수수료는0.0000462 ETH입니다. 실제 수용 여부는 구현, 버전과 wei 단위 정수 반올림에 따라 달라집니다. - 기본 수수료 민감도. 교체 후보의 상한이
66/4.4 gwei라고 합시다. 기본 수수료가60 gwei이면 유효 가격은min(66, 60 + 4.4) = 64.4 gwei입니다. 기본 수수료가65 gwei이면 유효 가격은66 gwei, 유효 우선 수수료는1 gwei뿐입니다. 기본 수수료가67 gwei이면66 < 67이므로, 후보가 로컬 인상 검사를 충족했더라도 이 상한으로는 해당 블록에 포함될 수 없습니다. - 취소 경쟁. 원래 논스
20트랜잭션은 상점에5 ETH를 보냅니다. 이것이21,000 * 42 gwei = 0.000882 ETH의 수수료로 먼저 승리하면 상점은5 ETH를 받고 취소 후보는 nonce too low가 됩니다. 금액 0의 자기 전송이21,000 * 45 gwei = 0.000945 ETH의 수수료로 먼저 승리하면 논스20을 소비하므로 원래 트랜잭션은 나중에 같은 정규 이력에 들어갈 수 없습니다. ‘취소’ 버튼을 눌렀다는 사실만으로 결과를 알 수는 없습니다. - Blob 풀 경계. 이전 type-3 후보의 실행 수수료 상한은
100 gwei, 우선 수수료 상한은3 gwei, Blob 수수료 상한은20 gwei입니다. 인상률이100%인 교육용 Geth Blob 풀 설정에서 산술 임계값은200/6/40 gwei입니다.200/6/39 gwei후보는 Blob 상한 임계값에 미달합니다.200/6/40 gwei는 세 교육용 임계값에 모두 도달하지만 유효한 sidecar, 논스, 잔액과 풀 수용이 여전히 필요합니다. 이 값은 일반 트랜잭션이나 다른 클라이언트의 규칙이 아닙니다.
위험
- 잘못된 체인 ID나 네트워크를 선택한다.
- 잘못된 발신자나 계정 논스를 선택한다.
- 오래된 헤드, 기본 수수료 또는 정규 논스를 사용한다.
- 원래 트랜잭션이 이미 포함되거나 최종 확정된 뒤 교체를 시도한다.
- 일반 트랜잭션 풀 규칙을 ERC-4337
UserOperation에 적용한다. - 다른 클라이언트, 제공자, 버전 또는 설정도 같은 정책을 쓴다고 가정한다.
- wei 단위 정수 반올림 때문에 인상 임계값에 미달한다.
- 필수 EIP-1559 수수료 필드 중 하나만 높인다.
maxFeePerGas를 후보 블록의 기본 수수료보다 낮게 설정한다.- Blob 수수료 상한, sidecar 또는 Blob 풀의 특별 규칙을 누락한다.
- 금액과 승인한 최대 수수료를 감당할 잔액이 없다.
- 서명, 유형, 인코딩, 고유 gas 또는 체인 도메인이 유효하지 않다.
- 목적지, 금액, calldata, 액세스 목록 또는 Blob 해시를 실수로 바꾼다.
- 공개 취소 트랜잭션이 포함 경쟁에서 패배한다.
- 이전 트랜잭션이 다른 노드나 빌더 입력에 남아 있다.
- 비공개 릴레이가 제출 내용을 유출, 검열, 삭제하거나 취소하지 못한다.
- 공개 재전파가 의도를 프런트러닝, 샌드위치 또는 다른 MEV에 노출한다.
- 논스 갭이 후속 트랜잭션을 막거나 중복 전송을 유발한다.
- 교체 후보가 포함됐지만 REVERT 또는 out-of-gas가 발생해 논스와 수수료를 소비한다.
- 재구성, 최종성 또는 영수증 이력 오류로 후보가 되살아나거나 잘못 분류된다.
흔한 오해
- 수수료가 더 높은 후보는 이전 트랜잭션을 네트워크 전체에서 삭제한다.
- 숫자로 된 논스가 같으면 발신자가 달라도 두 트랜잭션이 서로를 교체한다.
- 지갑의 ‘취소’ 버튼은 이미 포함된 트랜잭션을 되돌릴 수 있다.
- 한 노드가 교체 후보를 수용하면 빌더도 이를 포함한다는 뜻이다.
- 보편적인 10% 인상 규칙이 모든 클라이언트, Blob 트랜잭션, 비공개 릴레이와
UserOperation에 적용된다.
관련 주제
출처
- Transactions - Ethereum.org (확인일: 2026-08-13)
- EIP-1559: Fee market change for ETH 1.0 chain - Ethereum Improvement Proposals (확인일: 2026-08-13)
- txpool Namespace - go-ethereum (확인일: 2026-08-13)
- Command-line Options - go-ethereum (확인일: 2026-08-13)
- eth_sendRawTransaction - Ethereum Execution APIs (확인일: 2026-08-13)
- EIP-4844: Shard Blob Transactions - Ethereum Improvement Proposals (확인일: 2026-08-13)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals (확인일: 2026-08-13)
- Cancellations - Flashbots Documentation (확인일: 2026-08-13)