Strata
Strata est un protocole permettant de lancer des jetons construit sur Solana. Vous pouvez utiliser Strata pour lancer tout type de jeton fongible, allant des jetons sociaux aux jetons dao et gamefi. Vous pouvez également utiliser Strata avec n'importe quel mécanisme de prix fixe pour obtenir un mécanisme de prix dynamique, comme par exemple la CandyMachine de Metaplex.
Des documents plus détaillés sont disponibles ici. Vous pouvez également utiliser l'interface graphique (GUI) de Strata Launchpad
Comment créer un jeton entièrement géré
Un jeton Strata entièrement géré est un jeton dont la liquidité est gérée par le protocole. Le résultat est que vous obtenez immédiatement un jeton tradable, sans avoir besoin de pools ou de fournisseurs de liquidités. Un jeton entièrement géré est un jeton spl classique avec des métadonnées de jeton Metaplex et une courbe de liaison (bonding curve) associée. La courbe de liaison gère la liquidité, le prix et l'offre de ce jeton.
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,
});
Comment acheter et vendre un jeton
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,
});
Comment initier la liquidité
Strata peut également vendre des jetons lorsque vous souhaitez gérer manuellement son offre. Cela peut être utile pour l'initiation de la liquidité avant de lister votre jeton sur un dex. Vous pouvez en savoir plus à ce sujet ici ou lancez vôtre jeton sur 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,
},
});
Autres Ressources
- Documentation du Client Typescript - Exemples de code pour créer et gérer les jetons de Strata
- Launchpad de Strata - Lancer un jeton à l'aide de l'interface graphique (GUI)