본문으로 이동

비공개 트랜잭션 RPC

비공개 트랜잭션 RPC는 공개 멤풀 전파 전에 서명된 트랜잭션이나 번들을 제한된 공급자, 릴레이, 빌더 집합으로 전달합니다. 이는 최초 공개 범위를 바꿀 뿐 실행 유효성, 포함, 가격, 최종성을 보장하지 않습니다.

업데이트

교육 목적의 정보이며 투자 조언이 아닙니다. 비공개 전달은 실패하거나 거래 의도를 노출하거나 불리한 체결과 되돌릴 수 없는 손실을 초래할 수 있습니다.

핵심 답변

비공개 트랜잭션 RPC는 공개 멤풀에 전파되기 전에 서명된 트랜잭션이나 순서가 정해진 번들을 제한된 서비스 경로로 보냅니다. 경로에는 RPC 공급자, 릴레이, 지정 빌더와 공개된 힌트를 받는 서처가 포함될 수 있습니다. 따라서 ’비공개’는 최초 배포 방식을 뜻할 뿐 암호화, 익명성, 중간자에게 보이지 않음을 뜻하지 않습니다.

공개 멤풀에서의 복사, 프런트러닝, 샌드위치 공격 노출을 줄일 수 있지만 블록 포함, EVM 실행 성공, 최선집행, MEV 환급, 최종성을 보장하지 않습니다. 공급자 확인이나 반환된 트랜잭션 해시는 요청이 그 인터페이스에 도착했다는 사실만 증명합니다. 빌더 배포, 페이로드 선택, 블록 포함, 영수증 status, 정규 체인 지위, 최종성은 별도 상태입니다.

모든 비공개 메서드를 같은 것으로 취급하면 안 됩니다. 단일 eth_sendPrivateTransaction, 기존 eth_sendBundle, mev_sendBundle은 대상 블록, 순서가 정해진 본문, 허용된 리버트, 교체·취소, 빌더 선택, 프라이버시 힌트, 환급 규칙이 다를 수 있습니다. 정확한 체인, 엔드포인트, API 버전, 서명된 페이로드가 결과를 결정합니다.

작동 방식

지갑은 먼저 체인 ID, nonce, 목적지, 금액, calldata, gas 한도, EIP-1559 수수료 상한이 포함된 일반 체인 트랜잭션을 만들고 서명합니다. 비공개 전달은 서명된 바이트의 제출 위치만 바꾸며 nonce 순서, 잔액·allowance 검사, 컨트랙트 실행, base fee 규칙, 합의 검증을 우회하지 않습니다. 동일한 서명 바이트를 재전송하면 트랜잭션 해시가 유지되지만, 수수료나 calldata가 달라진 동일 nonce 교체 트랜잭션은 해시도 다릅니다.

공급자는 지정된 상태를 기준으로 페이로드를 시뮬레이션하고 하나 이상의 빌더에 배포할 수 있습니다. 시뮬레이션은 그 상태를 전제로 합니다. 잔액, 스토리지, 오라클 값, 경쟁 트랜잭션, base fee는 블록 구축 전에 바뀔 수 있습니다. 유효한 트랜잭션도 늦은 도착, 낮은 지급액, 더 가치 있는 블록과의 경쟁, 제안자가 선택한 빌더에 도달하지 못한 이유로 빠질 수 있습니다.

번들에는 순서가 정해진 실행 정책도 추가됩니다. 반드시 성공해야 하는 실행이 리버트되면 번들이 부적격해질 수 있습니다. 명시적으로 허용한 리버트는 gas를 소모하면서 앞서 성공한 번들 실행의 상태 변경을 남길 수 있습니다. 이는 자동적인 전부 성공 또는 전부 롤백이 아닙니다. 프라이버시 힌트는 트랜잭션 해시, 컨트랙트 주소, 함수 선택자, calldata, 로그를 공개할 수 있습니다. 빠른 모드나 광범위한 빌더 배포는 도달 범위를 넓히지만 보통 신뢰·공개 범위도 넓힙니다.

nonce와 시간 제한은 명시적인 상태 머신으로 관리해야 합니다. 비공개 대기 트랜잭션은 일반 공개 RPC의 pending 조회에 나타나지 않을 수 있고 이후 nonce를 막을 수 있습니다. 공급자 취소는 공급자가 통제하는 경로의 향후 제출만 중단합니다. 이미 공유되거나 공개 전송되거나 포함된 복사본은 회수할 수 없습니다. 동일 nonce 교체나 공개 폴백은 살아 있는 모든 버전과 경쟁하며 공개 주문 흐름 노출을 다시 일으킵니다.

다음 절차를 사용합니다.

  1. 체인 ID, 공급자, API 버전을 고정합니다. 단일 비공개 트랜잭션 또는 번들 메서드를 선택하고 공급자 기록, 빌더·서처 배포, 프라이버시 힌트, 리버트, 환급, 공개 폴백 정책을 문서화합니다.
  2. 서명 전 의도와 서명된 페이로드를 정확히 디코딩합니다. 발신자, nonce, 목적지, 금액, calldata, allowance, gas 한도, 수수료 상한, 기한, 최소 출력, 대상 블록 범위, 각 순서형 번들 항목을 확인합니다.
  3. 식별된 블록과 상태를 기준으로 시뮬레이션합니다. 성공·리버트 경로, 상태 변동, 슬리피지, 잔액 변화, 허용 실패, 총 gas, 경제적으로 가장 불리하지만 유효한 결과를 시험합니다.
  4. 의도한 엔드포인트로 제출하고 트랜잭션 또는 번들 해시, 요청 ID, 인증 주체, 시각, 대상·최대 블록, 빌더, 힌트, 원본 페이로드를 보존합니다.
  5. 공급자 확인, 시뮬레이션, 빌더 배포, 비공개 nonce, 만료를 정규 영수증과 별도로 감시합니다. 재제출 전에 대상 블록과 수수료 가정을 갱신합니다.
  6. 기한에 도달하면 대기, 취소, 동일 nonce 교체, 공개 폴백 공개 중 하나를 명시적으로 선택합니다. 취소가 복사본을 회수한다고 가정하거나 경쟁을 추적하지 않은 채 충돌 버전을 보내면 안 됩니다.
  7. 올바른 체인의 영수증 status, 로그, 잔액, 출력, 실효 gas 가격, 환급을 대조합니다. 그 뒤 요구되는 safe 또는 finalized 상태를 기다리고 재구성, 노출, 설명되지 않는 실행 차이를 조사합니다.

예시

  • 출력 보호는 최선집행이 아닙니다. 스왑 입력 견적이 100,000 USDC, 최소 출력이 98,800 USDC라고 가정합니다. 공개 실행은 98,950 USDC를 반환하여 액면가보다 1,050 USDC, 즉 1.05% 부족하고 최소 출력보다 불과 150 USDC 높습니다. 비공개 전달은 관찰을 줄일 수 있지만 다른 공개 거래소나 RFQ보다 나은 출력을 보장하지 않습니다.
  • EIP-1559 포함 상한. 트랜잭션이 180,000 gas를 사용하고 base fee는 30 gwei, priority fee 상한은 2 gwei, max fee는 40 gwei라고 가정합니다. 실효 가격은 min(40, 30 + 2) = 32 gwei이므로 수수료는 180,000 x 32 = 5,760,000 gwei = 0.005760 ETH입니다. 후보 블록의 base fee가 42 gwei이면 40 gwei max fee로 감당할 수 없고, 비공개 전달도 해당 블록에 포함 가능한 트랜잭션으로 만들지 못합니다.
  • 동일 nonce 폴백 경쟁. 비공개 페이로드 A와 공개 폴백 B가 모두 nonce 42를 사용합니다. 제출은 두 건이지만 정규 체인이 nonce 42를 소비할 수 있는 횟수는 한 번뿐입니다. A가 블록 N + 2에 포함되면 B가 무효가 되고, B가 먼저 포함되면 A가 무효가 됩니다. 취소 확인은 실행 취소가 아니며 살아 있는 모든 복사본을 추적해야 합니다.
  • 허용된 리버트는 원자적 롤백이 아닙니다. 순서형 번들에서 approve가 45,000 gas를 사용하고 스왑이 120,000 gas를 소모한 뒤 리버트하며 실효 가격이 25 gwei라고 가정합니다. 허용 리버트 규칙이 없으면 명시된 정책에 따라 번들이 제외됩니다. 스왑 리버트를 허용하고 번들이 포함되면 approve는 남고 스왑은 status = 0, gas 비용은 (45,000 + 120,000) x 25 gwei = 0.004125 ETH입니다.

위험

  • 지갑이 잘못된 체인, 공급자, 엔드포인트 또는 API 버전을 사용합니다.
  • DNS, TLS, API 키 또는 RPC 인터페이스가 피싱·침해됩니다.
  • 공급자가 IP, 계정, 시각, 서명된 페이로드 데이터를 연계합니다.
  • 릴레이가 전체 트랜잭션을 기록, 노출, 복사 또는 재전송합니다.
  • 프라이버시 힌트가 해시, 선택자, 컨트랙트, calldata 또는 로그를 공개합니다.
  • 빠른 모드나 광범위한 빌더 배포가 신뢰·공개 범위를 넓힙니다.
  • 빌더나 서처가 비공개 주문 흐름을 검열, 복사 또는 악용합니다.
  • 시뮬레이션이 잘못된 블록을 사용하거나 구축 전에 오래됩니다.
  • 컨트랙트 상태, 잔액, 가격 또는 순서가 바뀌어 리버트됩니다.
  • base fee, max fee 또는 priority fee 때문에 페이로드가 매력 없거나 무효가 됩니다.
  • nonce 간격이나 보이지 않는 비공개 대기 트랜잭션이 이후 nonce를 막습니다.
  • 취소나 동일 nonce 교체가 시간 경쟁에서 집니다.
  • 조용한 공개 폴백이 공개 멤풀 MEV 노출을 되살립니다.
  • 대상 블록, 최대 블록, 타임스탬프 또는 서비스 TTL을 오해합니다.
  • 번들 순서나 허용 리버트 정책이 의도치 않은 상태 변경을 남깁니다.
  • 빌더, 릴레이, 제안자 도달 범위 부족이나 검열로 포함되지 않습니다.
  • 공급자 장애, 요청 제한 또는 지연으로 유효 기간을 놓칩니다.
  • 비공개 전달을 슬리피지 보호나 최선집행으로 오인합니다.
  • 영수증 상태, 로그, 잔액, 수수료 또는 환급을 잘못 대조합니다.
  • 재구성, 성급한 최종성 가정 또는 L2 시퀀서 경계가 결론을 뒤집습니다.

흔한 오해

  • 비공개는 암호화되고 익명이며 아무에게도 보이지 않는다는 뜻입니다. 공급자와 지정된 하위 참여자는 전체 페이로드나 공개된 힌트를 볼 수 있습니다.
  • 비공개 RPC는 MEV가 없고 최적 가격을 보장합니다. 배포 경로만 바뀝니다. 컨트랙트 제한, 거래소 비교, 체결 품질은 여전히 중요합니다.
  • RPC 성공이나 트랜잭션 해시는 포함, 성공, 최종 확정을 뜻합니다. 확인, 영수증, EVM 상태, 최종성은 별도 상태입니다.
  • 취소나 동일 nonce 교체는 반드시 성공합니다. 하나가 포함되거나 모두 만료될 때까지 복사본과 경쟁 버전이 경합합니다.
  • 비공개 트랜잭션은 자동으로 원자적 번들이 됩니다. 단일 트랜잭션과 여러 번들 형식은 순서·리버트 의미가 다릅니다.

관련 주제

출처

탐색

위키 검색...