
Memperkenalkan Kite: Framework TypeScript Modern untuk Solana
Daftar Isi
Hari ini, kami dengan senang hati memperkenalkan Kite, framework TypeScript modern untuk browser dan Node.js. Kite dikembangkan berdasarkan kemampuan Solana web3.js versi 2 sekaligus menyederhanakan berbagai tugas umum secara drastis.
Mengapa Kite?
Kite memanfaatkan kecepatan dan keanggunan Solana web3.js versi 2, sekaligus memungkinkan Anda melakukan tugas sehari-hari di Solana dalam satu fungsi.
Karena Kite menggunakan web3.js versi 2 untuk pekerjaan berat, seluruh fitur web3.js versi 2 tetap tersedia. Jika tidak lagi membutuhkan Kite, Anda dapat menghapusnya dengan mudah dan langsung menggunakan web3.js versi 2.
Kite adalah pembaruan @solana-developers/helpers untuk web3.js v2, library tingkat tinggi terpopuler untuk web3.js versi 1, yang dibuat oleh penulis aslinya.
Paket Kite mencakup versi terbaru dari sebagian besar helper asli, termasuk kontribusi dari Helius, Solana Foundation, Anza, Turbin3, Unboxed Software, dan StarAtlas.
Fungsi @solana-developers/helpers yang belum tersedia di Kite akan segera ditambahkan.
Kite dapat digunakan di browser dan node.js serta memiliki dependensi minimal.
Apa yang dapat saya lakukan dengan Kite?
Kite menyediakan fungsi untuk melakukan hal-hal berikut:
Dompet
- Buat dompet baru — dengan alamat vanity, saldo SOL yang siap digunakan, dan/atau disimpan ke file.
- Muat dompet dari file — menggunakan format standar id.json dari Anza.
- Muat dompet dari variabel lingkungan — menggunakan format 'array angka' yang umum digunakan oleh sebagian besar alat Solana.
SOL
- Airdrop SOL jika saldo rendah — cara praktis untuk memperoleh SOL saat diperlukan, tanpa membebani faucet devnet/testnet secara tidak perlu.
- Dapatkan saldo SOL suatu akun - dapatkan saldo SOL.
- Transfer SOL antar-dompet.
Token
- Buat token baru — dengan metadata token.
- Dapatkan alamat akun token — untuk menemukan alamat dompet bagi token tertentu.
- Dapatkan informasi mint token — untuk menemukan detail tentang sebuah mint.
- Mint token ke akun — agar Mint Authority dapat menggunakan mint token dan membuat token baru di akun seseorang.
- Transfer token antar-akun — tentukan akun token yang diperlukan bagi pengirim dan penerima, buat akun token penerima jika diperlukan, lalu pindahkan token antar-akun!
Transaksi
- Tandatangani, kirim, dan konfirmasi transaksi — dalam satu langkah. Ambil instruksi untuk transaksi, buat transaksi, dapatkan blockhash terbaru, tandatangani pesan di dalam transaksi, lalu kirimkan.
- Kirim dan konfirmasi transaksi — jika Anda sudah membuat transaksi
- Periksa apakah transaksi sudah dikonfirmasi.
- Dapatkan log transaksi — dapatkan log untuk sebuah transaksi.
Explorer
- Dapatkan tautan Solana Explorer — satu langkah dengan semua detail untuk menampilkan transaksi, blok, atau alamat menggunakan RPC Anda.
Membandingkan Kite dengan Solana web3.js 2:
Berikut contoh singkat untuk membuat token
Menggunakan Kite
Ingat, Kite hanyalah framework di atas web3.js v2. Jadi, Kite menggunakan tipe dan fitur dasar web3.js v2 yang sama untuk menjalankan tugasnya.
import { connect } from "@helius-dev/kite";
const connection = connect();
const mintAddress = await connection.makeTokenMint(
mintAuthority,
6,
"My Token",
"MTKN",
"https://example.com/metadata.json",
{
description: "A sample token",
website: "https://example.com",
},
);
console.log(connection.getExplorerLink(mintAddress));Menggunakan Solana web3.js v2
...tanpa Kite!
import {
airdropFactory,
appendTransactionMessageInstructions,
createSolanaRpc,
createSolanaRpcSubscriptions,
createTransactionMessage,
generateKeyPairSigner,
getSignatureFromTransaction,
lamports,
pipe,
sendAndConfirmTransactionFactory,
setTransactionMessageFeePayerSigner,
setTransactionMessageLifetimeUsingBlockhash,
signTransactionMessageWithSigners,
some,
} from "@solana/web3.js";
import { getCreateAccountInstruction } from "@solana-program/system";
import {
getInitializeMintInstruction,
getMintSize,
TOKEN_2022_PROGRAM_ADDRESS,
extension,
getInitializeMetadataPointerInstruction,
getInitializeTokenMetadataInstruction,
tokenMetadataField,
getUpdateTokenMetadataFieldInstruction,
} from "@solana-program/token-2022";
const rpc = createSolanaRpc("http://127.0.0.1:8899");
const rpcSubscriptions = createSolanaRpcSubscriptions("ws://127.0.0.1:8900");
const feePayer = await generateKeyPairSigner();
console.log(feePayer.address);
const mint = await generateKeyPairSigner();
await airdropFactory({ rpc, rpcSubscriptions })({
recipientAddress: feePayer.address,
lamports: lamports(1_000_000_000n),
commitment: "confirmed",
});
const balance = await rpc.getBalance(feePayer.address).send();
console.log("balance:", balance.value);
const metadataPointerExtension = extension("MetadataPointer", {
authority: some(feePayer.address),
metadataAddress: some(mint.address),
});
const tokenMetadataExtension = extension("TokenMetadata", {
updateAuthority: some(feePayer.address),
mint: mint.address,
name: "OPOS",
symbol: "OPOS",
uri: "https://raw.githubusercontent.com/solana-developers/opos-asset/main/assets/DeveloperPortal/metadata.json",
additionalMetadata: new Map<string, string>([["description", "Only Possible On Solana"]]),
});
const spaceWithoutMetadata = BigInt(getMintSize([metadataPointerExtension]));
const spaceWithMetadata = BigInt(getMintSize([metadataPointerExtension, tokenMetadataExtension]));
const rent = await rpc.getMinimumBalanceForRentExemption(spaceWithMetadata).send();
const createAccountInstruction = getCreateAccountInstruction({
payer: feePayer,
newAccount: mint,
lamports: rent,
space: spaceWithoutMetadata,
programAddress: TOKEN_2022_PROGRAM_ADDRESS,
});
const initializeMetadataPointerInstruction = getInitializeMetadataPointerInstruction({
mint: mint.address,
authority: feePayer.address,
metadataAddress: mint.address,
});
const initializeMintInstruction = getInitializeMintInstruction({
mint: mint.address,
decimals: 2,
mintAuthority: feePayer.address,
});
const initializeTokenMetadataInstruction = getInitializeTokenMetadataInstruction({
metadata: mint.address,
updateAuthority: feePayer.address,
mint: mint.address,
mintAuthority: feePayer,
name: tokenMetadataExtension.name,
symbol: tokenMetadataExtension.symbol,
uri: tokenMetadataExtension.uri,
});
const updateTokenMetadataInstruction = getUpdateTokenMetadataFieldInstruction({
metadata: mint.address,
updateAuthority: feePayer,
field: tokenMetadataField("Key", ["description"]),
value: "Only Possible On Solana",
});
const instructions = [
createAccountInstruction,
initializeMetadataPointerInstruction,
initializeMintInstruction,
initializeTokenMetadataInstruction,
updateTokenMetadataInstruction,
];
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
const transactionMessage = pipe(
createTransactionMessage({ version: 0 }),
(message) => setTransactionMessageFeePayerSigner(feePayer, message),
(message) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, message),
(message) => appendTransactionMessageInstructions(instructions, message),
);
const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);
const transactionSignature = getSignatureFromTransaction(signedTransaction);
await sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions })(signedTransaction, {
commitment: "confirmed",
skipPreflight: true,
});
console.log("Transaction Signature:", `https://explorer.solana.com/tx/${transactionSignature}?cluster=custom`);
Seperti yang Anda lihat, tanpa Kite, proses ini memerlukan pembuatan pesan transaksi dengan lima instruksi dan opsi terkait, penandatanganan pesan transaksi, serta pengirimannya ke RPC. Di Kite, Anda cukup menjalankan makeTokenMint dan mendapatkan kembali alamat mint baru.
Membandingkan Kite dengan Poseidon
Kite adalah library yang sepenuhnya berjalan di sisi klien untuk browser dan node.js. Cobalah Poseidon jika Anda tertarik membangun aplikasi on-chain (misalnya smart contract) menggunakan TypeScript.
Berkontribusi
Meski Kite masih baru, kami berkomitmen mengembangkannya menjadi framework tangguh yang membuat pengembangan Solana lebih mudah diakses oleh semua orang.
Dengan menyederhanakan tugas umum dan mengurangi kode boilerplate, kita dapat membantu lebih banyak developer membangun berbagai hal luar biasa di Solana.
Berikut cara Anda dapat membantu:
Coba Kite Hari Ini
Siap mempermudah pengembangan Solana Anda?
Mulai gunakan Kite:
npm i @helius-dev/kiteLihat repositori GitHub kami untuk dokumentasi lengkap dan contoh.
Mari percepat pengembangan Solana bersama-sama! 🪁
Artikel Terkait
Berlangganan Helius
Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan


