Мінт із вашої сторінки
Є два способи продавати колекцію KURV зі своєї сторінки. Обидва працюють на Base і на Solana, а всі комісії, ціни та правила продажу в мережі й далі діють: той самий контракт або програма приймає той самий платіж.
| Вам потрібно | Використовуйте |
|---|---|
| Вставити один рядок і отримати кнопку мінту | Кнопку мінту: покупець підписує у вікні KURV |
| Залишити покупця на своїй сторінці зі своїм конектором гаманця | Клієнт KURV: покупець підписує у своєму гаманці |
Мережу задають значенням 84532 (Base Sepolia) або solana:devnet (Solana Devnet). Адреси колекцій є в Публічних API.
Кнопка мінту
Розділ «Кнопка мінту»<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>Натискання відкриває вікно KURV. Покупець підписує там акаунтом KURV або гаманцем, а ваша сторінка ніколи не торкається ні гаманця, ні ключа. Задайте data-label, data-background і data-color, щоб використати свої слова й кольори. Якщо ваш сайт надсилає Content-Security-Policy, дозвольте https://testnet.kurv.fun у script-src.
Вікно спершу вітається з вашою сторінкою, і назва сайту з’являється в ньому лише тоді, коли сторінка відповідає зі свого origin. Потім вікно розриває зв’язок зі сторінкою, тож ніщо на сторінці не може торкнутися вікна, у якому йде підписання. Відповідь приходить від origin KURV, розпізнається за випадковим значенням, створеним тим натисканням, і йде лише на origin вашої сторінки, а тоді скрипт викликає kurv:mint на елементі:
status | Значення |
|---|---|
minted | Мінт завершено: chain, collection, tx, tokenIds, quantity. Може надійти після closed, якщо вхід тривав довго |
closed | Вікно давно не подає ознак, мінту немає. KURV ніколи не повідомляє причину |
blocked | Браузер відмовився відкрити вікно. Попросіть покупця дозволити його |
Ваша сторінка нічого не дізнається про покупця, який не робив мінт: ні про його гаманець, ні про те, чи він у списку допуску. Ці відповіді покупець читає лише на сторінках KURV.
Сайт, що надсилає Cross-Origin-Opener-Policy: same-origin, не може відповісти на привітання: мінт і відповідь усе одно працюють, але вікно не показує назви сайту. Використовуйте натомість same-origin-allow-popups. Вважайте tx твердженням, доки ваш власний сервер не прочитав його в блокчейні.
Клієнт KURV
Розділ «Клієнт KURV»Один ES-модуль без залежностей, його типи лежать поруч, у v1.d.ts. Він запитує в Публічних API актуальну ціну та точні виклики для цього покупця, разом із підтвердженням допуску за списком, і передає їх гаманцю покупця.
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 використовуйте гаманець стандарту Wallet Standard. KURV підписує лише за акаунт нової роботи, а гаманець підписує й платить як покупець. Мережеві комісії та оренда акаунта сплачуються в 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'),});Підійде будь-який конектор: evmWallet і solanaWallet обгортають ваш кількома рядками. Клієнт ніколи не бачить ключа.
kurv.prepareMint({ chain, address, wallet, quantity }) повертає план і нічого не підписує, і цей план і є ціною: quote.total_base_units зараз та quote.max_total_base_units, максимум, який можуть списати з цього покупця в монеті колекції і який забезпечує контракт або програма. Вікно продажу з другою монетою списує ще й quote.additional_total_base_units у цій монеті, а комісія мережі додається зверху. Колекція зі зростальною ціною підписується трохи вище за ціну, щоб чужий мінт, що пройшов раніше, не зірвав мінт покупця.
Той самий план через HTTP, без акаунта і без ключа:
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 | Значення | Що робити |
|---|---|---|
not_on_allowlist | Це вікно продажу лише для списку допуску | Повідомте покупця |
not_open | Колекція зараз не продається | Покажіть її наступне вікно із запису колекції |
use_window | Аукціон або пізніше вікно з другою монетою | Відкрийте error.window_url |
rate_limited | Забагато запитів із цієї мережі | Спробуйте ще раз трохи згодом |
Робоча сторінка
Розділ «Робоча сторінка»Збережіть це як файл на будь-якому сайті з https або запустіть зі свого комп’ютера й натисніть кнопку. Потрібен браузерний гаманець у 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>Неопублікований арт у всьому цьому залишається запечатаним: API відповідає викликами й сумами, але ніколи не файлами запечатаної колекції. Див. Ризики та застереження.
Ніщо тут не є фінансовою порадою. Прочитайте розділ «Ризики та застереження», перш ніж мінтити, купувати чи продавати назад у Vault. Повернутися на kurv.fun. Політика конфіденційності. Умови використання. .