Sayfanızdan mintleyin
Bir KURV koleksiyonunu kendi sayfanızdan satmanın iki yolu vardır. İkisi de Base ve Solana üzerinde çalışır ve zincir üzerindeki her ücret, fiyat ve satış kuralı geçerliliğini korur: aynı sözleşme ya da program aynı ödemeyi alır.
| İstediğiniz | Kullanın |
|---|---|
| Tek satır yapıştırıp bir Mint düğmesi almak | Mint düğmesi: alıcı bir KURV penceresinde imzalar |
| Alıcıyı kendi cüzdan bağlayıcınızla sayfanızda tutmak | KURV istemcisi: alıcı kendi cüzdanında imzalar |
Ağı 84532 (Base Sepolia) veya solana:devnet (Solana Devnet) ile belirtin. Koleksiyon adresleri Herkese açık API’ler sayfasında.
Mint düğmesi
Bölüm başlığı “Mint düğmesi”<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>Bir basış bir KURV penceresi açar. Alıcı orada KURV hesabıyla ya da bir cüzdanla imzalar; sayfanız hiçbir cüzdana veya anahtara dokunmaz. Kendi sözcükleriniz ve renkleriniz için data-label, data-background ve data-color değerlerini ayarlayın. Siteniz bir Content-Security-Policy gönderiyorsa script-src içinde https://testnet.kurv.fun adresine izin verin.
Pencere önce sayfanıza merhaba der ve sitenin adı pencerede yalnızca sayfanız kendi kaynağından yanıt verirse görünür. Ardından pencere sayfanızla bağını koparır; böylece sayfadaki hiçbir şey imzalanmakta olan bir pencereye dokunamaz. Yanıt KURV’un kaynağından gelir, o basışın ürettiği rastgele değerle tanınır ve yalnızca sayfanızın kaynağına gider; ardından betik öğe üzerinde kurv:mint olayını tetikler:
status | Anlamı |
|---|---|
minted | Mint tamamlandı: chain, collection, tx, tokenIds, quantity. Bir oturum açma uzun sürdüğünde closed sonrasında gelebilir |
closed | Pencereden bir süredir iz yok ve mint de yok. KURV nedenini asla söylemez |
blocked | Tarayıcı bir pencere açmayı reddetti. Alıcıdan buna izin vermesini isteyin |
Mint yapmayan bir alıcı hakkında sayfanız hiçbir şey öğrenmez: ne cüzdanını, ne de izin listesinde olup olmadığını. Alıcının bu yanıtları okuyabildiği tek yer KURV sayfalarıdır.
Cross-Origin-Opener-Policy: same-origin gönderen bir site selama yanıt veremez: mint ve yanıt yine çalışır, ancak pencerede site adı görünmez. Bunun yerine same-origin-allow-popups kullanın. tx değerini, kendi sunucunuz zincirde okuyana kadar bir iddia olarak değerlendirin.
KURV istemcisi
Bölüm başlığı “KURV istemcisi”Bağımlılığı olmayan tek bir ES modülü; türleri yanında, v1.d.ts içinde. Herkese açık API’lerden güncel bir teklif ile bu alıcı için tam çağrıları, izin listesi kanıtı dahil, ister ve bunları alıcının cüzdanına verir.
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?`),});Solana’da bir Wallet Standard cüzdanı kullanın. KURV yalnızca yeni parçanın kendi hesabı için imzalar; cüzdan ise alıcı olarak imzalar ve öder. Ağ ücretleri ve hesap kirası SOL ile ödenir.
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'),});Her bağlayıcı çalışır: evmWallet ve solanaWallet kendi bağlayıcınızı birkaç satırda sarmalar. İstemci hiçbir anahtarı asla görmez.
kurv.prepareMint({ chain, address, wallet, quantity }) planı yanıtlar ve hiçbir şey imzalamaz; bu plan teklifin kendisidir: şu anki quote.total_base_units ve bu alıcıdan koleksiyonun kripto parasıyla tahsil edilebilecek en yüksek tutar olan quote.max_total_base_units, ki bunu sözleşme ya da program uygular. İkinci bir kripto parası olan satış penceresi o kripto parasıyla ayrıca quote.additional_total_base_units tahsil eder; ağ ücreti bunların üstüne eklenir. Artan fiyatla satılan bir koleksiyon tekliften biraz yukarıda imzalar; böylece önce gelen bir mint alıcının mintini başarısız kılmaz.
Aynı plan HTTP üzerinden, hesapsız ve anahtarsız:
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 | Anlamı | Ne yapılmalı |
|---|---|---|
not_on_allowlist | Bu satış penceresi kendi izin listesine ayrılmıştır | Alıcıya söyleyin |
not_open | Koleksiyon şu anda satışta değil | Koleksiyon kaydından sonraki penceresini gösterin |
use_window | Bir açık artırma ya da ikinci bir coin ile sonraki bir pencere | error.window_url adresini açın |
rate_limited | Bu ağdan çok fazla istek geldi | Kısa süre sonra yeniden deneyin |
Çalışan bir sayfa
Bölüm başlığı “Çalışan bir sayfa”Bunu herhangi bir https sitesinde dosya olarak kaydedin ya da kendi makinenizden sunun ve düğmeye basın. Base Sepolia üzerinde bir tarayıcı cüzdanı gerekir.
<!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>Açığa çıkarılmamış görsel bunların hepsinde mühürlü kalır: API çağrıları ve tutarları yanıtlar, mühürlü bir koleksiyonun dosyalarını asla. Bkz. Riskler ve sorumluluk reddi.
Buradaki hiçbir şey finansal tavsiye değildir. Mintlemeden, satın almadan veya Vault’a geri satmadan önce Riskler ve sorumluluk reddi sayfasını okuyun. kurv.fun’a geri dönün. Gizlilik politikası. Kullanım koşulları. .