Visão Geral
Este guia rápido irá conduzi-lo pelo ciclo de vida completo de um token BondKit em menos de 5 minutos. Você aprenderá como:
- Implantar um novo token de obrigação
- Negociar durante a fase de ligação
- Monitorar o progresso em direção ao alvo
- Migrar para Uniswap v4
Pré-requisitos: Certifique-se de ter completado a instalação e possuir uma carteira financiada na Base.
Diagrama de Fluxo Completo
Passo 1: Implante Seu Token
Implantação Básica
import { BondkitTokenFactory } from "@b3dotfun/sdk/bondkit";
import { base } from "viem/chains";
import { parseEther } from "viem";
// Inicializar a fábrica
const factory = new BondkitTokenFactory(
base.id,
process.env.WALLET_PRIVATE_KEY
);
// Implantar seu token
const tokenAddress = await factory.deployBondkitToken({
// Metadados do token
name: "My Awesome Token",
symbol: "MAT",
// Configuração de fornecimento (1 milhão de tokens)
finalTokenSupply: parseEther("1000000"),
// Configurações da curva de ligação
aggressivenessFactor: 35, // 0-100, quanto maior, mais íngreme a curva
targetEth: parseEther("10"), // Alvo de 10 ETH para migração
// Configuração de taxa
feeRecipient: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1", // Seu endereço
lpSplitRatioFeeRecipientBps: 1000n, // 10% para o destinatário da taxa
// Configurações de migração
migrationAdminAddress: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
uniswapV2RouterAddress: "0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24" // Roteador V4
});
console.log("✅ Token implantado em:", tokenAddress);
Entendendo os Parâmetros
Fornecimento total de tokens (com 18 decimais). Exemplo: parseEther("1000000")
para 1M de tokens.
Controla a inclinação da curva de ligação (0-100):
- 0-30: Precificação linear, justa para todos os compradores
- 30-60: Curva moderada, abordagem equilibrada
- 60-100: Agressiva, recompensa os compradores iniciais
Quantidade de ETH necessária para habilitar a migração. Use parseEther("10")
para 10 ETH.
Endereço que recebe as taxas de negociação (5% de todas as negociações).
lpSplitRatioFeeRecipientBps
Pontos base (1/100 de 1%) para divisão da taxa do LP. 1000 = 10%.
Passo 2: Negociação Durante a Fase de Ligação
Inicializar Instância do Token
import { BondkitToken } from "@b3dotfun/sdk/bondkit";
import { parseEther, formatEther } from "viem";
// Conectar ao seu token implantado
const token = new BondkitToken(
tokenAddress,
process.env.WALLET_PRIVATE_KEY
);
Comprando Tokens
// Obter uma cotação de preço primeiro
const ethAmount = parseEther("1"); // 1 ETH
const expectedTokens = await token.getAmountOfTokensToBuy(ethAmount);
console.log(`1 ETH comprará: ${formatEther(expectedTokens)} tokens`);
// Executar a compra
const buyTx = await token.buy(
0n, // minTokensOut (0 = aceitar qualquer quantidade, usar para proteção contra deslizamento)
"1" // Quantidade de ETH como string
);
console.log("Compra completa! Tx:", buyTx);
Vendendo Tokens
// Verificar seu saldo de tokens
const balance = await token.getBalance(userAddress);
console.log(`Seu saldo: ${formatEther(balance)} tokens`);
// Obter cotação de venda
const tokensToSell = parseEther("1000");
const expectedEth = await token.getAmountOfEthToReceive(tokensToSell);
console.log(`Vender 1000 tokens retornará: ${formatEther(expectedEth)} ETH`);
// Executar a venda
const sellTx = await token.sell(
tokensToSell, // Quantidade de tokens a vender
0n // Min ETH out (para proteção contra deslizamento)
);
console.log("Venda completa! Tx:", sellTx);
Monitorando o Progresso
// Verificar o progresso da ligação
const progress = await token.getBondingProgress();
console.log(`
Progresso: ${(progress.progress * 100).toFixed(2)}%
Arrecadado: ${formatEther(progress.raised)} ETH
Alvo: ${formatEther(progress.threshold)} ETH
Restante: ${formatEther(progress.threshold - progress.raised)} ETH
`);
// Obter preço atual do token
const currentPrice = await token.getCurrentPrice();
console.log(`Preço atual: ${formatEther(currentPrice)} ETH por token`);
// Verificar se a migração está disponível
const canMigrate = await token.canMigrate();
console.log(`Pronto para migrar: ${canMigrate}`);
Monitoramento de Eventos
// Ouvir por eventos de compra
token.onBuy((event) => {
console.log("Nova compra:", {
comprador: event.buyer,
ethIn: formatEther(event.ethIn),
tokensOut: formatEther(event.tokensOut)
});
});
// Ouvir por eventos de venda
token.onSell((event) => {
console.log("Nova venda:", {
vendedor: event.seller,
tokensIn: formatEther(event.tokensIn),
ethOut: formatEther(event.ethOut)
});
});
Passo 3: Migração para Uniswap v4
Verificar Prontidão para Migração
// Verificar se o alvo foi alcançado
const progress = await token.getBondingProgress();
if (progress.progress >= 1.0) {
console.log("✅ Alvo alcançado! Pronto para migrar.");
// Obter detalhes da migração
const migrationData = await token.getMigrationData();
console.log("Migração criará pool com:", {
ethLiquidity: formatEther(migrationData.ethForLp),
tokenLiquidity: formatEther(migrationData.tokensForLp),
initialPrice: formatEther(migrationData.sqrtPriceX96)
});
} else {
console.log(`⏳ Necessário mais ${formatEther(progress.threshold - progress.raised)} ETH`);
}
Executar Migração
// Apenas o administrador da migração pode chamar isso
if (await token.isMigrationAdmin(userAddress)) {
console.log("🚀 Iniciando migração para Uniswap v4...");
const migrationTx = await token.migrateToDex();
console.log("Transação de migração:", migrationTx);
// Aguardar confirmação
const receipt = await token.waitForTransaction(migrationTx);
if (receipt.status === "success") {
console.log("✅ Migração completa!");
console.log("Endereço do pool Uniswap v4:", await token.getPoolAddress());
}
} else {
console.log("❌ Apenas o administrador da migração pode executar a migração");
}
Importante: Após a migração:
- A propriedade do contrato é automaticamente renunciada
- A negociação da curva de ligação é permanentemente desabilitada
- Todas as negociações se movem para Uniswap v4
- Nenhuma ação administrativa adicional é possível
Exemplo Completo
Aqui está um exemplo completo de trabalho que demonstra todo o ciclo de vida:
import {
BondkitTokenFactory,
BondkitToken
} from "@b3dotfun/sdk/bondkit";
import { base } from "viem/chains";
import { parseEther, formatEther } from "viem";
async function launchToken() {
// 1. Implantar token
const factory = new BondkitTokenFactory(
base.id,
process.env.WALLET_PRIVATE_KEY
);
const tokenAddress = await factory.deployBondkitToken({
name: "Demo Token",
symbol: "DEMO",
finalTokenSupply: parseEther("1000000"),
aggressivenessFactor: 50,
targetEth: parseEther("5"),
feeRecipient: process.env.WALLET_ADDRESS,
lpSplitRatioFeeRecipientBps: 1000n,
migrationAdminAddress: process.env.WALLET_ADDRESS,
uniswapV2RouterAddress: "0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24"
});
console.log("Token implantado:", tokenAddress);
// 2. Negociar durante a ligação
const token = new BondkitToken(
tokenAddress,
process.env.WALLET_PRIVATE_KEY
);
// Comprar alguns tokens
await token.buy(0n, "0.5");
console.log("Comprou tokens com 0.5 ETH");
// Verificar progresso
const progress = await token.getBondingProgress();
console.log(`Progresso: ${(progress.progress * 100).toFixed(2)}%`);
// 3. Continuar negociando até o alvo ser alcançado...
// (Na produção, outros usuários estariam negociando)
// 4. Migrar quando estiver pronto
if (progress.progress >= 1.0) {
await token.migrateToDex();
console.log("Migração completa! Token agora está no Uniswap v4");
}
}
launchToken().catch(console.error);
Próximos Passos