MSTR Cat

Blockchain/Tahap II · Mekanisme/2.2 Transaksi/Pelajaran 5

Mempool

Ruang menunggu tempatan yang diuruskan secara berasingan oleh setiap nod

BahanPeneroka blok dengan paparan mempool (contohnya mempool.space)Pilihan: nod Bitcoin Core (‘getmempoolinfo’)

Ingin tahu

  1. Mengapa transaksi yang sah pada satu nod penuh ditolak oleh nod jirannya?
  2. Apa yang terjadi pada transaksi dengan yuran paling rendah apabila sebuah nod mencapai had memori?
  3. Bagaimanakah pelombong menentukan transaksi belum disahkan yang mana layak mendapat ruang dalam blok seterusnya?

Teroka

  1. Mempool bukanlah pangkalan data pusat; ia ialah senarai tempatan dalam memori yang diurus secara berasingan oleh setiap nod penuh. Bitcoin Core membuang transaksi belum disahkan yang berlarutan terlalu lama: 72 jam semasa tempoh luput diperkenalkan dalam versi 0.12, dan dua minggu (336 jam) sejak versi 0.14. Dua nod yang menerima transaksi dalam urutan berbeza, atau menggunakan tetapan berbeza, mempunyai mempool yang sedikit berbeza.
  2. Setiap nod menggunakan peraturan konsensus (seperti skrip yang sah dan tiada perbelanjaan berganda) bersama-sama peraturan dasar tempatan, seperti kadar yuran minimum dan tetapan RBF. Jika sesuatu transaksi tidak memenuhi ambang kadar yuran minimum sesebuah nod, nod tersebut akan menolaknya, atau menyingkirkannya jika ia sudah dimasukkan, walaupun nod lain menerimanya.
  3. Secara lalai, Bitcoin Core mengehadkan saiz mempool kepada 300 MB melalui parameter ‘maxmempool’ dalam fail bitcoin.conf. Apabila had ini dicapai, nod tersebut menaikkan ambang yuran minimumnya secara dinamik untuk memberi ruang kepada transaksi yang lebih menguntungkan, dengan menyingkirkan transaksi yang paling kurang bernilai terlebih dahulu. Jalankan ‘getmempoolinfo’ dan perhatikan bagaimana ‘mempoolminfee’ naik melebihi ‘minrelaytxfee’ yang statik apabila mempool semakin penuh.
  4. Pelombong memilih transaksi daripada mempool mereka sendiri untuk membina blok, dengan mengutamakan yuran tertinggi bagi setiap bait maya, yang dinilai bersama-sama dengan sebarang transaksi induk yang belum disahkan. Apabila blok yang sah tiba, setiap nod membuang transaksi yang telah disahkan, serta mana-mana transaksi yang bercanggah, daripada mempoolnya.
  5. Dasar bukanlah konsensus. Transaksi yang enggan di-relay oleh kebanyakan nod, kerana berada di bawah paras yuran minimum mereka atau menggunakan bentuk tidak standard, masih boleh sah dalam sesebuah blok, dan sesetengah pelombong menerima transaksi sedemikian secara terus. Oleh itu, mempool setiap nod hanyalah anggaran tentang kandungan blok seterusnya, dan nod yang berbeza mungkin tidak sependapat di bahagian pinggiran.
  6. Semasa dimatikan, Bitcoin Core menyimpan mempoolnya ke dalam fail mempool.dat, dan memuatkannya semula semasa dihidupkan, dengan membuang apa-apa yang sudah tidak sah, supaya nod yang dimulakan semula tidak bermula dengan mempool kosong. Untuk melihat mempool beroperasi, buka mempool.space: blok unjurannya menunjukkan transaksi yang berkemungkinan dimasukkan oleh pelombong seterusnya, dan setiap blok baharu mengosongkan lapisan teratas.

Fakta utama

  • Mempool ialah kolam memori tempatan pada setiap nod, bukan satu perkhidmatan universal.
  • Secara lalai, Bitcoin Core menetapkan had 300 MB untuk saiz mempool melalui ‘maxmempool’.
  • Secara lalai, Bitcoin Core akan membuang transaksi yang belum disahkan selepas dua minggu (336 jam, sejak versi 0.14).
  • Nod menggunakan kedua-dua peraturan konsensus dan peraturan dasar tempatan, termasuk kadar yuran minimum.
  • Apabila mempool penuh, nod menaikkan ambang yuran secara dinamik untuk menyingkirkan transaksi yang kurang menguntungkan.
  • Bitcoin Core menyimpan mempoolnya ke ‘mempool.dat’ semasa dimatikan supaya ia kekal selepas dimulakan semula.

Latihan sembilan, enam, tiga, satu

9KumpulSenaraikan 9 transaksi berbeza yang belum disahkan daripada paparan mempool pada peneroka blok. Catatkan kadar yuran semasa, saiz dalam bait maya, dan bilangan pengesahannya (semuanya sifar).
6KelompokkanKumpulkan 9 transaksi tersebut ke dalam 6 kategori berdasarkan sebab ia mungkin tersangkut: kadar yuran rendah, saiz besar, isyarat RBF, input yang belum disahkan, status orphan, atau sebab dasar (policy) yang lain.
3SaringKurangkan 6 kumpulan tersebut kepada 3 sebab utama mengapa sebuah nod akan menolak atau menyingkirkan transaksi daripada mempoolnya walaupun transaksi itu sah dari segi konsensus.
1KristalkanTulis 1 ayat yang menerangkan bagaimana perbezaan dasar tempatan antara nod mewujudkan pandangan yang berpecah-pecah dan tidak universal terhadap transaksi yang belum selesai di seluruh rangkaian.

Semakan fakta

Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.

Buka dalam akademi interaktif →

EN PT ES ZH JA KO RU DE FR