Lewati ke konten
Buka aplikasi

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 inginGunakan
Menempel satu baris dan mendapat tombol MintTombol Mint: pembeli menandatangani di jendela KURV
Menjaga pembeli tetap di halamanmu dengan konektor dompetmu sendiriKlien KURV: pembeli menandatangani di dompetnya

Sebut jaringan dengan 84532 (Base Sepolia) atau solana:devnet (Solana Devnet). Alamat koleksi ada di API publik.

<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:

statusArtinya
mintedMint selesai: chain, collection, tx, tokenIds, quantity. Ini bisa datang setelah closed bila proses masuk terlalu lama
closedBeberapa saat tidak ada tanda dari jendela, dan tidak ada mint. KURV tidak pernah menyebut alasannya
blockedBrowser 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.

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:

Terminal window
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.codeArtinyaYang dilakukan
not_on_allowlistJendela penjualan ini untuk allowlist-nyaBeri tahu pembeli
not_openKoleksi tidak sedang dijualTampilkan jendela berikutnya dari catatan koleksi
use_windowLelang atau jendela berikutnya dengan koin keduaBuka error.window_url
rate_limitedTerlalu banyak permintaan dari jaringan iniCoba lagi sebentar lagi

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. .