Mint z Twojej strony
Są dwa sposoby, by sprzedawać kolekcję KURV ze swojej strony. Oba działają w sieciach Base i Solana, a wszystkie opłaty, ceny i zasady sprzedaży w sieci nadal obowiązują: ten sam kontrakt lub program przyjmuje tę samą płatność.
| Chcesz | Użyj |
|---|---|
| Wkleić jedną linijkę i dostać przycisk Zmintuj | Przycisku Zmintuj: kupujący podpisuje w oknie KURV |
| Zatrzymać kupującego na swojej stronie z własnym konektorem portfela | Klienta KURV: kupujący podpisuje w swoim portfelu |
Sieć wskazujesz przez 84532 (Base Sepolia) lub solana:devnet (Solana Devnet). Adresy kolekcji znajdziesz w Publicznych API.
Przycisk Zmintuj
Dział zatytułowany „Przycisk Zmintuj”<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>Kliknięcie otwiera okno KURV. Kupujący podpisuje tam kontem KURV lub portfelem, a Twoja strona nigdy nie dotyka portfela ani klucza. Ustaw data-label, data-background i data-color, by użyć własnych słów i kolorów. Jeśli Twoja witryna wysyła Content-Security-Policy, zezwól na https://testnet.kurv.fun w script-src.
Okno najpierw wita się z Twoją stroną, a nazwa witryny pojawia się w nim tylko wtedy, gdy Twoja strona odpowie z własnego origin. Potem okno zrywa więź z Twoją stroną, więc nic na stronie nie może dotknąć okna, w którym trwa podpisywanie. Odpowiedź przychodzi z origin KURV, jest rozpoznawana po losowej wartości wylosowanej przy tym kliknięciu i trafia tylko do origin Twojej strony, a następnie skrypt wywołuje na elemencie kurv:mint:
status | Oznacza |
|---|---|
minted | Mint zakończony: chain, collection, tx, tokenIds, quantity. Może przyjść po closed, gdy logowanie trwało bardzo długo |
closed | Od jakiegoś czasu brak śladu okna i brak minta. KURV nigdy nie podaje powodu |
blocked | Przeglądarka odmówiła otwarcia okna. Poproś kupującego, by na nie zezwolił |
Twoja strona nie dowie się niczego o kupującym, który nie mintuje: ani o jego portfelu, ani o tym, czy jest na liście dozwolonych. Tylko strony KURV pokazują kupującemu te odpowiedzi.
Witryna wysyłająca Cross-Origin-Opener-Policy: same-origin nie może odpowiedzieć na powitanie: mint i odpowiedź nadal działają, a okno nie pokazuje nazwy witryny. Użyj zamiast tego same-origin-allow-popups. Traktuj tx jak twierdzenie, dopóki Twój własny serwer nie odczyta go z łańcucha.
Klient KURV
Dział zatytułowany „Klient KURV”Jeden moduł ES bez zależności, jego typy leżą obok w v1.d.ts. Prosi Publiczne API o świeżą wycenę i dokładne wywołania dla tego kupującego, razem z dowodem z listy dozwolonych, i przekazuje je portfelowi kupującego.
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?`),});W sieci Solana użyj portfela zgodnego z Wallet Standard. KURV podpisuje tylko za konto nowej pracy, a portfel podpisuje i płaci jako kupujący. Opłaty sieciowe i czynsz za konto są w 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'),});Pasuje każdy konektor: evmWallet i solanaWallet owijają Twój w kilku linijkach. Klient nigdy nie widzi klucza.
kurv.prepareMint({ chain, address, wallet, quantity }) odpowiada planem i niczego nie podpisuje, a ten plan to wycena: quote.total_base_units teraz oraz quote.max_total_base_units, czyli najwięcej, co można naliczyć temu kupującemu w monecie kolekcji, co egzekwuje kontrakt lub program. Okno sprzedaży z drugą monetą nalicza dodatkowo quote.additional_total_base_units w tej monecie, a opłata sieciowa dochodzi na wierzch. Kolekcja sprzedawana po rosnącej cenie podpisuje trochę powyżej wyceny, żeby mint, który wszedł wcześniej, nie zepsuł minta kupującego.
Ten sam plan przez HTTP, bez konta i bez klucza:
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 | Oznacza | Co zrobić |
|---|---|---|
not_on_allowlist | To okno sprzedaży jest dla swojej listy dozwolonych | Powiedz o tym kupującemu |
not_open | Kolekcja nie jest teraz w sprzedaży | Pokaż jej następne okno z rekordu kolekcji |
use_window | Aukcja albo późniejsze okno z drugą monetą | Otwórz error.window_url |
rate_limited | Za dużo żądań z tej sieci | Spróbuj ponownie za chwilę |
Działająca strona
Dział zatytułowany „Działająca strona”Zapisz to jako plik na dowolnej witrynie https albo serwuj z własnego komputera i naciśnij przycisk. Potrzebny jest portfel w przeglądarce w sieci 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>Nieodsłonięta grafika pozostaje w tym wszystkim zapieczętowana: API odpowiada wywołaniami i kwotami, nigdy plikami zapieczętowanej kolekcji. Zobacz Ryzyka i zastrzeżenia.
Nic tutaj nie jest poradą finansową. Zanim zmintujesz, kupisz lub odsprzedasz NFT do Vault, przeczytaj stronę Ryzyko i zastrzeżenia. Wróć do kurv.fun. Polityka prywatności. Regulamin. .