Minta dalla tua pagina
Ci sono due modi per vendere una collezione KURV dalla tua pagina. Entrambi funzionano su Base e su Solana, e ogni commissione, prezzo e regola di vendita on-chain resta in vigore: lo stesso contratto o programma incassa lo stesso pagamento.
| Vuoi | Usa |
|---|---|
| Incollare una riga e avere un pulsante Minta | Il pulsante Minta: chi acquista firma in una finestra di KURV |
| Tenere chi acquista sulla tua pagina con il tuo connettore di wallet | Il client KURV: chi acquista firma nel proprio wallet |
Indica la rete con 84532 (Base Sepolia) o solana:devnet (Solana Devnet). Gli indirizzi delle collezioni sono nelle API pubbliche.
Il pulsante Minta
Sezione intitolata “Il pulsante Minta”<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>Una pressione apre una finestra di KURV. Chi acquista firma lì con l’account KURV o con un wallet, e la tua pagina non tocca mai un wallet né una chiave. Imposta data-label, data-background e data-color per usare le tue parole e i tuoi colori. Se il tuo sito invia una Content-Security-Policy, consenti https://testnet.kurv.fun in script-src.
La finestra prima saluta la tua pagina, e il nome del sito vi compare solo se la tua pagina risponde dalla propria origine. Poi taglia il legame con la tua pagina, così nulla su una pagina può toccare una finestra che sta firmando. La risposta arriva dall’origine di KURV, si riconosce dal valore casuale generato da quella pressione e va solo all’origine della tua pagina, e poi lo script lancia kurv:mint sull’elemento:
status | Significa |
|---|---|
minted | Il mint è andato a buon fine: chain, collection, tx, tokenIds, quantity. Può arrivare dopo closed quando un accesso è rimasto fermo a lungo |
closed | Da un po’ non c’è traccia della finestra e non c’è stato alcun mint. KURV non dice mai perché |
blocked | Il browser ha rifiutato di aprire una finestra. Chiedi a chi acquista di consentirla |
La tua pagina non sa nulla di chi non minta: né il suo wallet, né se è in una lista di ammessi. Le pagine di KURV sono l’unico posto in cui chi acquista legge queste risposte.
Un sito che invia Cross-Origin-Opener-Policy: same-origin non può rispondere al saluto: il mint e la risposta funzionano comunque, e la finestra non mostra il nome del sito. Usa invece same-origin-allow-popups. Considera tx una dichiarazione finché il tuo server non l’ha letta sulla blockchain.
Il client KURV
Sezione intitolata “Il client KURV”Un modulo ES senza dipendenze, con i suoi tipi accanto, in v1.d.ts. Chiede alle API pubbliche un preventivo aggiornato e le chiamate esatte per chi sta acquistando, con il riscontro della lista di ammessi incluso, e le consegna al wallet di chi acquista.
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?`),});Su Solana usa un wallet compatibile con Wallet Standard. KURV firma solo per l’account del nuovo pezzo, e il wallet firma e paga come acquirente. Le commissioni di rete e l’affitto dell’account sono in 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'),});Va bene qualsiasi connettore: evmWallet e solanaWallet avvolgono il tuo in poche righe. Il client non vede mai una chiave.
kurv.prepareMint({ chain, address, wallet, quantity }) risponde con il piano e non firma nulla, e quel piano è il preventivo: quote.total_base_units adesso e quote.max_total_base_units, il massimo che può essere addebitato a chi acquista nel token della collezione, che il contratto o il programma fa rispettare. Una finestra di vendita con un secondo token addebita anche quote.additional_total_base_units in quel token, e la commissione di rete si aggiunge sopra. Una collezione venduta a prezzo crescente firma un po’ sopra il preventivo, così un mint arrivato prima non fa fallire quello dell’acquirente.
Lo stesso piano via HTTP, senza account e senza chiave:
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 | Significa | Cosa fare |
|---|---|---|
not_on_allowlist | Questa finestra di vendita è per la sua lista di ammessi | Dillo a chi acquista |
not_open | La collezione ora non è in vendita | Mostra la sua prossima finestra dal record della collezione |
use_window | Un’asta o una finestra successiva con una seconda moneta | Apri error.window_url |
rate_limited | Troppe richieste da questa rete | Riprova tra poco |
Una pagina funzionante
Sezione intitolata “Una pagina funzionante”Salva questo come file su qualsiasi sito https, oppure servilo dal tuo computer, e premi il pulsante. Serve un wallet del browser su 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>L’opera non ancora rivelata resta sigillata in tutto questo: l’API risponde con chiamate e importi, mai con i file di una collezione sigillata. Vedi Rischi e avvertenze.
Niente di quanto scritto qui è una consulenza finanziaria. Leggi Rischi e avvertenze prima di mintare, comprare o rivendere al Vault. Torna a kurv.fun. Informativa sulla privacy. Termini di utilizzo. .