Mint dari halamanmu
Ada dua cara menjual koleksi KURV dari halamanmu sendiri. Keduanya bekerja di Base dan Solana, dan setiap biaya on-chain, harga, dan aturan penjualan tetap berlaku: kontrak atau program yang sama menerima pembayaran yang sama.
| Kamu ingin | Gunakan |
|---|---|
| Menempel satu baris dan mendapat tombol Mint | Tombol Mint: pembeli menandatangani di jendela KURV |
| Menjaga pembeli tetap di halamanmu dengan konektor dompetmu sendiri | Klien KURV: pembeli menandatangani di dompetnya |
Sebut jaringan dengan 84532 (Base Sepolia) atau solana:devnet (Solana Devnet). Alamat koleksi ada di API publik.
Tombol Mint
Bagian berjudul “Tombol Mint”<div id="mint" data-kurv-mint data-chain="84532" data-address="0x8354d02d8022f455db9acb235c6f6655c8adabd3"></div><script src="https://testnet.kurv.fun/sdk/mint-button/v1.js" async></script><script> document.getElementById('mint').addEventListener('kurv:mint', (event) => { if (event.detail.status === 'minted') console.log(event.detail.tx, event.detail.tokenIds); });</script>Satu tekan membuka jendela KURV. Pembeli menandatangani di sana dengan akun KURV atau dompet, dan halamanmu tidak pernah menyentuh dompet atau kunci. Setel data-label, data-background, dan data-color untuk kata-kata dan warnamu sendiri. Jika situsmu mengirim Content-Security-Policy, izinkan https://testnet.kurv.fun di script-src.
Jendela lebih dulu menyapa halamanmu, dan nama situs muncul di dalamnya hanya jika halamanmu menjawab dari origin-nya sendiri. Setelah itu jendela memutus hubungannya dengan halamanmu, sehingga tidak ada apa pun di halaman yang bisa menyentuh jendela yang sedang menandatangani. Jawabannya datang dari origin KURV, dikenali lewat nilai acak yang dibuat oleh tekanan tombol tersebut, dan hanya dikirim ke origin halamanmu, lalu skrip memicu kurv:mint pada elemen:
status | Artinya |
|---|---|
minted | Mint selesai: chain, collection, tx, tokenIds, quantity. Ini bisa datang setelah closed bila proses masuk terlalu lama |
closed | Beberapa saat tidak ada tanda dari jendela, dan tidak ada mint. KURV tidak pernah menyebut alasannya |
blocked | Browser menolak membuka jendela. Minta pembeli mengizinkannya |
Halamanmu tidak tahu apa pun tentang pembeli yang tidak mint: bukan dompetnya, bukan apakah ia ada di allowlist. Halaman KURV adalah satu-satunya tempat pembeli membaca jawaban itu.
Situs yang mengirim Cross-Origin-Opener-Policy: same-origin tidak bisa menjawab sapaan itu: mint dan jawabannya tetap berjalan, dan jendela tidak menampilkan nama situs. Gunakan same-origin-allow-popups sebagai gantinya. Anggap tx sebagai klaim sampai servermu sendiri membacanya di chain.
Klien KURV
Bagian berjudul “Klien KURV”Satu modul ES tanpa dependensi, dengan tipenya di sebelahnya dalam v1.d.ts. Modul ini meminta API publik untuk penawaran terbaru dan panggilan yang tepat untuk pembeli ini, lengkap dengan bukti allowlist, lalu menyerahkannya ke dompet pembeli.
import { createKurvClient, eip1193Wallet } from 'https://testnet.kurv.fun/sdk/client/v1.js';
const kurv = createKurvClient();const [account] = await window.ethereum.request({ method: 'eth_requestAccounts' });
const result = await kurv.mint({ chain: '84532', address: '0x8354d02d8022f455db9acb235c6f6655c8adabd3', wallet: eip1193Wallet(window.ethereum, account), quantity: 1, // Show the buyer the amounts, and answer false to sign nothing. review: (plan) => confirm(`Pay at most ${plan.quote.max_total_base_units} base units?`),});Di Solana, gunakan dompet Wallet Standard. KURV hanya menandatangani untuk akun karya baru itu sendiri, dan dompet menandatangani serta membayar sebagai pembeli. Biaya jaringan dan sewa akun dalam SOL.
import { createKurvClient, walletStandardWallet } from 'https://testnet.kurv.fun/sdk/client/v1.js';
const kurv = createKurvClient();const result = await kurv.mint({ chain: 'solana:devnet', address: collectionAddress, wallet: walletStandardWallet(wallet, account, 'solana:devnet'),});Konektor apa pun bisa dipakai: evmWallet dan solanaWallet membungkus milikmu dalam beberapa baris. Klien tidak pernah melihat kunci.
kurv.prepareMint({ chain, address, wallet, quantity }) menjawab dengan rencana dan tidak menandatangani apa pun, dan rencana itu adalah penawarannya: quote.total_base_units sekarang, dan quote.max_total_base_units, jumlah terbanyak yang bisa ditagihkan ke pembeli ini dalam koin koleksi, yang diberlakukan oleh kontrak atau program. Periode penjualan dengan koin kedua juga menagih quote.additional_total_base_units dalam koin itu, dan biaya jaringan ditambahkan di atasnya. Koleksi yang dijual dengan harga naik menandatangani sedikit di atas penawaran, sehingga mint lain yang masuk lebih dulu tidak menggagalkan mint pembeli.
Rencana yang sama lewat HTTP, tanpa akun dan tanpa kunci:
curl -X POST https://testnet.kurv.fun/api/v1/collections/84532/0x8354d02d8022f455db9acb235c6f6655c8adabd3/mint-call \ -H 'content-type: application/json' \ -d '{"wallet":"0xYourBuyer","quantity":1}'error.code | Artinya | Yang dilakukan |
|---|---|---|
not_on_allowlist | Jendela penjualan ini untuk allowlist-nya | Beri tahu pembeli |
not_open | Koleksi tidak sedang dijual | Tampilkan jendela berikutnya dari catatan koleksi |
use_window | Lelang atau jendela berikutnya dengan koin kedua | Buka error.window_url |
rate_limited | Terlalu banyak permintaan dari jaringan ini | Coba lagi sebentar lagi |
Halaman yang berfungsi
Bagian berjudul “Halaman yang berfungsi”Simpan ini sebagai file di situs https mana pun, atau sajikan dari mesinmu sendiri, lalu tekan tombolnya. Kamu butuh dompet browser di Base Sepolia.
<!doctype html><meta charset="utf-8"><title>Mint</title><button id="mint">Mint</button><p id="said" role="status"></p><script type="module"> import { createKurvClient, eip1193Wallet } from 'https://testnet.kurv.fun/sdk/client/v1.js';
const kurv = createKurvClient(); const said = document.getElementById('said');
document.getElementById('mint').addEventListener('click', async () => { try { const [account] = await window.ethereum.request({ method: 'eth_requestAccounts' }); const result = await kurv.mint({ chain: '84532', address: '0x8354d02d8022f455db9acb235c6f6655c8adabd3', wallet: eip1193Wallet(window.ethereum, account), review: (plan) => confirm(`Pay at most ${plan.quote.max_total_base_units} base units?`), }); said.textContent = result.status === 'minted' ? `Minted: ${result.tx}` : 'Nothing was signed.'; } catch (error) { said.textContent = error.message; } });</script>Karya yang belum diungkap tetap tersegel di semua ini: API menjawab panggilan dan jumlah, tidak pernah file koleksi yang tersegel. Lihat Risiko dan penafian.
Tidak ada isi di sini yang merupakan saran keuangan. Baca Risiko dan penafian sebelum kamu mint, membeli, atau menjual kembali. Kembali ke kurv.fun. Kebijakan Privasi. Ketentuan Penggunaan. .