Salta ai contenuti
Apri l’app

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.

VuoiUsa
Incollare una riga e avere un pulsante MintaIl pulsante Minta: chi acquista firma in una finestra di KURV
Tenere chi acquista sulla tua pagina con il tuo connettore di walletIl 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.

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

statusSignifica
mintedIl mint è andato a buon fine: chain, collection, tx, tokenIds, quantity. Può arrivare dopo closed quando un accesso è rimasto fermo a lungo
closedDa un po’ non c’è traccia della finestra e non c’è stato alcun mint. KURV non dice mai perché
blockedIl 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.

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:

Finestra del terminale
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.codeSignificaCosa fare
not_on_allowlistQuesta finestra di vendita è per la sua lista di ammessiDillo a chi acquista
not_openLa collezione ora non è in venditaMostra la sua prossima finestra dal record della collezione
use_windowUn’asta o una finestra successiva con una seconda monetaApri error.window_url
rate_limitedTroppe richieste da questa reteRiprova tra poco

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