Minten vanaf je eigen pagina
Er zijn twee manieren om een KURV-collectie vanaf je eigen pagina te verkopen. Beide werken op Base en op Solana, en elke kost, prijs en verkoopregel on-chain blijft gelden: hetzelfde contract of programma neemt dezelfde betaling aan.
| Je wilt | Gebruik |
|---|---|
| Eén regel plakken en een Mint-knop krijgen | De Mint-knop: de koper tekent in een KURV-venster |
| De koper op je pagina houden met je eigen walletconnector | De KURV-client: de koper tekent in zijn eigen wallet |
Noem het netwerk met 84532 (Base Sepolia) of solana:devnet (Solana Devnet). De adressen van de collecties staan in de Openbare API’s.
De Mint-knop
Sectie “De Mint-knop”<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>Eén druk opent een KURV-venster. De koper tekent daar met een KURV-account of een wallet, en je pagina komt nooit aan een wallet of sleutel. Stel data-label, data-background en data-color in voor je eigen woorden en kleuren. Stuurt je site een Content-Security-Policy mee, sta dan https://testnet.kurv.fun toe in script-src.
Het venster groet eerst je pagina, en de naam van de site verschijnt erin alleen als je pagina vanuit de eigen origin antwoordt. Daarna knipt het zijn band met je pagina door, zodat niets op een pagina een venster kan aanraken dat aan het ondertekenen is. Het antwoord komt van de origin van KURV, wordt herkend aan de willekeurige waarde die die druk heeft getrokken en gaat alleen naar de origin van je pagina, en dan geeft het script kurv:mint af op het element:
status | Betekent |
|---|---|
minted | De mint is klaar: chain, collection, tx, tokenIds, quantity. Dit kan op closed volgen als een inlogpoging lang duurde |
closed | Een tijdje geen teken van het venster en geen mint. KURV zegt nooit waarom |
blocked | De browser weigerde een venster te openen. Vraag de koper dat toe te staan |
Je pagina leert niets over een koper die niet mint: niet zijn wallet, niet of hij op een toelatingslijst staat. KURV-pagina’s zijn de enige plek waar een koper die antwoorden leest.
Een site die Cross-Origin-Opener-Policy: same-origin stuurt, kan de groet niet beantwoorden: de mint en het antwoord werken nog steeds, en het venster toont geen sitenaam. Gebruik in plaats daarvan same-origin-allow-popups. Behandel tx als een bewering totdat je eigen server hem op de chain heeft gelezen.
De KURV-client
Sectie “De KURV-client”Eén ES-module zonder afhankelijkheden, met de types ernaast in v1.d.ts. Hij vraagt de Openbare API’s om een verse offerte en de exacte aanroepen voor deze koper, inclusief het bewijs van de toelatingslijst, en geeft ze door aan de wallet van de koper.
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?`),});Gebruik op Solana een Wallet Standard-wallet. KURV tekent alleen voor het account van het nieuwe stuk zelf, en de wallet tekent en betaalt als koper. Netwerkkosten en accounthuur zijn 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'),});Elke connector werkt: evmWallet en solanaWallet verpakken de jouwe in een paar regels. De client ziet nooit een sleutel.
kurv.prepareMint({ chain, address, wallet, quantity }) antwoordt met het plan en tekent niets, en dat plan is de offerte: quote.total_base_units nu, en quote.max_total_base_units, het meeste dat deze koper kan worden gerekend in de munt van de collectie, dat het contract of programma afdwingt. Een verkoopvenster met een tweede munt rekent daarnaast quote.additional_total_base_units in die munt, en de netwerkkosten komen daar bovenop. Een collectie die tegen een stijgende prijs wordt verkocht tekent iets boven de offerte, zodat een mint die eerder binnenkomt die van de koper niet laat mislukken.
Hetzelfde plan via HTTP, zonder account en zonder sleutel:
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 | Betekent | Wat te doen |
|---|---|---|
not_on_allowlist | Dit verkoopvenster is voor zijn toelatingslijst | Zeg het de koper |
not_open | De collectie wordt nu niet verkocht | Toon het volgende venster uit het collectierecord |
use_window | Een veiling of een later venster met een tweede munt | Open error.window_url |
rate_limited | Te veel verzoeken vanaf dit netwerk | Probeer het zo meteen opnieuw |
Een werkende pagina
Sectie “Een werkende pagina”Bewaar dit als bestand op een willekeurige https-site, of serveer het vanaf je eigen machine, en druk op de knop. Je hebt een browserwallet op Base Sepolia nodig.
<!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>Niet-onthulde kunst blijft in dit alles verzegeld: de API antwoordt met aanroepen en bedragen, nooit met de bestanden van een verzegelde collectie. Zie Risico’s en disclaimer.
Niets hier is financieel advies. Lees Risico’s en disclaimer voordat je mint, koopt of terugverkoopt aan de Vault. Terug naar kurv.fun. Privacybeleid. Gebruiksvoorwaarden. .