Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Entri ini mencakup pembaruan program CPMM yang akan datang. Entri ini diverifikasi terhadap cabang rilis lokal (
0dde43d, 11 September 2026) sebelum penerapan. Konfirmasi program yang diterapkan sebelum mengandalkan instruksi baru atau daftar akun yang berubah.creator_fee_rate dan masih mengakumulasi seluruh jumlah ke creator_fees_token_{0,1}. Ketika CollectCreatorFee atau CollectCreatorFeePermissionless berjalan, saldo yang terakumulasi dibagi, bagian protokol dilabeli ulang sebagai biaya protokol pada pool yang sama, dan hanya bagian kreator yang meninggalkan vault. Kutipan, kurva, k, dan setiap jalur yang menghadap LP tidak terpengaruh.
TL;DR untuk integrator
- Kedua instruksi pengumpulan biaya kreator mengubah daftar akun mereka. Ini adalah breaking change.
CollectCreatorFeemenambahkancreator_fee_sharepada posisi 5.CollectCreatorFeePermissionlessmenambahkanamm_configpada 5 dancreator_fee_sharepada 6. Kedua penyisipan berada sebelum vault, jadi semuanya sesudahnya bergeser. Bangun ulang transaksi ini; jangan patch. creator_fee_shareharus dilewatkan bahkan ketika tidak ada. Dideklarasikan dengan batasan seed tetapi dibaca sebagai akun yang tidak diperiksa, jadi alamat harus PDA kanonik di["creator_fee_share", creator, amm_config]sementara akun itu sendiri opsional. Ketika kosong, program kembali keAmmConfig.creator_fee_share_rate.AmmConfigmendapatkancreator_fee_share_rate, diambil dari padding. Akun masih 236 byte dan setiap konfigurasi yang ada terus deserialize — tetapiu64pertama daripadding: [u64; 15]lama sekarang adalah bidang aktif. Decoder yang memodelkan ekor sebagai array 15 elemen membaca tingkat bagian sebagaipadding[0].PoolStatetidak berubah. 637 byte, offset sama, bidang sama. Bagian protokol dicatat ke dalam penghitungprotocol_fees_token_{0,1}yang ada — tidak ada penghitung baru dan tidak ada instruksi pengumpulan baru untuk itu.protocol_fees_token*sekarang tumbuh di luar swap. Monitor apa pun yang merekonsiliasi akrual protokol terhadap volume perdagangan akan melihat lompatan pada setiap pengumpulan biaya kreator.- Estimator pembayaran kreator yang membaca
creator_fees_token*sekarang menyatakan berlebihan. Kalikan dengan(1 − share_rate / 1_000_000), diselesaikan untuk pasangan(creator, amm_config)itu. - Dua instruksi admin ditambahkan:
CreateCreatorFeeSharedanCloseCreatorFeeShare. Satu paramUpdateAmmConfigbaru:8→creator_fee_share_rate. - Tidak ada kode kesalahan baru. Jalur baru menggunakan kembali
InvalidOwner(6001),InvalidInput(6003) danMathOverflow(6011).6000–6015tidak berubah. - Penyegaran IDL diperlukan — dua instruksi baru, satu tipe akun baru, dua daftar akun yang berubah, satu bidang konfigurasi baru.
Cara pemisahan bekerja
Resolusi, dalam urutan prioritas:- PDA
CreatorFeeSharedi["creator_fee_share", creator, amm_config]— ketika akun ada dan dimiliki oleh CPMM,share_ratemiliknya menang. AmmConfig.creator_fee_share_rate— default tingkat biaya, digunakan sebaliknya.
u64 di atas FEE_RATE_DENOMINATOR_VALUE = 1_000_000 dan keduanya diperiksa terhadap batas itu. Kemudian, per sisi token:
- Pembulatan menguntungkan kreator. Bagian lantai, jadi debu tetap bersama kreator — arah yang sama dengan
Fees::protocol_feedanFees::fund_fee, yang juga mengukir bagian dari biaya yang sudah terakumulasi. 20% dari biaya 1 unit adalah 0, bukan 1. - Nilai dikonservasi.
creator_amount + shared_amount == creator_feeuntuk setiap tingkat dan setiap biaya hinggau64::MAX. share_rate = 0adalah perilaku lama yang tepat. Baik nilai konfigurasi default maupun PDA yang hilang memberikan kreator seluruh biaya, jadi tidak ada yang berubah untuk pool yang ada sampai admin menetapkan tingkat.
protocol_fees_token* dan creator_fees_token* keduanya sudah dikurangi dalam vault_amount_without_fee, memindahkan nilai di antara mereka tidak mengubah pandangan kurva tentang vault. Tidak ada LP yang melihat perubahan harga di seluruh pengumpulan biaya kreator, dan pemeriksaan k tidak tersentuh.
Tingkat dibaca pada pengumpulan, bukan pada akrual. Biaya yang terakumulasi saat tingkat adalah
0 diselesaikan pada tingkat apa pun yang berlaku ketika seseorang akhirnya memanggil Collect*. Tidak ada snapshot per-epoch atau per-swap.Perubahan daftar akun
CollectCreatorFee — satu penyisipan:
CollectCreatorFeePermissionless — dua penyisipan:
Tabel akun lengkap di
products/cpmm/instructions.
CreateCreatorFeeShare dan CloseCreatorFeeShare
CreateCreatorFeeShare(share_rate: u64) menginisialisasi PDA; CloseCreatorFeeShare menutupnya dan mengembalikan sewa ke penandatangan. Keduanya menerima admin program bersama atau pemilik pembagian biaya kreator khusus — pasangan kunci yang dikodekan keras baru mengikuti pola cfg devnet/mainnet yang sama dengan otoritas delegasi lainnya dari program. Alamat di reference/program-addresses.
Poin yang patut diperhatikan:
- Kreator pool bukan pihak dalam instruksi apa pun dan tidak menandatangani. Akun
creatortidak diperiksa — PDA dapat dibuat untuk kunci yang belum memiliki pool. - Satu akun mencakup pasangan
(creator, amm_config), jadi mengatur setiap pool yang dimiliki kreator itu pada tingkat biaya itu. Kreator dengan pool pada dua tingkat membutuhkan dua akun untuk dicakup di keduanya. - Tidak ada jalur pembaruan.
initgagal pada pembuatan kedua untuk pasangan yang sama; untuk mengubah tingkat, tutup dan buat ulang.
Param UpdateAmmConfig 8
protocol_fee_rate (param 1), yang membagi biaya perdagangan — poin yang patut hati-hati dalam alat admin, karena keduanya terlihat sama dan keduanya mendarat di protocol_fees_token*.
Naik bersama
Perbaikan pengurutanCollectExcessLamports. Instruksi sekarang membuat dua lintasan di atas remaining_accounts — setiap CPI program token terlebih dahulu, kemudian debit langsung PDA milik CPMM — alih-alih mengirim dalam urutan pemanggil. Interleaving keduanya dibatalkan dengan UnbalancedInstruction runtime (“jumlah saldo akun sebelum dan sesudah instruksi tidak cocok”) kapan pun PDA didebit sebelum CPI, karena perubahan lamport yang tertunda dari pemanggil hanya disiram ke akun yang benar-benar dibawa CPI. Antarmuka instruksi tidak berubah; pemanggil masih meneruskan sumber dalam urutan apa pun, dan sekarang itu benar-benar aman.
Metadata build yang dapat diverifikasi. Cargo.toml workspace mendeklarasikan [workspace.metadata.cli] solana = "3.1.10", jadi build yang dapat diverifikasi menyelesaikan CLI Solana yang sama dengan yang dibangun program. Tidak ada efek on-chain.
Apa yang tidak berubah
PoolState— 637 byte, bidang sama, offset sama. Bagian protokol menggunakan kembali bucket protokol yang ada daripada menambahkan penghitung sendiri.AmmConfig::LEN— masih 236 byte.- Matematika swap, kutipan, dan pemeriksaan
k. Biaya kreator dikenakan persis seperti sebelumnya. CollectProtocolFee/CollectFundFee— akun sama, penandatangan sama.CollectProtocolFeehanya memiliki lebih banyak untuk dikumpulkan.- Kode kesalahan.
6000–6015tidak berubah; tidak ada yang ditambahkan. - Setiap instruksi lainnya, dan ID program.
Halaman yang diperbarui
products/cpmm/fees— bagian “Bagian protokol dari biaya kreator” baru mencakup resolusi tingkat, aritmatika pemisahan, pembulatan, dan konsekuensi integrator;creator_fee_share_rateditambahkan ke daftar tingkat/unit dan tabel parameter default; tabel alur pengumpulan dikerjakan ulang.products/cpmm/instructions— peringatan breaking-change di atas; tabel akun lengkap untuk kedua jalur biaya kreator; bagianCreateCreatorFeeSharedanCloseCreatorFeeSharebaru; paramUpdateAmmConfig8; catatan pengurutanCollectExcessLamports; ringkasan dan baris matriks perubahan status.products/cpmm/accounts— bagian akunCreatorFeeSharebaru; tata letakAmmConfigdan peringatan padding-carve; catatan penghitung biayaPoolState; baris siklus hidup akun.products/cpmm/overview— callout biaya kreator dan bullet “Biaya yang dapat diprediksi”.products/cpmm/math— catatan bahwa pemisahan sengaja tidak ada dalam matematika swap.products/cpmm/code-demos— peringatan bahwa pembangun SDK pra-upgrade memancarkan daftar akun lama; cuplikan biaya terakumulasi dengan anotasi.reference/program-addresses— bagian “Otoritas pembagian biaya kreator CPMM” baru;creator_fee_shareditambahkan ke blok benih PDA.reference/fee-comparison—creator_fee_share_ratedipanggil sebagai tingkat CPMM keempat dengan basis berbeda.

