Перейти до вмісту
Відкрити застосунок

Мінт із вашої сторінки

Є два способи продавати колекцію 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 твердженням, доки ваш власний сервер не прочитав його в блокчейні.

Один 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, без акаунта і без ключа:

Terminal window
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. Політика конфіденційності. Умови використання. .