在你的页面上铸造
从你自己的页面出售 KURV 合集有两种方式。两者都支持 Base 和 Solana,链上的每一项费用、价格和销售规则依然适用:同一个合约或程序收取同样的款项。
| 你想要 | 使用 |
|---|---|
| 粘贴一行代码,得到一个 Mint 按钮 | Mint 按钮:买家在 KURV 窗口中签名 |
| 用你自己的钱包连接器,把买家留在你的页面上 | KURV 客户端:买家在自己的钱包中签名 |
网络用 84532(Base Sepolia)或 solana:devnet(Solana Devnet)指定。合集地址见公开 API。
Mint 按钮
“Mint 按钮”部分<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,请在 script-src 中允许 https://testnet.kurv.fun。
窗口会先向你的页面打招呼,只有你的页面从自己的源回应时,窗口里才会显示网站名称。随后窗口会切断与你页面的联系,所以页面上的任何东西都碰不到正在签名的窗口。回复来自 KURV 的源,由那次点击生成的随机值来核对,并且只发给你页面的源,之后脚本会在该元素上触发 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 只返回调用和金额,绝不返回封存合集的文件。参见风险与免责声明。
此处内容均不构成财务建议。在铸造、购买或卖回之前,请先阅读风险与免责声明。返回 kurv.fun。隐私政策。使用条款。 。