Lompat ke konten

RPC transaksi privat

RPC transaksi privat mengarahkan transaksi bertanda tangan atau bundel ke sekumpulan penyedia, relai, atau pembuat blok yang terbatas sebelum penyebaran melalui mempool publik; yang berubah adalah pengungkapan awal, bukan jaminan validitas eksekusi, penyertaan, harga, atau finalitas.

Diperbarui

Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.

Jawaban langsung

RPC transaksi privat mengirim transaksi bertanda tangan atau bundel terurut melalui jalur layanan terbatas sebelum disebarkan melalui mempool publik. Jalur itu dapat mencakup penyedia RPC, relai, pembuat blok terpilih, dan pencari bila petunjuk diungkapkan. Karena itu, “privat” menerangkan distribusi awal, bukan enkripsi, anonimitas, atau ketakterlihatan bagi perantara.

Layanan ini dapat mengurangi paparan terhadap penyalinan, front-running, atau serangan sandwich di mempool publik, tetapi tidak menjamin penyertaan, keberhasilan eksekusi EVM, eksekusi terbaik, pengembalian MEV, ataupun finalitas. Pengakuan penyedia atau hash transaksi yang dikembalikan hanya membuktikan bahwa permintaan mencapai antarmuka tersebut. Distribusi ke pembuat blok, pemilihan payload, penyertaan dalam blok, status tanda terima, status kanonis, dan finalitas adalah keadaan yang terpisah.

Jangan menganggap semua metode privat dapat saling menggantikan. Satu eth_sendPrivateTransaction, eth_sendBundle lama, dan mev_sendBundle dapat berbeda dalam blok target, isi terurut, revert yang diizinkan, penggantian atau pembatalan, pemilihan pembuat blok, petunjuk privasi, dan aturan pengembalian. Hasil ditentukan oleh chain, endpoint, versi API, dan payload bertanda tangan yang tepat.

Cara kerjanya

Dompet mula-mula membuat dan menandatangani transaksi chain biasa yang berisi chain ID, nonce, tujuan, nilai, calldata, batas gas, dan batas biaya EIP-1559. Perutean privat mengubah tempat byte bertanda tangan itu dikirim; perutean ini tidak melewati urutan nonce, pemeriksaan saldo dan allowance, eksekusi kontrak, aturan base fee, atau validasi konsensus. Penyiaran ulang byte bertanda tangan yang identik mempertahankan hash transaksi, sedangkan penggantian dengan nonce yang sama tetapi biaya atau calldata berbeda memiliki hash lain.

Penyedia dapat menyimulasikan payload pada keadaan yang disebutkan dan mendistribusikannya kepada satu atau beberapa pembuat blok. Simulasi bergantung pada keadaan tersebut: saldo, penyimpanan, nilai oracle, transaksi pesaing, dan base fee dapat berubah sebelum blok dibangun. Pembuat blok dapat mengabaikan transaksi yang valid karena datang terlambat, membayar terlalu sedikit, kalah dari blok yang lebih bernilai, atau tidak pernah mencapai pembuat yang dipilih pengusul blok.

Bundel menambahkan kebijakan eksekusi berurutan. Revert wajib dapat membuat bundel tidak memenuhi syarat, sedangkan revert yang secara eksplisit diizinkan dapat menghabiskan gas dan membiarkan perubahan keadaan yang berhasil lebih awal tetap berlaku. Itu bukan rollback semua atau tidak sama sekali secara otomatis. Petunjuk privasi dapat mengungkap hash transaksi, alamat kontrak, selector fungsi, calldata, atau log; mode cepat atau distribusi luas ke pembuat blok memperbesar jangkauan dan biasanya memperluas kumpulan pihak yang dipercaya serta menerima pengungkapan.

Penanganan nonce dan batas waktu memerlukan mesin keadaan yang eksplisit. Transaksi privat tertunda dapat tidak terlihat pada tampilan pending RPC publik biasa dan dapat menahan nonce berikutnya. Pembatalan oleh penyedia hanya menghentikan pengiriman mendatang melalui jalur yang dikendalikannya; pembatalan tidak dapat menarik salinan yang telah dibagikan, disiarkan ke publik, atau disertakan. Penggantian dengan nonce sama atau fallback publik berpacu dengan semua versi yang masih hidup dan kembali membuka arus order kepada publik.

Gunakan alur kerja berikut:

  1. Tetapkan chain ID, penyedia, dan versi API; pilih metode transaksi privat tunggal atau bundel, lalu dokumentasikan pencatatan penyedia, distribusi ke pembuat atau pencari, petunjuk privasi, revert, pengembalian, dan kebijakan fallback publik.
  2. Dekode niat belum bertanda tangan dan payload bertanda tangan secara tepat: pengirim, nonce, tujuan, nilai, calldata, allowance, batas gas, batas biaya, tenggat, output minimum, rentang blok target, dan setiap unsur bundel secara berurutan.
  3. Simulasikan terhadap blok dan keadaan yang teridentifikasi; uji jalur sukses dan revert, pergeseran keadaan, slippage, perubahan saldo, kegagalan yang diizinkan, total gas, dan hasil terburuk yang masih valid secara ekonomi.
  4. Kirim melalui endpoint yang dituju dan simpan hash transaksi atau bundel, ID permintaan, identitas autentikasi, stempel waktu, blok target atau maksimum, pembuat blok, petunjuk, dan payload asli.
  5. Pantau pengakuan penyedia, simulasi, distribusi ke pembuat, nonce privat, dan kedaluwarsa secara terpisah dari tanda terima kanonis; perbarui asumsi blok target dan biaya sebelum mengirim ulang.
  6. Pada tenggat, pilih secara eksplisit untuk menunggu, membatalkan, mengganti dengan nonce sama, atau mengungkap melalui fallback publik; jangan berasumsi pembatalan menarik salinan dan jangan mengirim versi yang bertentangan tanpa melacak perlombaannya.
  7. Rekonsiliasi status tanda terima, log, saldo, output, harga gas efektif, dan pengembalian pada chain yang benar, lalu tunggu keadaan safe atau finalized yang diwajibkan dan selidiki reorganisasi, kebocoran, atau perbedaan eksekusi yang tidak dapat dijelaskan.

Contoh

  • Perlindungan output bukan eksekusi terbaik. Sebuah swap mengutip input 100,000 USDC dengan output minimum 98,800 USDC. Eksekusi publik menghasilkan 98,950 USDC, yaitu kekurangan 1,050 USDC atau 1.05% dari nilai par, tetapi hanya 150 USDC di atas minimum. Perutean privat dapat mengurangi pengamatan; hal ini tidak menjamin output yang lebih baik daripada venue publik lain atau RFQ.
  • Batas penyertaan EIP-1559. Transaksi memakai 180,000 gas, base fee 30 gwei, batas prioritas 2 gwei, dan biaya maksimum 40 gwei. Harga efektif adalah min(40, 30 + 2) = 32 gwei, sehingga biayanya 180,000 x 32 = 5,760,000 gwei = 0.005760 ETH. Jika base fee blok kandidat adalah 42 gwei, biaya maksimum 40 gwei tidak dapat menutupinya dan perutean privat tidak dapat membuat transaksi layak disertakan di blok itu.
  • Perlombaan fallback dengan nonce sama. Payload privat A dan fallback publik B sama-sama memakai nonce 42. Ada dua pengiriman, tetapi chain kanonis hanya dapat memakai nonce 42 sekali. Jika A masuk di blok N + 2, B menjadi usang; jika B masuk lebih dahulu, A menjadi usang. Pengakuan pembatalan bukan undo, dan setiap salinan yang masih hidup harus dilacak.
  • Revert yang diizinkan bukan rollback atomik. Dalam bundel terurut, approval memakai 45,000 gas dan swap mengalami revert setelah 120,000 gas pada harga efektif 25 gwei. Tanpa aturan revert yang diizinkan, bundel dikecualikan menurut kebijakan tersebut. Jika swap diizinkan mengalami revert dan bundel disertakan, approval dapat tetap berlaku, swap memiliki status = 0, dan biaya gas adalah (45,000 + 120,000) x 25 gwei = 0.004125 ETH.

Risiko

  • Dompet menggunakan chain, penyedia, endpoint, atau versi API yang salah.
  • DNS, TLS, kunci API, atau antarmuka RPC terkena phishing atau disusupi.
  • Penyedia mengorelasikan IP, akun, waktu, dan data payload bertanda tangan.
  • Relai mencatat, membocorkan, menyalin, atau menyiarkan ulang transaksi penuh.
  • Petunjuk privasi mengungkap hash, selector, kontrak, calldata, atau log.
  • Mode cepat atau distribusi luas ke pembuat memperbesar kumpulan kepercayaan dan pengungkapan.
  • Pembuat blok atau pencari menyensor, menyalin, atau mengeksploitasi arus order privat.
  • Simulasi menggunakan blok yang salah atau menjadi usang sebelum pembangunan.
  • Keadaan kontrak, saldo, harga, atau urutan berubah dan menyebabkan revert.
  • Base fee, biaya maksimum, atau biaya prioritas membuat payload tidak menarik atau tidak valid.
  • Celah nonce atau transaksi privat tertunda yang tak terlihat menahan nonce berikutnya.
  • Pembatalan atau penggantian bernonce sama kalah dalam perlombaan waktu.
  • Fallback publik diam-diam memulihkan paparan MEV mempool publik.
  • Blok target, blok maksimum, stempel waktu, atau TTL layanan disalahpahami.
  • Urutan bundel atau kebijakan revert yang diizinkan meninggalkan perubahan keadaan yang tidak dimaksudkan.
  • Cakupan pembuat, relai, pengusul, atau penyensoran mencegah penyertaan.
  • Gangguan penyedia, pembatasan laju, atau latensi melewatkan jendela valid.
  • Perutean privat disalahartikan sebagai perlindungan slippage atau eksekusi terbaik.
  • Status tanda terima, log, saldo, biaya, atau pengembalian direkonsiliasi secara keliru.
  • Reorganisasi, asumsi finalitas dini, atau batas sequencer L2 membalikkan kesimpulan.

Kesalahpahaman umum

  • Privat berarti terenkripsi, anonim, dan tidak terlihat. Penyedia dan pihak hilir terpilih dapat melihat payload lengkap atau petunjuk yang diungkapkan.
  • RPC privat menjamin tidak ada MEV dan harga terbaik. Yang berubah adalah distribusi; batas kontraktual, perbandingan venue, dan kualitas eksekusi tetap penting.
  • Keberhasilan RPC atau hash transaksi berarti sudah disertakan, berhasil, dan final. Pengakuan, tanda terima, status EVM, dan finalitas adalah keadaan berbeda.
  • Pembatalan atau penggantian dengan nonce yang sama pasti berhasil. Salinan dan versi pesaing berlomba sampai salah satunya disertakan atau semuanya kedaluwarsa.
  • Transaksi privat otomatis merupakan bundel atomik. Transaksi tunggal dan beragam format bundel memiliki aturan urutan dan revert yang berbeda.

Topik terkait

Sumber

Navigasi

Cari di wiki...