Strata
Strata adalah protokol untuk launching token di Solana. Kamu bisa pakai Strata untuk membuat semua jenis fungible token, mulai dari social tokens sampai dao dan gamefi token. Kamu bisa juga compose strata dengan apapun yang menggabungkan mekanisme harga tetap (_fixed price) untuk mendapatkan harga yang dinamis, sebagai contohnya adalah Metaplex CandyMachine.
Dokumen lebih detail ada disini. Bisa juga gunakan GUI di Strata Launchpad
Cara Membuat Token Yang Dikendalikan Penuh
Token Yang Dikendalikan Penuh (fully-managed Strata token) adalah a token dimana liquidity dikendalikan oleh protokol. Hasilnya adalah Anda segera mendapatkan tradeable token, tanpa perlu pool atau penyedia likuiditas. Token yang dikelola sepenuhnya adalah token spl normal dengan metadata token metaplex dan kurva ikatan terkait. Kurva ikatan mengelola likuiditas, harga, dan pasokan token itu.
import {
SplTokenBonding,
ExponentialCurveConfig,
} from "@strata-foundation/spl-token-bonding";
import * as anchor from "@project-serum/anchor";
import { NATIVE_MINT } from "@solana/spl-token";
(async () => {
const provider = anchor.getProvider();
const tokenBondingSdk = await SplTokenBonding.init(provider);
// Price = 0.01 * sqrt(Supply)
const curve = await tokenBondingSdk.initializeCurve({
config: new ExponentialCurveConfig({
c: 0.01,
b: 0,
pow: 1,
frac: 2,
}),
});
const { tokenBonding, baseMint, targetMint } =
await tokenBondingSdk.createTokenBonding({
curve,
baseMint: NATIVE_MINT,
targetMintDecimals: 2,
buyBaseRoyaltyPercentage: 5,
buyTargetRoyaltyPercentage: 5,
});
console.log(
`You can use ${baseMint.toBase58()} to buy ${targetMint.toBase58()} using the bonding curve at address ${tokenBonding.toBase58()}`
);
})();
// Price = 0.01 * sqrt(Supply)
const curve = await tokenBondingSdk.initializeCurve({
config: new ExponentialCurveConfig({
c: 0.01,
b: 0,
pow: 1,
frac: 2,
}),
});
const { tokenBonding } = await tokenBondingSdk.createTokenBonding({
curve,
baseMint: NATIVE_MINT,
targetMintDecimals: 2,
buyBaseRoyaltyPercentage: 5,
buyTargetRoyaltyPercentage: 5,
});
Cara beli dan jual token
import { SplTokenBonding } from "@strata-foundation/spl-token-bonding";
import * as anchor from "@project-serum/anchor";
(async () => {
const provider = anchor.getProvider();
const tokenBondingSdk = await SplTokenBonding.init(provider);
await tokenBondingSdk.buy({
tokenBonding: new PublicKey("..."),
baseAmount: 0.01, // Amount of the baseMint from create token to use for this purchase.
slippage: 0.05,
});
await tokenBondingSdk.buy({
tokenBonding: new PublicKey("..."),
desiredTargetAmount: 0.01, // Purchase instead using the amount of targetMint you want to receive
slippage: 0.05,
});
})();
await tokenBondingSdk.buy({
tokenBonding: new PublicKey("..."),
baseAmount: 0.01, // Amount of the baseMint from create token to use for this purchase.
slippage: 0.05,
});
await tokenBondingSdk.buy({
tokenBonding: new PublicKey("..."),
desiredTargetAmount: 0.01, // Purchase instead using the amount of targetMint you want to receive
slippage: 0.05,
});
import { SplTokenBonding } from "@strata-foundation/spl-token-bonding";
import * as anchor from "@project-serum/anchor";
(async () => {
const provider = anchor.getProvider();
const tokenBondingSdk = await SplTokenBonding.init(provider);
await tokenBondingSdk.sell({
tokenBonding: new PublicKey("..."),
targetAmount: 0.01, // Amount of the targetMint to sell off
slippage: 0.05,
});
})();
await tokenBondingSdk.sell({
tokenBonding: new PublicKey("..."),
targetAmount: 0.01, // Amount of the targetMint to sell off
slippage: 0.05,
});
Cara bootstrap liquidity
Strata juga dapat menjual token di mana Anda ingin mengelola persediaan secara manual. Ini dapat berguna untuk bootstrap likuiditas sebelum mendaftarkan token Anda pada sebuah dex. Anda dapat membaca lebih lanjut tentang ini disini atau launch punya anda sendiri di Strata Launchpad
import { MarketplaceSdk } from "@strata-foundation/marketplace-sdk";
import * as anchor from "@project-serum/anchor";
(async () => {
const provider = anchor.getProvider();
const marketplaceSdk = await MarketplaceSdk.init(provider);
const { tokenBonding, targetMint } =
await marketplaceSdk.createLiquidityBootstrapper({
baseMint: NATIVE_MINT,
startPrice: 0.05,
minPrice: 0.01,
interval: 5 * 60 * 60,
maxSupply: 100,
bondingArgs: {
targetMintDecimals: 0,
},
});
})();
const { tokenBonding, targetMint } =
await marketplaceSdk.createLiquidityBootstrapper({
baseMint: NATIVE_MINT,
startPrice: 0.05,
minPrice: 0.01,
interval: 5 * 60 * 60,
maxSupply: 100,
bondingArgs: {
targetMintDecimals: 0,
},
});
Sumber Lainnya
- Typescript Client Documentation - Contoh Live code untuk membuat dan mengelola token Strata
- Strata Launchpad - Launching token dengan menggunakan interface (GUI)